$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: hartmut.kaiser_at_[hidden]
Date: 2007-12-02 12:18:55
Author: hkaiser
Date: 2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
New Revision: 41588
URL: http://svn.boost.org/trac/boost/changeset/41588
Log:
Applied patch supplied by Jens Seidel. Fixed #1410.
Text files modified: 
   trunk/boost/wave/cpp_iteration_context.hpp                |     1 +                                       
   trunk/boost/wave/cpplexer/cpp_lex_interface_generator.hpp |     1 +                                       
   trunk/boost/wave/cpplexer/re2clex/cpp_re.hpp              |     2 ++                                      
   trunk/boost/wave/grammars/cpp_expression_value.hpp        |    21 +++++++++++----------                   
   trunk/boost/wave/util/cpp_macromap_predef.hpp             |     1 +                                       
   trunk/boost/wave/util/cpp_macromap_utils.hpp              |     3 +--                                     
   trunk/boost/wave/util/insert_whitespace_detection.hpp     |    12 ++++++------                            
   trunk/boost/wave/util/symbol_table.hpp                    |     2 ++                                      
   trunk/boost/wave/util/time_conversion_helper.hpp          |     1 +                                       
   trunk/boost/wave/util/unput_queue_iterator.hpp            |    10 +++-------                              
   trunk/boost/wave/wave_config.hpp                          |     3 ++-                                     
   trunk/boost/wave/whitespace_handling.hpp                  |     1 +                                       
   12 files changed, 32 insertions(+), 26 deletions(-)
