$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: hartmut.kaiser_at_[hidden]
Date: 2008-04-16 18:50:49
Author: hkaiser
Date: 2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
New Revision: 44475
URL: http://svn.boost.org/trac/boost/changeset/44475
Log:
Spirit V2: started to address regression test failures
Text files modified: 
   trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp                  |    20 ++++++++++----------                    
   trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp                     |    12 +++++++-----                            
   trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp                     |     3 +++                                     
   trunk/boost/spirit/home/qi/parse.hpp                                            |     6 +++---                                  
   trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp |     2 +-                                      
   trunk/libs/spirit/doc/what_s_new.qbk                                            |    35 +++++++++++++++++++++++++++++++++++     
   trunk/libs/spirit/example/karma/Jamfile                                         |     5 +++--                                   
   trunk/libs/spirit/example/karma/basic_facilities.cpp                            |     7 -------                                 
   trunk/libs/spirit/example/karma/quick_start1.cpp                                |     2 +-                                      
   trunk/libs/spirit/example/lex/Jamfile                                           |    25 +++++++++++++------------               
   trunk/libs/spirit/example/lex/static_lexer/Jamfile                              |     2 +-                                      
   trunk/libs/spirit/test/lex/test.hpp                                             |     5 ++++-                                   
   trunk/libs/spirit/test/qi/real.cpp                                              |     4 ++--                                    
   trunk/libs/spirit/test/support/hold_any.cpp                                     |     2 +-                                      
   14 files changed, 84 insertions(+), 46 deletions(-)
Modified: trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -530,9 +530,9 @@
         ///////////////////////////////////////////////////////////////////////
         //  This is the workhorse behind the real generator
         ///////////////////////////////////////////////////////////////////////
-        template <typename OutputIterator, typename T>
+        template <typename OutputIterator, typename U>
         static bool
-        call_n (OutputIterator& sink, T n, RealPolicies const& p)
+        call_n (OutputIterator& sink, U n, RealPolicies const& p)
         {
         // prepare sign and get output format
             bool sign_val = false;
@@ -549,21 +549,21 @@
             // allow for ADL to find the correct overloads for log10 et.al.
             using namespace std;
             
-            T dim = 0;
+            U dim = 0;
             if (0 == (p.fixed & flags) && !detail::is_zero(n))
             {
                 dim = log10(n);
                 if (dim > 0)
-                    n /= pow(T(10.0), (int)detail::round_to_long::call(dim));
+                    n /= pow(U(10.0), (int)detail::round_to_long::call(dim));
                 else if (n < 1.) 
-                    n *= pow(T(10.0), (int)detail::round_to_long::call(-dim));
+                    n *= pow(U(10.0), (int)detail::round_to_long::call(-dim));
             }
             
         // prepare numbers (sign, integer and fraction part)
             unsigned precision = p.precision(n);
-            T integer_part;
-            T precexp = std::pow(10.0, (int)precision);
-            T fractional_part = modf(n, &integer_part);
+            U integer_part;
+            U precexp = std::pow(10.0, (int)precision);
+            U fractional_part = modf(n, &integer_part);
             
             fractional_part = floor(fractional_part * precexp + 0.5);
             if (fractional_part >= precexp) 
@@ -574,8 +574,8 @@
 
         // if trailing zeros are to be omitted, normalize the precision and
         // fractional part
-            T long_int_part = floor(integer_part);
-            T long_frac_part = floor(fractional_part);
+            U long_int_part = floor(integer_part);
+            U long_frac_part = floor(fractional_part);
             if (!p.trailing_zeros)
             {
                 if (0 != long_frac_part) {
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -13,13 +13,13 @@
 #include <iosfwd>
 
 #include <boost/spirit/home/support/safe_bool.hpp>
+#include <boost/spirit/home/support/detail/lexer/generator.hpp>
+#include <boost/spirit/home/support/detail/lexer/rules.hpp>
+#include <boost/spirit/home/support/detail/lexer/consts.hpp>
 #include <boost/spirit/home/lex/lexer/lexer_fwd.hpp>
 #include <boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp>
 #include <boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp>
 #include <boost/spirit/home/lex/lexer/lexertl/lexertl_iterator.hpp>
-#include <boost/spirit/home/support/detail/lexer/generator.hpp>
-#include <boost/spirit/home/support/detail/lexer/rules.hpp>
-#include <boost/spirit/home/support/detail/lexer/consts.hpp>
 #if defined(BOOST_SPIRIT_LEXERTL_DEBUG)
 #include <boost/spirit/home/support/detail/lexer/debug.hpp>
 #endif
@@ -199,6 +199,9 @@
         //  tokens.
         iterator_type begin(Iterator& first, Iterator const& last) const
         { 
+            if (!init_dfa())
+                return iterator_type();
+                
             struct iterator_data_type {
                 boost::lexer::state_machine const& state_machine_;
                 boost::lexer::basic_rules<char_type> const& rules_;
@@ -206,8 +209,7 @@
             };
 
             iterator_data_type iterator_data = { state_machine, rules, actions };
-            return init_dfa() ? iterator_type(iterator_data, first, last)
-                              : iterator_type();
+            return iterator_type(iterator_data, first, last);
         }
         
         //  Return the end iterator usable to stop iterating over the generated 
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/lexertl_token.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -12,6 +12,9 @@
 
 #include <boost/spirit/home/qi/detail/assign_to.hpp>
 #include <boost/spirit/home/support/placeholders.hpp>
+#include <boost/spirit/home/support/detail/lexer/generator.hpp>
+#include <boost/spirit/home/support/detail/lexer/rules.hpp>
+#include <boost/spirit/home/support/detail/lexer/consts.hpp>
 #include <boost/fusion/include/vector.hpp>
 #include <boost/fusion/include/at.hpp>
 #include <boost/fusion/include/value_at.hpp>
Modified: trunk/boost/spirit/home/qi/parse.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/parse.hpp	(original)
+++ trunk/boost/spirit/home/qi/parse.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -95,9 +95,9 @@
         typedef spirit::traits::skipper_is_compatible<Expr, Skipper>
             skipper_is_compatible;
             
-//         BOOST_MPL_ASSERT_MSG(
-//             skipper_is_compatible::value,
-//             skipper_is_not_compatible_with_parser, (Iterator, Expr, Skipper));
+        BOOST_MPL_ASSERT_MSG(
+            skipper_is_compatible::value,
+            skipper_is_not_compatible_with_parser, (Iterator, Expr, Skipper));
         
         typedef typename result_of::as_component<qi::domain, Expr>::type component;
         typedef typename component::director director;
Modified: trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp
==============================================================================
--- trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp	(original)
+++ trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -139,7 +139,7 @@
                 // passing the current token instance as a parameter helps
                 // generating better code if compared to assigning the 
                 // result of the functor to this instance
-                return ftor.get_next(mp, t);
+                return mp.ftor.get_next(mp, t);
             }
 
             // test, whether we reached the end of the underlying stream
Modified: trunk/libs/spirit/doc/what_s_new.qbk
==============================================================================
--- trunk/libs/spirit/doc/what_s_new.qbk	(original)
+++ trunk/libs/spirit/doc/what_s_new.qbk	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -7,4 +7,39 @@
 ===============================================================================/]
 
 [section What's New]
+
+[heading Spirit Classic]
+
+The Spirit V1.8.x code base has been integrated with Spirit V2. It is now called 
+*Spirit Classic*. Even if the directory structure has changed (the Spirit Classic 
+headers are now moved to the '$BOOST_ROOT/boost/spirit/home/classic' directory), 
+we created forwarding headers allowing to compile existing applications without 
+any change. These forwarding headers are deprecated, though, which will result 
+in corresponding warnings generated for each of the headers. The forwarding 
+headers are expected to be removed in the future. 
+
+The recommended way of using Spirit Classic now is to include header files from 
+the directory '$BOOST_ROOT/boost/spirit/include'. All files of Spirit Classic 
+in this directory have a 'classic_' prefixed to their name. For example the 
+include 
+
+    #include <boost/spirit/core/core.hpp>
+
+now should be written as: 
+
+    #include <boost/spirit/include/classic_core.hpp>
+
+To avoid namespace conflicts with the new Spirit V2 library we moved Spirit Classic 
+into the namespace `boost::spirit::classic`. All references to the former 
+namespace `boost::spirit` need to be adjusted as soon as the header names are
+corrected as described above. As an alternative you can define the preprocessor 
+constant `BOOST_SPIRIT_USE_OLD_NAMESPACE`, which will force the Spirit Classic 
+code to be in the namespace `boost::spirit` as before. This is not recommended, 
+though, as it maz result in naming clashs
+
+The change of the namespace will be automatically deactivated whenever the 
+deprecated include files are being used. This ensures full backwards 
+compatibility for existing applications. 
+
+
 [endsect]
Modified: trunk/libs/spirit/example/karma/Jamfile
==============================================================================
--- trunk/libs/spirit/example/karma/Jamfile	(original)
+++ trunk/libs/spirit/example/karma/Jamfile	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -1,12 +1,13 @@
 #==============================================================================
-#   Copyright (c) 2001-2007 Joel de Guzman
-#   Copyright (c) 2001-2007 Hartmut Kaiser
+#   Copyright (c) 2001-2008 Joel de Guzman
+#   Copyright (c) 2001-2008 Hartmut Kaiser
 #
 #   Distributed under the Boost Software License, Version 1.0. (See accompanying
 #   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 #==============================================================================
 project spirit-karma-example ;
 
+exe quick_start1 : quick_start1.cpp ;
 exe basic_facilities : basic_facilities.cpp ;
 exe functor_facilities : functor_facilities.cpp ;
 
Modified: trunk/libs/spirit/example/karma/basic_facilities.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/basic_facilities.cpp	(original)
+++ trunk/libs/spirit/example/karma/basic_facilities.cpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -166,13 +166,6 @@
     std::cout << "std::vector<boost::date>" << std::endl;
     output_container(std::cout, dates);
     
-    ///////////////////////////////////////////////////////////////////////////
-    // fusion tuples
-    // this will work in the future
-//     boost::fusion::vector<int, char, double> fv(42, 'a', 45.8);
-//
-//     std::cout << "boost::fusion::vector<int, char, double>" << std::endl;
-//     output_container(std::cout, fv);
     return 0;
 }
 
Modified: trunk/libs/spirit/example/karma/quick_start1.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/quick_start1.cpp	(original)
+++ trunk/libs/spirit/example/karma/quick_start1.cpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -37,7 +37,7 @@
         ) << std::endl << std::endl;
 
     // output the container as a space separated sequence
