Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-09-23 09:54:31


>I know -- in a post some time back I mentioned that a sort of index of how
>stable the maintainer and boost developers considered the various accepted
>library APIs to be might be helpfull. I would have an easier time getting
>accept for using a library considered more stable by the developers. This
>information is not available to me now.

Good point.

>> - maintainability of Boost source code
>>
>> That's a genuine concern, we have some code that can probably only be
>> maintained by the folks who wrote it, and that's not good at all.
>>
>
>This is closely linked with commercial support. If a product is
>commercially supported by somebody I trust, then I might not care. But if
>it is not, I will have to consider the possibility of having to fix
>problems myself. If I have no reasonable way of understanding the code,
>it spells TROUBLE.

Understood.

>> 1) Side by side binaries: requires that symbol names in binaries are
>> unique
>> to the Boost version being used, or even the library being compiled.
>> Requires that the Boost namespace be customisable to something other than
>> "boost". I guess we could do what STLport does and make the namespace a
>> macro throughout Boost,
>
>This would give one source, better than mingling with source code.
>However I am not aware if a macro is a good solution for this, does that
>work well for STLport?

Well I must admit I've never tried to change STLports namespace away from
the default, but the intention is clearly there. In theory it's just a
question of setting a #define somewhere and away you go.

>> 2) Side by side headers: only needed if the library exposes it's Boost
>> dependency in it's public API's. Requires that the #include's get fixed
>> up
>> to include via a path other than boost/. This is not as easy as it
>> sounds,
>> because there are some #include's in Boost that proceed via macros.
>
>I do not understand exactly what you mean with "proceed via macros".
>Could you point me at an example please?

Sorry, I mean things like:

#define MYHEADER <boost/whatever.hpp>

// then much later, different source file maybe:

#include MYHEADER

Boost.Config does things like that, as does MPL I believe. However thinking
about some more a global search and replace for "boost/" would probably be
good enough.

>Yes, I think I would just use "mylib_boost" since the version would be
>implicit through my configuration management. Hopefully my customers are
>only using one version of MyLib ;-) . But thats really their problem,
>not mine.
>
>Nesting would however be nice since we internally could write
>
>#using namespace MyLib;
>
>and then write boost code as everybody else.

How about a namespace alias:

namespace acme_computing_boost_1_33_0 {}

namespace boost = acme_computing_boost_1_33_0;

Is that an acceptable alternative? It could be boilerplated inside the
Boost.Config system if necessary.

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk