[boost] Re: Boost.Regex compilation errors with BCB5

2003-08-27 Thread Chris Trengove
"John Maddock" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> I can reproduce this with just:
>
> #include 
> #include 
>
> No boost code necessary :-(
>
> Even worse this reproduces the error as well:
>
> #include 
> #pragma hdrstop
>
> enum enum_t
> {
>one = 1,
>two = 2
> };
>
> int test()
> {
>int a = one | two;  // error
>int b = one + two;  // error
>int c = (int)one & (int)two; // OK
>return a & b;   // OK
> }
>
> which doesn't look good at all...
>
> Oh and the problem is present in Builder 6 as well.

No, it doesn't look good at all, but when I try the above two tests, the
compiler behaves for me (both Builder 5 and 6). I can even have

enum enum_t {
one = 1,
two = 2,
three = one | two
};

and I don't get an error. Are you using any particular compiler setting?. (I
am just creating a new Console Project in the IDE and then pasting in the
code.) Maybe there is more to this?

Chris



___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread Chris Cooney
Zing!

/*
* Chris Cooney
* Ventana Group
* [EMAIL PROTECTED]
* (530)846-6640 x201
**/

CONFIDENTIALITY NOTICE: This email and any attachments are for the exclusive
and confidential use of the intended recipient. If you are not the intended
recipient, please do not read, save, distribute or take action in reliance
upon this message. If you have received this in error, please notify the
sender immediately by return email and immediately delete this message and
any attachment(s) from your email.

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of David Abrahams
Sent: Tuesday, August 26, 2003 4:38 PM
To: Boost mailing list
Subject: [boost] Re: 1.30.0->1.30.2: no more thread support for Linux?


Ross Smith <[EMAIL PROTECTED]> writes:

> David Abrahams wrote:
>> "Neal D. Becker" <[EMAIL PROTECTED]> writes:
>>>
>>> You mean I can't just run bjam with no options and get the libs
>>> built with thread support?  I need to add a command-line option?
>> The libraries that require thread support will be built with thread
>> support.  The others will not, unless multi has been placed
>> in their default-build settings; single is the global
>> default.
>
> Which leads to three questions:
>
> (1) How do we do this?

Do what?  Get all multithreaded libraries automatically with zero user
intervention on the command-line?  You convince the Boost developers
who told me single-threading should be the default when I started
Boost.Build that they were wrong, and I change the default.

> (2) Why isn't it documented? Are users supposed to know about this bit
> of voodoo by clairvoyance, or what?

Yes.

> (3) How many other undocumented gotchas like this are lurking in there?

63 and a half.

--
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost



___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: [uBlas] Any Performance Resulst Data with uBlas?

2003-08-27 Thread Firingme
Then Matthew, refer to your graph result data, the champion  and the
runner-up all are C libs but not C++ ..
Does it means if I want to get high performance with Matrix operation, I
"must" use C but not C++



___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev

--- Peter Dimov <[EMAIL PROTECTED]> wrote:
> E. Gladyshev wrote:
> > --- Peter Dimov <[EMAIL PROTECTED]> wrote:
> >
> >> unless there are very solid reasons for the allocator parameter. ;-)
> >
> > I agree, but the problme is that I don't know whether I have a solid
> reason or not.
> > I have to ship my class to someone else. She might have a solid reason, I
> don't know.
> > If I supply an allocator parameter, then I am covered and I can sleep
> well. :)
> 
> Well... if you ask me, it is better to not offer the functionality until
> someone explicitly asks for it and gives a reasonable scenario as an
> example. Features are easy to add, hard to remove, and there is always the
> possibility that you "pre-included" the wrong feature.

Peter, using your example I put together an allocator class that can be used in 
shared_ptr and STL
at the same time.  It is not too pretty but it works.  If we could only customize the 
counter
allocations, that would be it.

namespace boostx
{
template< typename A >
class allocator : public A
{
public:
typedef A::value_type type;
allocator() {}

type* create()
{
type* p = allocate(1, 0);
try
{
p = new(p) type;
}
catch(...)
{
deallocate( p, 1 );
throw;
}
return p;
}

void operator()( type* p )
{
try
{
p->~T();
}
catch(...)
{
deallocate(p, 1);
throw;
}
deallocate(p, 1);
}
};
};

template < class T, class A = boostx::allocator< std::allocator > >
struct X
{
boost::shared_ptr _data;
std::vector _list;

X( const A& al = A() ) : _list(al)
{ 
A tmp(al);
_data = boost::shared_ptr( tmp.create(), tmp );
}
};

OR if you don't mind dropping the 'const' from the constructor

template < typename T, class A = boostx::allocator< std::allocator > >
struct X
{
boost::shared_ptr _data;
std::vector _list;

X( A& al = A() ) : _list(al), _data( al.create(), al )
{ 
}
};


Eugene




__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev

--- "E. Gladyshev" <[EMAIL PROTECTED]> wrote:
> 
> --- Peter Dimov <[EMAIL PROTECTED]> wrote:
> > E. Gladyshev wrote:
> > > --- Peter Dimov <[EMAIL PROTECTED]> wrote:
> > >
> > >> unless there are very solid reasons for the allocator parameter. ;-)
> > >
> > > I agree, but the problme is that I don't know whether I have a solid
> > reason or not.
> > > I have to ship my class to someone else. She might have a solid reason, I
> > don't know.
> > > If I supply an allocator parameter, then I am covered and I can sleep
> > well. :)
> > 
> > Well... if you ask me, it is better to not offer the functionality until
> > someone explicitly asks for it and gives a reasonable scenario as an
> > example. Features are easy to add, hard to remove, and there is always the
> > possibility that you "pre-included" the wrong feature.
> 
> Peter, using your example I put together an allocator class that can be used in 
> shared_ptr and
> STL
> at the same time.  It is not too pretty but it works.  If we could only customize 
> the counter
> allocations, that would be it.
> 
> namespace boostx
> {
>   template< typename A >
>   class allocator : public A
>   {
>   public:
>   typedef A::value_type type;
>   allocator() {}
> 
>   type* create()
>   {
>   type* p = allocate(1, 0);
>   try
>   {
>   p = new(p) type;
>   }
>   catch(...)
>   {
>   deallocate( p, 1 );
>   throw;
>   }
>   return p;
>   }
> 
>   void operator()( type* p )
>   {
>   try
>   {
>   p->~T();
>   }
>   catch(...)
>   {
>   deallocate(p, 1);
>   throw;
>   }
>   deallocate(p, 1);
>   }
>   };
> };
> 
> template < class T, class A = boostx::allocator< std::allocator > >
> struct X
> {
>   boost::shared_ptr _data;
>   std::vector _list;
> 
>   X( const A& al = A() ) : _list(al)
>   { 
>   A tmp(al);
>   _data = boost::shared_ptr( tmp.create(), tmp );
>   }
> };
> 
> OR if you don't mind dropping the 'const' from the constructor
> 
> template < typename T, class A = boostx::allocator< std::allocator > >
> struct X
> {
>   boost::shared_ptr _data;
>   std::vector _list;
> 
>   X( A& al = A() ) : _list(al), _data( al.create(), al )
>   { 
>   }
> };
> 
> 
> Eugene

I forgot to mention, if the 'const' is dropped from the constructor, 'A' must be 
stateless.

Eugene


__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: what happened to allocators in boost?

2003-08-27 Thread David Abrahams
"E. Gladyshev" <[EMAIL PROTECTED]> writes:

> I am afraid that some of the boost libraries (as they are now) won't
> work for a big group of real time and embedded developers, where
> customization is the key.

Is it really (other than culturally, I mean)?  Are you sure that
there's no good general-purpose allocator which they can use?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: [uBlas] Any Performance Resulst Data with uBlas?

2003-08-27 Thread Hurd, Matthew

> -Original Message-
> From: Firingme [mailto:[EMAIL PROTECTED] 
> Subject: [boost] Re: [uBlas] Any Performance Resulst Data with uBlas?
> 
> 
> Then Matthew, refer to your graph result data, the champion  
> and the runner-up all are C libs but not C++ 
> .. Does it means if I want to get high 
> performance with Matrix operation, I "must" use C but not C++

I don't know, I just did a graph.  I'm have no expertise here.

I have some personal thoughts about uBLAS and C++ numerics, but take it with
a grain of salt.

uBLAS performance
-

It is pretty good.  Blocking was taken out the out of cache dead horse
problem.  But it is still significantly slower than vendor BLAS and ATLAS.
Tv-met and the like are faster for small matrices, like the 4x4 transform
you might use in CGI.  

Joerg has shown me some uBLAS results a while ago that were preliminary,
unconfirmed and very fast for the Intel platform.  Faster than ATLAS.  So
watch that space.

You need a smart compiler with the appropriate settings to get good
performance.  Vectorising with SSE2 makes an enormous difference, for
example, with Linux or Win32 on a P4.  There is an issue with making the
best performance available to everyone without the you-beaut compiler.
Building and releasing libs/dlls for platforms would be required, which is
not normal Boost practice.


uBLAS as an interface
-

Works well.  Nice interface.  Can use ATLAS, vendor BLAS and other libs from
this base.
Would be good if there was an ATLAS-like automagically tuned interface for
uBLAS to choose at compile and/or run time the appropriate underlying
implementation for "prod" etal.  That way uBLAS would transparently be using
the best implementation, perhaps its own, at various points.

This would mean that you could use uBLAS without any uncertainty that your
performance will be superseded, encouraging numeric development beyond plain
BLAS.

The uBLAS guys have a LAPACK binding in progress as well.  LAPACK, as you
probably know, needs  BLAS.  Other bindings would be good to encourage uBLAS
as the lingua franca of numeric C++.

On the flip side, a lot of uBLAS work will be ignored unless it can be
incorporated into other works, like LAPACK.  I think this means that uBLAS
should provide a BLAS interface so that people are encourage to work within
the framework of uBLAS knowing that this is a widely useful thing.  Again
this could grow to include other interfaces, e.g. uLAPACK, to encourage and
draw resources.


Developing right now


What would I do right now?  I would use uBLAS and delegate to ATLAS or a
vendor BLAS where that really mattered.  That's what I do.

I'd suggest you to talk to the ublas-dev list and get information from
horses' mouths.  They have been nice guys to chat to.

Regards,

HTH.
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev

--- "E. Gladyshev" <[EMAIL PROTECTED]> wrote:
> 
> --- Peter Dimov <[EMAIL PROTECTED]> wrote:
> > E. Gladyshev wrote:
> > > --- Peter Dimov <[EMAIL PROTECTED]> wrote:
> > >
> > >> unless there are very solid reasons for the allocator parameter. ;-)
> > >
> > > I agree, but the problme is that I don't know whether I have a solid
> > reason or not.
> > > I have to ship my class to someone else. She might have a solid reason, I
> > don't know.
> > > If I supply an allocator parameter, then I am covered and I can sleep
> > well. :)
> > 
> > Well... if you ask me, it is better to not offer the functionality until
> > someone explicitly asks for it and gives a reasonable scenario as an
> > example. Features are easy to add, hard to remove, and there is always the
> > possibility that you "pre-included" the wrong feature.
> 
> Peter, using your example I put together an allocator class that can be used in 
> shared_ptr and
> STL
> at the same time.  It is not too pretty but it works.  If we could only customize 
> the counter
> allocations, that would be it.
> 
> namespace boostx
> {
>   template< typename A >
>   class allocator : public A
>   {
>   public:
>   typedef A::value_type type;
>   allocator() {}
> 
>   type* create()
>   {
>   type* p = allocate(1, 0);
>   try
>   {
>   p = new(p) type;
>   }
>   catch(...)
>   {
>   deallocate( p, 1 );
>   throw;
>   }
>   return p;
>   }
> 
>   void operator()( type* p )
>   {
>   try
>   {
>   p->~T();
>   }
>   catch(...)
>   {
>   deallocate(p, 1);
>   throw;
>   }
>   deallocate(p, 1);
>   }
>   };
> };
> 
> template < class T, class A = boostx::allocator< std::allocator > >
> struct X
> {
>   boost::shared_ptr _data;
>   std::vector _list;
> 
>   X( const A& al = A() ) : _list(al)
>   { 
>   A tmp(al);
>   _data = boost::shared_ptr( tmp.create(), tmp );
>   }
> };
> 
> OR if you don't mind dropping the 'const' from the constructor
> 
> template < typename T, class A = boostx::allocator< std::allocator > >
> struct X
> {
>   boost::shared_ptr _data;
>   std::vector _list;
> 
>   X( A& al = A() ) : _list(al), _data( al.create(), al )
>   { 
>   }
> };

Sorry, disregard my prev e-mail. I should have said that 'A' must always be stateless.
But then, what is the point passing the A& thing around...
I guess my solution is a limited one. It is hard to get around it w/o
a built-in allocator support.

Eugene


__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev

--- David Abrahams <[EMAIL PROTECTED]> wrote:
> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
> 
> > I am afraid that some of the boost libraries (as they are now) won't
> > work for a big group of real time and embedded developers, where
> > customization is the key.
> 
> Is it really (other than culturally, I mean)?  

The culture is changing. :)

> Are you sure that
> there's no good general-purpose allocator which they can use?

Yes, I am sure. I shipped one of my libraries to a guy who
works on various DSP chips.  The native memory allocator
on one of the DSP was very slow (some specific issues with
how the DSP addresses the memory, I don't remember the details).

This guy had to add his own new/delete operator to some of
my internal classes to get about 10 times performance improvement.

No, I really don't think that there is a hope for general purpose allocators.

Eugene


__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Re: [uBlas] Any Performance Resulst Data with uBlas?

2003-08-27 Thread Firingme
"Hurd, Matthew" <[EMAIL PROTECTED]>
??:[EMAIL PROTECTED]
>
> > -Original Message-
> > From: Firingme [mailto:[EMAIL PROTECTED]
> > Subject: [boost] Re: [uBlas] Any Performance Resulst Data with uBlas?
> >
> >
> > Then Matthew, refer to your graph result data, the champion
> > and the runner-up all are C libs but not C++
> > .. Does it means if I want to get high
> > performance with Matrix operation, I "must" use C but not C++
>
> I don't know, I just did a graph.  I'm have no expertise here.
>
> I have some personal thoughts about uBLAS and C++ numerics, but take it
with
> a grain of salt.
>
> uBLAS performance
> -
>
> It is pretty good.  Blocking was taken out the out of cache dead horse
> problem.  But it is still significantly slower than vendor BLAS and ATLAS.
> Tv-met and the like are faster for small matrices, like the 4x4 transform
> you might use in CGI.
>
> Joerg has shown me some uBLAS results a while ago that were preliminary,
> unconfirmed and very fast for the Intel platform.  Faster than ATLAS.  So
> watch that space.
>
> You need a smart compiler with the appropriate settings to get good
> performance.  Vectorising with SSE2 makes an enormous difference, for
> example, with Linux or Win32 on a P4.  There is an issue with making the
> best performance available to everyone without the you-beaut compiler.
> Building and releasing libs/dlls for platforms would be required, which is
> not normal Boost practice.
>
>
> uBLAS as an interface
> -
>
> Works well.  Nice interface.  Can use ATLAS, vendor BLAS and other libs
from
> this base.
> Would be good if there was an ATLAS-like automagically tuned interface for
> uBLAS to choose at compile and/or run time the appropriate underlying
> implementation for "prod" etal.  That way uBLAS would transparently be
using
> the best implementation, perhaps its own, at various points.
>
> This would mean that you could use uBLAS without any uncertainty that your
> performance will be superseded, encouraging numeric development beyond
plain
> BLAS.
>
> The uBLAS guys have a LAPACK binding in progress as well.  LAPACK, as you
> probably know, needs  BLAS.  Other bindings would be good to encourage
uBLAS
> as the lingua franca of numeric C++.
>
> On the flip side, a lot of uBLAS work will be ignored unless it can be
> incorporated into other works, like LAPACK.  I think this means that uBLAS
> should provide a BLAS interface so that people are encourage to work
within
> the framework of uBLAS knowing that this is a widely useful thing.  Again
> this could grow to include other interfaces, e.g. uLAPACK, to encourage
and
> draw resources.
>
>
> Developing right now
> 
>
> What would I do right now?  I would use uBLAS and delegate to ATLAS or a
> vendor BLAS where that really mattered.  That's what I do.
>
> I'd suggest you to talk to the ublas-dev list and get information from
> horses' mouths.  They have been nice guys to chat to.
>
> Regards,
>
> HTH.
> ___
> Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost
>


Where is uBlas-dev list ???
I can't find it




___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: what happened to allocators in boost?

2003-08-27 Thread David Abrahams
"E. Gladyshev" <[EMAIL PROTECTED]> writes:

> --- David Abrahams <[EMAIL PROTECTED]> wrote:
>> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
>> 
>> > I am afraid that some of the boost libraries (as they are now) won't
>> > work for a big group of real time and embedded developers, where
>> > customization is the key.
>> 
>> Is it really (other than culturally, I mean)?  
>
> The culture is changing. :)
>
>> Are you sure that
>> there's no good general-purpose allocator which they can use?
>
> Yes, I am sure. I shipped one of my libraries to a guy who
> works on various DSP chips.  The native memory allocator
> on one of the DSP was very slow (some specific issues with
> how the DSP addresses the memory, I don't remember the details).
>
> This guy had to add his own new/delete operator to some of
> my internal classes to get about 10 times performance improvement.

None of that indicates that he couldn't have replaced the native
allocator with a fast general-purpose allocator.

> No, I really don't think that there is a hope for general purpose
> allocators.

Why not?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread Darryl Green
> -Original Message-
> From: David Abrahams [mailto:[EMAIL PROTECTED] 
>
> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
> > I am afraid that some of the boost libraries (as they are now) won't
> > work for a big group of real time and embedded developers, where
> > customization is the key.
> 
> Is it really (other than culturally, I mean)?  Are you sure that
> there's no good general-purpose allocator which they can use?

What is general purpose? does general purpose include (presumably all at
once as iiuyc "there can be only one"):

Determinism.
Memory usage efficiency.
Ability to share allocated objects between threads.
Low/no impact on scheduling latency.
Speed. 
Freedom from fragmentation over an arbitrarily long uptime (years).

Bonus marks for the last on systems with no mmu.

Policy based allocators anyone? But then, I'd probably wan't (need?)
policy based smart pointers to use the allocators with.
At least some of the above conflicting requirements imply policy
decisions about the pointers to this storage. The low latency, but no
sharing between threads allocator rather implies that managing the
object lifetime using a thread-safe shared_ptr is inefficient at best
and dangerous at worst - including the allocator in the type wouldn't be
a bad thing here. That suggests to me that policy based smart pointers
are the way to go for some (all?) such users/uses.

I don't think this in any way detracts from the utility of
boost::shared_ptr<> as it stands - a lot of the time, I just "want it to
work". Nevertheless there are systems for which which I can't/won't use
it (at least not until I've had a chance to digest Peter Dimov's
suggestions better).

Just one user opinion - ymmv.

Regards
Darryl Green.
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: Re: [uBlas] Any Performance Resulst Data with uBlas?

2003-08-27 Thread Hurd, Matthew
> From: Firingme [mailto:[EMAIL PROTECTED] 

> Where is uBlas-dev list ???
> I can't find it

It is a yahoo groups thingo at: http://groups.yahoo.com/group/ublas-dev/

Check out
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBL
AS too.

Cheers,

Matt.
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread Glen Knowles
Title: RE: [boost] Re: what happened to allocators in boost?





--- David Abrahams <[EMAIL PROTECTED]> wrote:
> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
> 
>> Are you sure that
>> there's no good general-purpose allocator which they can use?
>
>Yes, I am sure. I shipped one of my libraries to a guy who
>works on various DSP chips.  The native memory allocator
>on one of the DSP was very slow (some specific issues with
>how the DSP addresses the memory, I don't remember the details).
>
>This guy had to add his own new/delete operator to some of
>my internal classes to get about 10 times performance improvement.
>
>No, I really don't think that there is a hope for general purpose allocators.


If it was a system wide performance problem on that DSP wouldn't he have been better off replacing the system allocator completely rather then only for a few classes?

Glen





Re: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev

--- David Abrahams <[EMAIL PROTECTED]> wrote:
> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
> 
> > --- David Abrahams <[EMAIL PROTECTED]> wrote:

> > Yes, I am sure. I shipped one of my libraries to a guy who
> > works on various DSP chips.  The native memory allocator
> > on one of the DSP was very slow (some specific issues with
> > how the DSP addresses the memory, I don't remember the details).
> >
> > This guy had to add his own new/delete operator to some of
> > my internal classes to get about 10 times performance improvement.
> 
> None of that indicates that he couldn't have replaced the native
> allocator with a fast general-purpose allocator.
> 
> > No, I really don't think that there is a hope for general purpose
> > allocators.
> 
> Why not?

Sure he could have replaced the system allocator (I actually suggested it too)
but why would he want to do it? 
The standard system allocator worked just fine for the rest of his program.
Why would he want to implement a full blown memory manager.

The problem was that my library had couple classes that 
get allocated/deleted very often it was the biggest performance hit.
He just overloaded the new/delete in these classes and built 
a very simple fixed-size memory manager in a separate heap
just for that.

In fact a program might require different allocation
strategies depending on the context.  Replacing the global 
new/delete may not be an option.

Eugene



__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread Ross Smith
David Abrahams wrote:
Ross Smith <[EMAIL PROTECTED]> writes:

David Abrahams wrote:

"Neal D. Becker" <[EMAIL PROTECTED]> writes:

You mean I can't just run bjam with no options and get the libs
built with thread support?  I need to add a command-line option?
The libraries that require thread support will be built with thread
support.  The others will not, unless multi has been placed
in their default-build settings; single is the global
default.
Which leads to three questions:

(1) How do we do this?
  
Do what?  Get all multithreaded libraries automatically with zero user
intervention on the command-line?  You convince the Boost developers
who told me single-threading should be the default when I started
Boost.Build that they were wrong, and I change the default.
What the hell is the matter with you? All I asked was how to set the
multithreaded option. I looked in the documentation and couldn't find
it. Are you too l33t to answer questions from mere users now?
(2) Why isn't it documented? Are users supposed to know about this bit
   of voodoo by clairvoyance, or what?
Yes.

(3) How many other undocumented gotchas like this are lurking in there?
63 and a half.
Yeah yeah. Just keep taking the tablets, as the good Lord said to Moses.

--
Ross Smith .. Pharos Systems, Auckland, New Zealand
"I virtually never go out of the house with less computing
power on my person than the entire North American continent
circa 1973." -- Charlie Stross
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread Steve Hutton
In article <[EMAIL PROTECTED]>, David Abrahams wrote:
> "Neal D. Becker" <[EMAIL PROTECTED]> writes:
> 
>> On Saturday 23 August 2003 07:18 am, John Maddock wrote:
>>> > One more thing: what exactly can go wrong with 1.30.0 if
>>> > -pthread isn't used? Is it boost specific or a general thing
>>> > (e.g. issues w/ respect to libstdc++)?
>>>
>>> A general thing - without this then:
>>>
>>>  Your std lib is not thread safe.
>>>  Your C lib is not thread safe.
>>>  g++ will not emit thread safe exception handling code.
>>>
>>> Thus while for C programs enabling thread support is just a question of
>>> linking to the right libraries, for C++ you also need to ensure that the
>>> compiler "knows" that you want thread safe code.
>>>
>>
>> You mean I can't just run bjam with no options and get the libs built with 
>> thread support?  I need to add a command-line option?
> 
> The libraries that require thread support will be built with thread
> support.  The others will not, unless multi has been placed
> in their default-build settings; single is the global
> default.

I recently ran into this trying to use shared_ptr in a mulithreaded app.
The docs might be somewhat incomplete with regard to this.  e.g.

http://boost.org/more/download.html#Installation
"preparing to use Boost in a development project is relatively
straightforward. Most boost libraries are implemented entirely within
their header files. The only preparation for their use is to add the
boost root directory to your compiler's list of #include<...> search paths."

http://www.boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety
"shared_ptr uses Boost.Config to detect whether the implementation supports
threads. If your program is single-threaded, but your platform is autodetected
by Boost.Config as supporting multiple threads, #define BOOST_DISABLE_THREADS
to eliminate the thread safety overhead."

It wasn't immediately clear to me how to ensure that the linux app I am
writing will always use the threadsafe version of shared_ptr (my app requires
pthreads), no matter how/if the user configured boost.  What I ended up doing
was verifying pthread support at install time, and then defining
BOOST_HAS_PTHREADS.

Steve

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Problem on the CVS version of the top web page

2003-08-27 Thread Daryle Walker
On Sunday, August 24, 2003, at 6:49 PM, Janusz Piwowarski wrote:

On Sunday, August 24, 2003, 7:15:11 AM, Daryle Walker wrote:

I have a "CVS Quick Reference Card" lying around, and the entries for 
"checkout" and "update" have a sub-option "-j REV" that says "Merge 
in changes".  That can't fuse one branch into another?  (I wouldn't 
want to potentially hose our CVS experimenting with this.  Any 
experts out there that know what this sub-option does?)
You're right, -j option with update command can merge changes between 
branches. It works ok, marks places changed in both branches with 
standard cvs markers  and .
Would you start with a checked-out archive of the main trunk then apply 
"update -j" with the 1.30.x branch, or use a checked-out archive of the 
1.30.x branch and apply "update -j" with the main trunk?  We would want 
the results to be in the main trunk.

Will the command tell us which files get the CVS markers, so we can fix 
them up before other people start downloading (hopefully)?  What 
happens to binary files?

Daryle

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Problem on the CVS version of the top web page

2003-08-27 Thread Daryle Walker
On Sunday, August 24, 2003, at 4:26 PM, David Abrahams wrote:

Janusz Piwowarski <[EMAIL PROTECTED]> writes:

On Sunday, August 24, 2003, 7:15:11 AM, Daryle Walker wrote:

I have a "CVS Quick Reference Card" lying around, and the entries 
for "checkout" and "update" have a sub-option "-j REV" that says 
"Merge in changes".  That can't fuse one branch into another?  (I 
wouldn't want to potentially hose our CVS experimenting with this.  
Any experts out there that know what this sub-option does?)
You're right, -j option with update command can merge changes between 
branches. It works ok, marks places changed in both branches with 
standard cvs markers  and .
That doesn't mean you can use it to correctly and automatically merge 
RC_1_30_0 into the trunk, because many cross-merges have already been 
made and there is no marker on the RC_1_30_0 branch to use with the 
first -j option.

I don't know why anyone would want to try to make this simple change 
to the index page into a project which potentially touches every 
single file in the repository, anyway.
I was thinking ahead to every file that had a change in 1.30.2 but 
wasn't yet in the main trunk.  If most of the changes have been 
manually transferred already, then there is little point in doing a 
merging command.  If we still have a lot of manual merging ahead of us, 
then automation could help.

Daryle

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: what happened to allocators in boost?

2003-08-27 Thread Daryle Walker
On Monday, August 25, 2003, at 2:57 PM, Peter Dimov wrote:

E. Gladyshev wrote:
--- Peter Dimov <[EMAIL PROTECTED]> wrote:

In this context, an allocator parameter is only an excuse for 
implementors to avoid doing the necessary work to make function<> 
useful out of the box. "You can always use a custom allocator", 
right?
Considering the variety of real life requirements and platforms, it 
is not practical to make a library that work out of the box.
The danger in that statement is that it looks obvious, but it's not. 
It is true in some sotuations (not as frequent as is generally 
believed) and false in others, and when it doesn't really hold but is 
axiomatically accepted as truth, it serves as exactly the excuse I was 
talking about. "It is not practical to make a library that works out 
of the box, so users should be happy that they are getting a library 
that can be made to work with a "small" additional investment. Of 
course we'll gladly sell you the additional bits and pieces."
That's an invalid argument, since the STL containers give you a default 
value for the allocator argument, which makes containers work out of 
the box, and the default is "for free."

It is interesting to compare the C++ approach with the Java approach 
to memory management in this context. C++ "pragmatically" accepts that 
the shipped malloc is often inadequate and provides several types of 
hooks that you can use to work around the problem. Java does not. If 
the JVM has a broken memory manager you lose and can do nothing about 
it. This gives C++ a short term advantage, but in the long term Java 
wins, since JVM implementors have no choice but to optimize their 
memory managers till they are blue in the face.

Bugs that have no workarounds are always fixed first. :-)
You're making a worse assumption here.  Who says that the need for a 
different allocator class is because the default one 
has-bugs/is-slow/plain-old-sucks?  There can be an orthogonal need for 
a different allocator class, which no improvement on the default one 
can fix.

In this case, the Java user is 100% screwed since they can't change the 
memory manager at all.  Or at least, can't change the manager without 
changing it everywhere.  (Allocator policies allow mix-and-match.)

That is why STL has allocators. In one project, if STL did not have 
allocators, I would have to implement my own containers.  I was so 
happy that I didn't have to do it.
So far my experience indicates that people only bother with allocators 
when std::allocator is inadequate, i.e. slow. Your case may, of 
course, be different. It happens sometimes.

At least a library should be consistent about memory management.
This is an arbitrary requirement.
Taking a quick look at the Standard Library, all of the direct 
containers that use dynamic memory take an allocator argument, except 
for the maligned std::valarray<>.

The issue is how consistent boost is about it (STL is very 
consistent)? It seems that boost doesn't have any idea about how it 
manages its memory.
A fairly aggressive way to state it, but I see your point. It is true 
that Boost does not impose any requirements on how the particular 
libraries obtain and manage their memory. But you need to realize that 
"do nothing" can be a conscious design decision. Lack of strict 
requirements means more freedom for the implementations to do what 
they consider best.
This last sentence is probably why std::valarray<> keeps its memory 
policy private.

As an example, consider a hypothetical std::vector that does not 
have an allocator argument and "has no idea how it manages its 
memory." Do you see the implications of that?

1. vector::resize and vector::reserve can now realloc in place since 
they can talk directly to the memory manager.

2. On many implementations, vector can now be made as efficient as 
new T[], since new T[] often stores the equivalent of size() and 
capacity() anyway to allow delete[] to do the right thing.

For example if a boost class X uses std::list, does it have to expose 
the std::list<> allocator or should it use the standard

std::allocator<>.
template
struct X
{
   std::list  l;
};
OR

template >
struct X
{
   std::list  l;
};
Which definition is more friendly to boost?
The correct answer depends on X's interface. Your toy example is not a 
good illustration as this kind of "interface" is rarely seen.

Is it allowed for a boost libarary to use global new/delete? If so, 
should it be documented?
Boost libraries are allowed to use the C++ language without 
restrictions.
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Spirit question...

2003-08-27 Thread David B. Held
"Chris Cooney" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> [...]
> That was my problem - thank you.

The moral being:

Using anychar_p all by itself is usually a Bad Thing(TM)

That's because it's like the langoliers--it eats everything up.
You usually want to say what it shouldn't eat up by subtracting the
terminating character from the parser.  I think this is a Spirit FAQ.

Dave




___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: [BGL] vector_as_graph::remove_vertex proposal

2003-08-27 Thread Vladimir Prus
Hi Janusz,

Janusz Piwowarski wrote:

> I found remove_vertex member for vector_as_graph isn't implemented.
> It's my proposal:

Thanks!

>   template
>   void
>   remove_vertex(typename EdgeList::value_type u,
> std::vector& g)
>   {
> typedef typename EdgeList::iterator iterator;
> clear_vertex(u, g);
> g.erase(g.begin() + u);
> for (std::size_t i = 0; i < g.size(); ++i)
>   for ( iterator it = g[i].begin(); it != g[i].end(); ++it )
> // after clear_vertex none *it is equal to u
> if ( *it > u )
>   --*it;
>   }

The implementation is fine, AFAICT. The only problem with me is the comment:
I couldn't understand it for the first time because "none *it" sounded
confusing. Maybe "*it is never equal to u" is better? 

BTW, if you could sumbit unified diff instead of new implementation, that
would be nice. If that's not convenient for you, no problem. I can apply
the thange anyway.

Thanks,
Volodya



> 
> Regards,
> Janusz
> 
> ___
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost


___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: [bgl] typo in adjacency_list_io.hpp

2003-08-27 Thread Vladimir Prus
Hi Janusz,

Janusz Piwowarski wrote:

> Hi all
> 
> gcc 3.2 generates warnings about implicit typename in line 313 in file
> adjacency_list_io.hpp. I think either there should be EdgePrinter
> call or class G should be renamed to Graph, as is in the rest of
> templates in this file.

Thanks for pointing this out. Changes to 'Graph'.

- Volodya

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: Spirit question...

2003-08-27 Thread Hartmut Kaiser
David B. Held wrote:

> The moral being:
> 
> Using anychar_p all by itself is usually a Bad Thing(TM)
> 
> That's because it's like the langoliers--it eats everything 
> up. You usually want to say what it shouldn't eat up by 
> subtracting the terminating character from the parser.  I 
> think this is a Spirit FAQ.

This isn't correct, sorry. 

The anychar_p parser used by itself isn't a bad thing, because it eats
up only _one_ arbitrary character/token from the input stream, which may
be very useful. The problematic part is the kleene_star operator, which
requires some additional attention, because it "repeats" the attached
parser zero or more times. So the kleene_star in conjunction with the
anychar_p will eat up all your input sequence, regardless of what in
contains. But this may happen with other attached parsers too.

Regards Hartmut

BTW: this kleene_star behaviour _is_ a FAQ, see here:
http://www.boost.org/libs/spirit/doc/faq.html#kleene_star



___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread E. Gladyshev
--- Daryle Walker <[EMAIL PROTECTED]> wrote:
> On Monday, August 25, 2003, at 2:57 PM, Peter Dimov wrote:
> has-bugs/is-slow/plain-old-sucks?  There can be an orthogonal need for 
> a different allocator class, which no improvement on the default one 
> can fix.
> 
> In this case, the Java user is 100% screwed since they can't change the 
> memory manager at all.  Or at least, can't change the manager without 
> changing it everywhere.  (Allocator policies allow mix-and-match.)

I am glad that boost is not a Java library. :)
Don't get me wrong, boost is an amazing library. 
I am learning from it every minute I look at it,
great job guys  thank you.
However I was a bit shocked when I realized how 
ignorant boost is about memory policies. 
For instance boost::signals use std::vector<>, 
but it doesn't care to do anything about the allocator parameter.
Some libraries would mix global new/delete calls with user defined 
memory policies and all that under the covers and the list goes on and on.

I don't like the STL allocators too much but I'd like to 
see a modern C++ library that has consistent and 
clear memory policies.


Instead of having an allocator template parameter 
for each class, perhaps we could design a global 
memory management class that can be scaled horizontally
on the data type basis.
It will require some way to associate a user defined allocator 
with data type.
Then we would need to define STL-style allocators that 
will call the boost memory manager.

The boost memory policy could be along the lines:

1. All boost classes have to use boost::allocator<> 
with STL allocators internally. 
   std::vector >;

2. If a boost class needs to create an object it must call boost::mm.
int *x = boost::getmm()->create(1);
 ...
boost::getmm()->destroy(x,1);

3. The user can customize memory policies for her class by calling regmm
boost::getmm()->regmm( MyAllocator() );


IMHO, in terms of memory management, this simple 
policy will make boost to look more like a C++ library not Java.

It doesn't provide the flexibility of STL allocators but it
does give the user some control over the memory.

Eugene


__
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Spirit question...

2003-08-27 Thread Joel de Guzman
David B. Held <[EMAIL PROTECTED]> wrote:
> "Chris Cooney" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
>> [...]
>> That was my problem - thank you.
> 
> The moral being:
> 
> Using anychar_p all by itself is usually a Bad Thing(TM)

More accurately:  Using *anychar_p or +anychar_p all by itself is usually a Bad 
Thing(TM)

> That's because it's like the langoliers--it eats everything up.
> You usually want to say what it shouldn't eat up by subtracting the
> terminating character from the parser.  I think this is a Spirit FAQ.

It is now ;-)

-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] [boost.optional && boost.variant] Why can't we allowreferences?

2003-08-27 Thread Joel de Guzman
<< pardon me if this gets re-posted >>

Hi,

Is there a reason why we can't allow:

optional opt;

Also, is there a reason why we can't allow:

variant var;

IIUC, internally, it's just a matter of storing a boost.reference_wrapper
if T is a reference.

In as much as tuple is allowed, I see no reason why optional
and variant can't allow references. 

Am I missing something?

TIA,
-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread John Maddock
>You mean I can't just run bjam with no options and get the libs built with
>thread support?  I need to add a command-line option?
>
>I am updating my RPM package for 1.30.2, and I'd like to make sure this is
>correct, and I will forward this to Redhat (they now have a boost rpm).

The thread libs will be built with threading support turned on (obviously),
other libs will not be built thread safe by default - you could use

bjam -sBUILD="multi"

but remember that thread safe and non-thread-safe lib builds are very
unlikely to be binary compatible (this is true of the C++ std lib as well
BTW).

We are aware that this is an issue, and there is work going on to provide an
install procedure, that will address this by mangling library names.  I hope
we can provide an official rpm specs file as well, but that may have to
wait...

John


___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost.Regex compilation errors with BCB5

2003-08-27 Thread John Maddock
> and I don't get an error. Are you using any particular compiler setting?.
(I
> am just creating a new Console Project in the IDE and then pasting in the
> code.) Maybe there is more to this?

