Boost logo

Boost :

From: Hartmut Kaiser (hartmutkaiser_at_[hidden])
Date: 2003-12-17 11:28:23


Joel de Guzman wrote:

> Darren Cook wrote:
>
> > Joel de Guzman wrote:
> >
> >> Robert Ramey wrote:
> >>
> >>> Would it be possible that spirit 1.6 also be included in
> boost 1.31
> >>> perhaps under different directory/namespace ?
> >
> >
> > Hi Joel,
> > I didn't see you directly answer this: could boost/spirit and
> > boost/spirit.1.6 co-exist in boost 1.31?
>
> Possible? I wouldn't say no. However, there are lots of
> things that should be put into consideration. The first one
> that comes to my mind is namespace and directory structure. I
> do not think that putting
> 1.6.1 in a different namespace and directory is a good idea.
> That would hurt backward compatibility. v1.6 code should work
> as before.
>
> I'm sure there are other issues as well. However, I won't
> close my mind on the idea. If boost only had a *smart*
> configuration based download such that when your compiler is
> VC6, a copy of Spirit 1.6 is sent instead, it would be ideal.
>
> I'd like to hear what Hartmut, Dan, Martin, etc. think about
> this idea.

The only thing I could think of is to include both versions of Spirit into
boost and wrapping them with pp constants to ensure, that actually only one
version is tossed in:

Directory structure:

   boost
     spirit
       spirit_1_6_x
         ... Version 1.6.x goes here
       spirit
         ... Head version goes here

For _every_ Spirit header (spirit.hpp, spirit/core.hpp etc.) do something
like:

boost/spirit.hpp:

   #if defined(BOOST_SPIRIT_USE_VERSION_1_6)
   // this is the only header, which needs to be renamed
   #include <boost/spirit/spirit_1_6_x.hpp>
   #else
   #include <boost/spirit/spirit.hpp>
   #endif

boost/spirit/core.hpp

   #if defined(BOOST_SPIRIT_USE_VERSION_1_6)
   #include <boost/spirit/spirit_1_6_x/core.hpp>
   #else
   #include <boost/spirit/spirit/core.hpp>
   #endif

The drawback is, that it would triple the file count!
Makes this any sense?

Regards Hartmut


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