$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r69195 - trunk/boost/wave/util
From: hartmut.kaiser_at_[hidden]
Date: 2011-02-22 20:30:14
Author: hkaiser
Date: 2011-02-22 20:30:13 EST (Tue, 22 Feb 2011)
New Revision: 69195
URL: http://svn.boost.org/trac/boost/changeset/69195
Log:
Wave: Fixed whitespace handling
Text files modified: 
   trunk/boost/wave/util/cpp_macromap_utils.hpp |    50 +++++++++++++++++++++------------------ 
   1 files changed, 27 insertions(+), 23 deletions(-)
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	2011-02-22 20:30:13 EST (Tue, 22 Feb 2011)
@@ -285,7 +285,8 @@
     typename ContainerT::iterator it = replacement_list.begin();
 
         while (it != end && IS_CATEGORY(*it, WhiteSpaceTokenType)) { 
-            if (T_PLACEHOLDER != token_id(*it)) {
+            token_id id(*it);
+            if (T_PLACEHOLDER != id && T_PLACEMARKER != id) {
                 typename ContainerT::iterator next = it;
                 ++next;
                 replacement_list.erase(it);
@@ -309,7 +310,8 @@
     typename ContainerT::iterator it = rit.base();
 
         while (it != end && IS_CATEGORY(*it, WhiteSpaceTokenType)) { 
-            if (T_PLACEHOLDER != token_id(*it)) {
+            token_id id(*it);
+            if (T_PLACEHOLDER != id && T_PLACEMARKER != id) {
                 typename ContainerT::iterator next = it;
                 ++next;
                 replacement_list.erase(it);
@@ -324,6 +326,25 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
+//  Tests, whether the given token sequence consists out of whitespace only
+//
+///////////////////////////////////////////////////////////////////////////////
+template <typename ContainerT>
+inline bool
+is_whitespace_only (ContainerT const &argument)
+{
+    typename ContainerT::const_iterator end = argument.end();
+    for (typename ContainerT::const_iterator it = argument.begin();
+          it != end; ++it)
+    {
+        if (!IS_CATEGORY(*it, WhiteSpaceTokenType))
+            return false;
+    }
+    return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
 //  Remove all placeholder tokens from the given token sequence
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -339,7 +360,8 @@
     typename ContainerT::iterator it = replacement_list.begin();
 
         while (it != end) {
-            if (T_PLACEHOLDER == token_id(*it)) {
+            token_id id(*it);
+            if (T_PLACEHOLDER == id || T_PLACEMARKER == id) {
                 typename ContainerT::iterator next = it;
                 ++next;
                 replacement_list.erase(it);
@@ -351,7 +373,8 @@
         }
 
     // remove all 'new' leading and trailing whitespace 
-        trim_replacement_list(replacement_list);
+        if (is_whitespace_only(replacement_list))
+            trim_replacement_list(replacement_list);
     }
 }
 
@@ -408,25 +431,6 @@
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-//
-//  Tests, whether the given token sequence consists out of whitespace only
-//
-///////////////////////////////////////////////////////////////////////////////
-template <typename ContainerT>
-inline bool
-is_whitespace_only (ContainerT const &argument)
-{
-    typename ContainerT::const_iterator end = argument.end();
-    for (typename ContainerT::const_iterator it = argument.begin();
-          it != end; ++it)
-    {
-        if (!IS_CATEGORY(*it, WhiteSpaceTokenType))
-            return false;
-    }
-    return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
 // call 'skipped_token' preprocessing hook
 template <typename ContextT>
 void call_skipped_token_hook(ContextT& ctx,