Make sure that the console app has "Project uses the VCL" checked when you
create it.  Haven't tried without it... I'm using the 5.6.4 compiler BTW.

John.


___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread John Maddock

> IMHO it's not requirement to use -pthread on linux - especially when it's
> not documented. I think usage of -D_REENTRANT for compiling and -lpthread
> for linking should be enough.

Maybe - I don't have a linux box to check on right now - doing a:

 g++ -dumpspecs | grep thread 

will tell you what -pthread does on your system.

John.

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] what happened to allocators in boost?

2003-08-27 Thread Peter Dimov
Andreas Huber wrote:
>
> E.g. I hope to convince some of the embedded systems/real-time crowd
> to use the fsm lib I'm currently implementing. I would bet that even
> in 10 years most of them wouldn't even consider using it unless they
> were able to totally control how memory is allocated...

That's a good point, now we have something real to argue about. :-)

I'm not that much into resource-constrained environments myself but from
what I know, total control there is indeed the norm, and it is usually
achieved by:

1. Banning all dynamic memory allocations and most (often all) third party
libraries;

or

2. Allowing dynamic memory and 3rd party libraries but replacing global
new/delete (the starightforward C++ way to have total control.)

I haven't heard of a case where 3rd party libraries are only allowed if they
have an allocator parameter and where global new/delete are not taken over.
It is very unnatural to replace "new X" with the allocator-based abomination
everywhere in the code, and the benefits aren't that great to justify it.
But it may be just my ignorance showing through, of course.

This leads me to the obvious question: have you actually received a request
to add an allocator parameter to the FSM library, or are you just
second-guessing the requirements of the realtime programmers?

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: what happened to allocators in boost?

2003-08-27 Thread David Abrahams
"E. Gladyshev" <[EMAIL PROTECTED]> writes:

> --- David Abrahams <[EMAIL PROTECTED]> wrote:
>> "E. Gladyshev" <[EMAIL PROTECTED]> writes:
>> 
>> > --- David Abrahams <[EMAIL PROTECTED]> wrote:
>
>> > Yes, I am sure. I shipped one of my libraries to a guy who
>> > works on various DSP chips.  The native memory allocator
>> > on one of the DSP was very slow (some specific issues with
>> > how the DSP addresses the memory, I don't remember the details).
>> >
>> > This guy had to add his own new/delete operator to some of
>> > my internal classes to get about 10 times performance improvement.
>> 
>> None of that indicates that he couldn't have replaced the native
>> allocator with a fast general-purpose allocator.
>> 
>> > No, I really don't think that there is a hope for general purpose
>> > allocators.
>> 
>> Why not?
>
> Sure he could have replaced the system allocator (I actually suggested it too)
> but why would he want to do it? 
> The standard system allocator worked just fine for the rest of his program.
> Why would he want to implement a full blown memory manager.

He would not.  He would pick an off-the-shelf memory manager such as
dlmalloc that has been shown to perform well in a wide variety of
applications.

> The problem was that my library had couple classes that get
> allocated/deleted very often it was the biggest performance hit.  He
> just overloaded the new/delete in these classes and built a very
> simple fixed-size memory manager in a separate heap just for that.
>
> In fact a program might require different allocation
> strategies depending on the context.  Replacing the global 
> new/delete may not be an option.

Hypothetical or real?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread Peter Dimov
E. Gladyshev wrote:
>
> Sure he could have replaced the system allocator (I actually
> suggested it too) but why would he want to do it?

Because this saves time in the long run. Once you have a non-broken
allocator you can use third party libraries as-is, without need for
modification, and you can donate it to the community if you're after the
fame (aren't we all.)

> The standard system allocator worked just fine for the rest of his
> program. Why would he want to implement a full blown memory manager.

dlmalloc is not that hard to download. :-)

Incidentally, you can #define BOOST_SP_USE_STD_ALLOCATOR or
BOOST_SP_USE_QUICK_ALLOCATOR to tell shared_ptr to use std::allocator or
boost::detail::quick_allocator for counts when your malloc is slow. But it's
better to just replace the global new/delete so that every "new X" in the
program benefits. And it's better yet to submit a "your malloc is slow,
here's the link to dlmalloc which is five times faster on this real code"
bug report.

(BTW, "five times faster" is not a figure of speech. I do have real
measurements. Had to let you know.)

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: 1.30.0->1.30.2: no more thread support for Linux?

2003-08-27 Thread David Abrahams
Ross Smith <[EMAIL PROTECTED]> writes:

> David Abrahams wrote:
>> Ross Smith <[EMAIL PROTECTED]> writes:
>> 
>>>David Abrahams wrote:
>>>
"Neal D. Becker" <[EMAIL PROTECTED]> writes:

>You mean I can't just run bjam with no options and get the libs
>built with thread support?  I need to add a command-line option?

The libraries that require thread support will be built with thread
support.  The others will not, unless multi has been placed
in their default-build settings; single is the global
default.
>>>
>>>Which leads to three questions:
>>>
>>>(1) How do we do this?
>>   Do what?  Get all multithreaded libraries automatically with zero
>> user
>> intervention on the command-line?  You convince the Boost developers
>> who told me single-threading should be the default when I started
>> Boost.Build that they were wrong, and I change the default.
>
> What the hell is the matter with you? 

I was a bit miffed by your outraged response to my explanatory reply.
I thought I was being helpful and instead I got "when did you stop
beating your wife?" questions like #2 and #3 below.  How is anyone
supposed to answer those?

> All I asked was how to set the multithreaded option.

That question wasn't clear from your posting.  As far as I could tell
you were asking how to "just run bjam with no options and get the libs
built with thread support".  Maybe if you applied a little less heat
it would be easier to help you.  Sarcastic rhetoric may have hurt the
comprehensibility of your request.

http://www.boost.org/tools/build/build_system.htm documents how to
set the build request on the command-line, and you can in fact find a
mention of multi in there if you dig hard enough.

> I looked in the documentation and couldn't find it. Are you too l33t
> to answer questions from mere users now?

Ask me a question which is more than just a way to vent your
frustration and I'm happy to try to answer it.

>>>(2) Why isn't it documented? Are users supposed to know about this bit
>>>of voodoo by clairvoyance, or what?
>> Yes.
>> 
>>>(3) How many other undocumented gotchas like this are lurking in there?
>> 63 and a half.
>
> Yeah yeah. Just keep taking the tablets, as the good Lord said to Moses.

Oh, so *that's* where the visions came from! ;-)

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Problem on the CVS version of the top web page

2003-08-27 Thread David Abrahams
Daryle Walker <[EMAIL PROTECTED]> writes:

> On Sunday, August 24, 2003, at 4:26 PM, David Abrahams wrote:
>
>> Janusz Piwowarski <[EMAIL PROTECTED]> writes:
>>
>>> On Sunday, August 24, 2003, 7:15:11 AM, Daryle Walker wrote:
>>>
 I have a "CVS Quick Reference Card" lying around, and the entries
 for "checkout" and "update" have a sub-option "-j REV" that says
 "Merge in changes".  That can't fuse one branch into another?  (I
 wouldn't want to potentially hose our CVS experimenting with this.
 Any experts out there that know what this sub-option does?)
>>>
>>> You're right, -j option with update command can merge changes
>>> between branches. It works ok, marks places changed in both
>>> branches with standard cvs markers  and .
>>
>> That doesn't mean you can use it to correctly and automatically
>> merge RC_1_30_0 into the trunk, because many cross-merges have
>> already been made and there is no marker on the RC_1_30_0 branch to
>> use with the first -j option.
>>
>> I don't know why anyone would want to try to make this simple change
>> to the index page into a project which potentially touches every
>> single file in the repository, anyway.
>
> I was thinking ahead to every file that had a change in 1.30.2 but
> wasn't yet in the main trunk.  If most of the changes have been
> manually transferred already, then there is little point in doing a
> merging command.  If we still have a lot of manual merging ahead of
> us, then automation could help.

Most changes were made in the trunk first and then transferred to
1.30.2.  A project-wide automated merge from branch to trunk would be
a disaster.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: Re: Boost.Regex compilation errors with BCB5

2003-08-27 Thread Chris Trengove
"John Maddock" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Make sure that the console app has "Project uses the VCL" checked when you
> create it.  Haven't tried without it... I'm using the 5.6.4 compiler BTW.

Yes, I am certainly doing this, and am also using 5.6.4 (and 5.5.1). Maybe
you could email me your BPR and CPP files, and I can compare and see what is
different.

Chris



___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-27 Thread Peter Dimov
Daryle Walker wrote:
>
> That's an invalid argument, since the STL containers give you a default
> value for the allocator argument, which makes containers work out of
> the box, and the default is "for free."

I'm afraid it is not. The allocator parameter has a cost. It (a) prevents
some very useful optimizations, (b) implementations that take it seriously
(i.e. respect ::pointer, ::construct etc) make me suffer a measurable
abstraction penalty.

>> Bugs that have no workarounds are always fixed first. :-)
>
> You're making a worse assumption here.  Who says that the need for a
> different allocator class is because the default one
> has-bugs/is-slow/plain-old-sucks?

I say that the primary motivation to customize memory management details is
that the default memory manager is slow.

The standard allocators have a somewhat different story. They were
originally intended to encapsulate the memory model, not the memory
management details; this was in the near/far days. The original STL did its
own memory management (free lists) independent of the allocator argument.

Someone that has actually been present at the relevant meetings can fill the
details why the allocators are now what they are (I'm tempted to use
Alexander Terekhov's favorite characterization here :-)).

> There can be an orthogonal need for a different allocator class, which no
> improvement on the default one can fix.

Oh yes, there "can be". And there "can be" a need for something else, too.

> In this case, the Java user is 100% screwed since they can't change
> the memory manager at all. [...]

My point exactly. This is why the Java memory manager beats C++'s memory
manager in the long run, because the user can't fix it.

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Problem on the CVSversion of the top web page

2003-08-27 Thread Janusz Piwowarski
[ I replied to Daryle, but his host said: 553 5.3.0 
DNSBL:You are listed at relays.osirusoft.com :( ]

> Would you start with a checked-out archive of the main trunk then 
> apply 
> "update -j" with the 1.30.x branch, or use a checked-out archive of 
> the 
> 1.30.x branch and apply "update -j" with the main trunk?  We would 
> want 
> the results to be in the main trunk. 
You always update your local copy of repositorium, therefore it  
should be main trunk in this case. 
   
> Will the command tell us which files get the CVS markers, so we can 
> fix 
> them up before other people start downloading (hopefully)?   
Conflicts are reported during update process, besides files with 
conflicts are listed with "C" sign.  
 
> What  
> happens to binary files? 
I not sure, but i think conflict is reported. 
 
There is a good documentation on cvshome.org site, and second one on 
red-bean site (cvsbook.red-bean.com/cvsbook.html) 
 
Regards,  
Janusz 
 






___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] [Boost-bugs] [ boost-Support Requests-795936 ] regex_matchproblem

2003-08-27 Thread SourceForge.net
Support Requests item #795936, was opened at 2003-08-27 05:29
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=207586&aid=795936&group_id=7586

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: regex_match problem

Initial Comment:
Ruslan Talpa <[EMAIL PROTECTED]>

I want to match different strings in a whois result and i 

am having some problems.



first a execut a shell command similar to:

"/usr/bin/whois domain.com > tmp_file"

so after this we have a file, from wich i read line by line 

and try to match some strings but no matter what the 

reg. expression is the regex_match returns false.

i even tried "regex expression("a");" and still no luck

The only thing i can think of is that there is some 

character encoding stuff envolved but i don't know what 

to do. Please help, tell me what i am doin wrong





here are the functions involved

int parse_line(const char*  response)

{

   regex expression("a");

   cmatch what;

   if(regex_match(response, what, expression))

   {

  cout << "MATCH\n";

   }

   else

   {

  cout << "NO MATCH\n";

   }

   return 0;

}





int get_info(string domain, char* pipe_file)

{

string line;

Message msg;

strstream command;

command << "/usr/bin/whois " << domain.c_str() 

<< " > " << pipe_file;

system(command.str());

ifstream f(pipe_file);

while (!f.eof())

{

getline(f, line);

parse_line(line.c_str());

}

f.close();

return 0;

}





--

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=207586&aid=795936&group_id=7586


---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Boost-bugs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/boost-bugs
___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost