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