
Robert Ramey wrote:
Here's a suggestion.
for your latest/greatest, put in the namespace boost::spirit and in directory boost/sprit
Doing so will break existing code.
For your old version, with an incompatible API, put it in namespace boost::spririt_1_8 and directory boost/spririt_1_8.
Doing so will break existing code.
and for your older version put it in boost::spririt_1_6 and directory boost/spririt_1_6
Doing so will break existing code. If you look beyond the name(s) I'm sure you'll see why our recipe is superior to your suggestion. 100% backward compatibility is a primary concern. Here's our strategy: "classic" 1) Keep the old header/directory structure as-is. 2) Move the 1.8 directory tree to spirit/home/classic 3) Make the old headers forward to the moved headers. 4) Provide a deprecation warning that will point the user to the new header file. This warning should not kick in until Boost 1.38. 5) Put the "classic" components in namespace spirit::classic 6) Provide a macro, BOOST_SPIRIT_USE_OLD_NAMESPACE, such that if the user includes the old headers, the components are not hoisted into the "classic" namespace (backward compatibility mode)) "new generation" 1) Place them in spirit/home/xxx, where xxx is a new module (sub-library) name. 2) Place them in namespace spirit::xxx. If you see compatibility problems with the current strategy, we'll appreciate it if you provide a minimal cpp file that exhibits the problem. Otherwise, we'll never really know what it is you are complaining about. Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net