-    std::cout << "...as space delited list" << std::endl;
+    std::cout << "...as space delimited list" << std::endl;
     std::cout << 
         karma::format_delimited(
             *int_,                                // format description
Modified: trunk/libs/spirit/example/lex/Jamfile
==============================================================================
--- trunk/libs/spirit/example/lex/Jamfile	(original)
+++ trunk/libs/spirit/example/lex/Jamfile	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -1,5 +1,5 @@
 #==============================================================================
-#   Copyright (c) 2001-2007 Joel de Guzman
+#   Copyright (c) 2001-2008 Joel de Guzman
 #   Copyright (c) 2001-2008 Hartmut Kaiser
 #
 #   Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,15 +8,16 @@
 
 project spirit-lexer-example ;
 
-exe example1            : example1.cpp ;
-exe example2            : example2.cpp ;
-exe example3            : example3.cpp ;
-exe example4            : example4.cpp ;
-exe example5            : example5.cpp ;
-exe example6            : example6.cpp ;
-exe print_numbers       : print_numbers.cpp ;
-exe word_count          : word_count.cpp ;
-exe word_count_functor  : word_count_functor.cpp ;
-exe word_count_lexer    : word_count_lexer.cpp ;
-exe strip_comments      : strip_comments.cpp ;
+exe example1             : example1.cpp ;
+exe example2             : example2.cpp ;
+exe example3             : example3.cpp ;
+exe example4             : example4.cpp ;
+exe example5             : example5.cpp ;
+exe example6             : example6.cpp ;
+exe print_numbers        : print_numbers.cpp ;
+exe word_count           : word_count.cpp ;
+exe word_count_functor   : word_count_functor.cpp ;
+exe word_count_lexer     : word_count_lexer.cpp ;
+exe strip_comments       : strip_comments.cpp ;
+exe strip_comments_lexer : strip_comments_lexer.cpp ;
 
Modified: trunk/libs/spirit/example/lex/static_lexer/Jamfile
==============================================================================
--- trunk/libs/spirit/example/lex/static_lexer/Jamfile	(original)
+++ trunk/libs/spirit/example/lex/static_lexer/Jamfile	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -8,6 +8,6 @@
 
 project spirit-static-lexer-example ;
 
-exe generate_tables     : generate_tables.cpp ;
+exe word_count_generate : word_count_generate.cpp ;
 exe word_count_static   : word_count_static.cpp ;
 
Modified: trunk/libs/spirit/test/lex/test.hpp
==============================================================================
--- trunk/libs/spirit/test/lex/test.hpp	(original)
+++ trunk/libs/spirit/test/lex/test.hpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -6,6 +6,9 @@
 #if !defined(BOOST_SPIRIT_LEX_TEST_MAR_23_2007_0721PM)
 #define BOOST_SPIRIT_LEX_TEST_MAR_23_2007_0721PM
 
+#include <boost/variant.hpp>
+#include <boost/range/iterator_range.hpp>
+
 namespace spirit_test
 {
     ///////////////////////////////////////////////////////////////////////////
@@ -39,7 +42,7 @@
     inline boost::iterator_range<Iterator> const& 
     get_iterpair(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& v)
     {
-        return get<boost::iterator_range<Iterator> >(v);
+        return boost::get<boost::iterator_range<Iterator> >(v);
     }
     
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/libs/spirit/test/qi/real.cpp
==============================================================================
--- trunk/libs/spirit/test/qi/real.cpp	(original)
+++ trunk/libs/spirit/test/qi/real.cpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -12,8 +12,8 @@
 #include <boost/spirit/include/qi_char.hpp>
 #include <boost/spirit/include/qi_numeric.hpp>
 #include <boost/spirit/include/qi_operator.hpp>
-#include <boost/spirit/support/detail/math/fpclassify.hpp>
-#include <boost/spirit/support/detail/math/signbit.hpp>
+#include <boost/spirit/home/support/detail/math/fpclassify.hpp>
+#include <boost/spirit/home/support/detail/math/signbit.hpp>
 
 #include "test.hpp"
 using namespace spirit_test;
Modified: trunk/libs/spirit/test/support/hold_any.cpp
==============================================================================
--- trunk/libs/spirit/test/support/hold_any.cpp	(original)
+++ trunk/libs/spirit/test/support/hold_any.cpp	2008-04-16 18:50:47 EDT (Wed, 16 Apr 2008)
@@ -15,7 +15,7 @@
 #include <string>
 
 #include <boost/detail/lightweight_test.hpp>
-#include <boost/spirit/support/detail/hold_any.hpp>
+#include <boost/spirit/home/support/detail/hold_any.hpp>
 
 using namespace std; 
 using namespace boost::spirit;