Modified: trunk/boost/wave/cpp_iteration_context.hpp
==============================================================================
--- trunk/boost/wave/cpp_iteration_context.hpp	(original)
+++ trunk/boost/wave/cpp_iteration_context.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -22,6 +22,7 @@
 #include <boost/wave/cpp_exceptions.hpp>
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
+#include <boost/spirit/iterator/multi_pass.hpp> // make_multi_pass 
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
Modified: trunk/boost/wave/cpplexer/cpp_lex_interface_generator.hpp
==============================================================================
--- trunk/boost/wave/cpplexer/cpp_lex_interface_generator.hpp	(original)
+++ trunk/boost/wave/cpplexer/cpp_lex_interface_generator.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -17,6 +17,7 @@
 #include <boost/wave/util/file_position.hpp>
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/cpplexer/cpp_lex_interface.hpp>
+#include <boost/wave/cpplexer/cpp_lex_token.hpp>      // lex_token 
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
Modified: trunk/boost/wave/cpplexer/re2clex/cpp_re.hpp
==============================================================================
--- trunk/boost/wave/cpplexer/re2clex/cpp_re.hpp	(original)
+++ trunk/boost/wave/cpplexer/re2clex/cpp_re.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -33,6 +33,8 @@
 namespace cpplexer {
 namespace re2clex {
 
+struct Scanner; 
+
 ///////////////////////////////////////////////////////////////////////////////
 //  The scanner function to call whenever a new token is requested
 BOOST_WAVE_DECL boost::wave::token_id scan(Scanner *s);
Modified: trunk/boost/wave/grammars/cpp_expression_value.hpp
==============================================================================
--- trunk/boost/wave/grammars/cpp_expression_value.hpp	(original)
+++ trunk/boost/wave/grammars/cpp_expression_value.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -16,6 +16,7 @@
 #endif // defined(BOOST_SPIRIT_DEBUG)
 
 #include <boost/wave/wave_config.hpp>
+#include <boost/wave/grammars/cpp_value_error.hpp> // value_error
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -185,8 +186,8 @@
             case is_bool:
                 {
                     int_literal_type result = value.i + as_long(rhs); 
-                    if (rhs.value.i > 0L && value.i > result || 
-                        rhs.value.i < 0L && value.i < result)
+                    if ((rhs.value.i > 0L && value.i > result) || 
+                        (rhs.value.i < 0L && value.i < result))
                     {
                         valid = error_integer_overflow;
                     }
@@ -199,8 +200,8 @@
             case is_int:
                 {
                     int_literal_type result = value.i + rhs.value.i;
-                    if (rhs.value.i > 0L && value.i > result || 
-                        rhs.value.i < 0L && value.i < result)
+                    if ((rhs.value.i > 0L && value.i > result) || 
+                        (rhs.value.i < 0L && value.i < result))
                     {
                         valid = error_integer_overflow;
                     }
@@ -252,8 +253,8 @@
             case is_bool:
                 {
                     int_literal_type result = value.i - as_long(rhs); 
-                    if (rhs.value.i > 0L && result > value.i || 
-                        rhs.value.i < 0L && result < value.i)
+                    if ((rhs.value.i > 0L && result > value.i) || 
+                        (rhs.value.i < 0L && result < value.i))
                     {
                         valid = error_integer_overflow;
                     }
@@ -266,8 +267,8 @@
             case is_int:
                 {
                     int_literal_type result = value.i - rhs.value.i;
-                    if (rhs.value.i > 0L && result > value.i || 
-                        rhs.value.i < 0L && result < value.i)
+                    if ((rhs.value.i > 0L && result > value.i) || 
+                        (rhs.value.i < 0L && result < value.i))
                     {
                         valid = error_integer_overflow;
                     }
@@ -310,8 +311,8 @@
             case is_int:
                 {
                     uint_literal_type result = value.ui - rhs.value.i;
-                    if (rhs.value.i > 0L && result > value.ui || 
-                        rhs.value.i < 0L && result < value.ui)
+                    if ((rhs.value.i > 0L && result > value.ui) || 
+                        (rhs.value.i < 0L && result < value.ui))
                     {
                         valid = error_integer_overflow;
                     }
Modified: trunk/boost/wave/util/cpp_macromap_predef.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_macromap_predef.hpp	(original)
+++ trunk/boost/wave/util/cpp_macromap_predef.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -19,6 +19,7 @@
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/wave_config_constant.hpp>
 #include <boost/wave/token_ids.hpp>
+#include <boost/wave/util/time_conversion_helper.hpp> // time_conversion_helper 
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
Modified: trunk/boost/wave/util/cpp_macromap_utils.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_macromap_utils.hpp	(original)
+++ trunk/boost/wave/util/cpp_macromap_utils.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -17,6 +17,7 @@
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/token_ids.hpp>
+#include <boost/wave/util/unput_queue_iterator.hpp> 
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -420,8 +421,6 @@
 inline bool
 is_whitespace_only (ContainerT const &argument)
 {
-    using namespace cpplexer;
-    
     typename ContainerT::const_iterator end = argument.end();
     for (typename ContainerT::const_iterator it = argument.begin();
           it != end; ++it)
Modified: trunk/boost/wave/util/insert_whitespace_detection.hpp
==============================================================================
--- trunk/boost/wave/util/insert_whitespace_detection.hpp	(original)
+++ trunk/boost/wave/util/insert_whitespace_detection.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -84,7 +84,7 @@
     }
 // T_INTLIT
     inline bool 
-    handle_intlit(boost::wave::token_id prev, boost::wave::token_id before)
+    handle_intlit(boost::wave::token_id prev, boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch (static_cast<unsigned int>(prev)) {
@@ -101,7 +101,7 @@
 // T_FLOATLIT
     inline bool 
     handle_floatlit(boost::wave::token_id prev, 
-        boost::wave::token_id before)
+        boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch (static_cast<unsigned int>(prev)) {
@@ -118,7 +118,7 @@
 // <% T_LEFTBRACE
     inline bool 
     handle_alt_leftbrace(boost::wave::token_id prev, 
-        boost::wave::token_id before)
+        boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch (static_cast<unsigned int>(prev)) {
@@ -131,7 +131,7 @@
 // <: T_LEFTBRACKET
     inline bool 
     handle_alt_leftbracket(boost::wave::token_id prev, 
-        boost::wave::token_id before)
+        boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch (static_cast<unsigned int>(prev)) {
@@ -144,7 +144,7 @@
 // T_FIXEDPOINTLIT
     inline bool 
     handle_fixedpointlit(boost::wave::token_id prev, 
-        boost::wave::token_id before)
+        boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch (static_cast<unsigned int>(prev)) {
@@ -174,7 +174,7 @@
 // T_QUESTION_MARK
     inline bool 
     handle_questionmark(boost::wave::token_id prev, 
-        boost::wave::token_id before)
+        boost::wave::token_id /*before*/)
     {
         using namespace boost::wave;
         switch(static_cast<unsigned int>(prev)) {
Modified: trunk/boost/wave/util/symbol_table.hpp
==============================================================================
--- trunk/boost/wave/util/symbol_table.hpp	(original)
+++ trunk/boost/wave/util/symbol_table.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -14,6 +14,8 @@
 #include <map>
 
 #include <boost/wave/wave_config.hpp>
+#include <boost/shared_ptr.hpp> 
+
 #if BOOST_WAVE_SERIALIZATION != 0
 #include <boost/serialization/serialization.hpp>
 #include <boost/serialization/map.hpp>
Modified: trunk/boost/wave/util/time_conversion_helper.hpp
==============================================================================
--- trunk/boost/wave/util/time_conversion_helper.hpp	(original)
+++ trunk/boost/wave/util/time_conversion_helper.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -12,6 +12,7 @@
 #define TIME_CONVERSION_HELPER_HPP_DA97E389_1797_43BA_82AE_B071064B3EF4_INCLUDED
 
 #include <ctime>
+#include <cstring>
 
 #include <boost/config.hpp>
 #include <boost/spirit/core.hpp>
Modified: trunk/boost/wave/util/unput_queue_iterator.hpp
==============================================================================
--- trunk/boost/wave/util/unput_queue_iterator.hpp	(original)
+++ trunk/boost/wave/util/unput_queue_iterator.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -18,6 +18,7 @@
 #include <boost/iterator_adaptors.hpp>
 
 #include <boost/wave/wave_config.hpp>
+#include <boost/wave/token_ids.hpp>     // token_id 
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -416,10 +417,7 @@
     inline boost::wave::token_id 
     skip_whitespace(IteratorT &first, IteratorT const &last)
     {
-        using namespace cpplexer;
-        
-    token_id id = next_token<IteratorT>::peek(first, last, false);
-
+        token_id id = next_token<IteratorT>::peek(first, last, false);
         if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
             do {
                 ++first;
@@ -434,11 +432,9 @@
     inline boost::wave::token_id 
     skip_whitespace(IteratorT &first, IteratorT const &last, ContainerT &queue)
     {
-        using namespace cpplexer;
         queue.push_back (*first);       // queue up the current token
         
-    token_id id = next_token<IteratorT>::peek(first, last, false);
-
+        token_id id = next_token<IteratorT>::peek(first, last, false);
         if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
             do {
                 queue.push_back(*++first);  // queue up the next whitespace 
Modified: trunk/boost/wave/wave_config.hpp
==============================================================================
--- trunk/boost/wave/wave_config.hpp	(original)
+++ trunk/boost/wave/wave_config.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -347,7 +347,7 @@
 //  import as a keyword (T_IMPORT token id)
 //
 #if !defined(BOOST_WAVE_SUPPORT_IMPORT_KEYWORD)
-#define BOOST_WAVE_SUPPORT_IMPORT_KEYWORD  0
+#define BOOST_WAVE_SUPPORT_IMPORT_KEYWORD 0
 #endif
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -404,6 +404,7 @@
 #define PHOENIX_LIMIT 6
 #endif
 #if PHOENIX_LIMIT < 6
+// boost/spirit/attribute.hpp sets PHOENIX_LIMIT to 3! 
 #error "Boost.Wave: the constant PHOENIX_LIMIT must be at least defined to 4" \
        " to compile the library."
 #endif
Modified: trunk/boost/wave/whitespace_handling.hpp
==============================================================================
--- trunk/boost/wave/whitespace_handling.hpp	(original)
+++ trunk/boost/wave/whitespace_handling.hpp	2007-12-02 12:18:54 EST (Sun, 02 Dec 2007)
@@ -16,6 +16,7 @@
 #include <boost/wave/wave_config.hpp>   
 #include <boost/wave/token_ids.hpp>   
 #include <boost/wave/preprocessing_hooks.hpp>
+#include <boost/wave/language_support.hpp>
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS