$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r61335 - in trunk/libs/spirit/example/scheme: input support
From: joel_at_[hidden]
Date: 2010-04-17 08:16:54
Author: djowel
Date: 2010-04-17 08:16:53 EDT (Sat, 17 Apr 2010)
New Revision: 61335
URL: http://svn.boost.org/trac/boost/changeset/61335
Log:
installing the line_pos_iterator
Text files modified: 
   trunk/libs/spirit/example/scheme/input/parse_sexpr_impl.hpp    |    46 +++++++++++++++++++++++++++++---------- 
   trunk/libs/spirit/example/scheme/support/line_pos_iterator.hpp |     9 ++++---                                 
   2 files changed, 39 insertions(+), 16 deletions(-)
Modified: trunk/libs/spirit/example/scheme/input/parse_sexpr_impl.hpp
==============================================================================
--- trunk/libs/spirit/example/scheme/input/parse_sexpr_impl.hpp	(original)
+++ trunk/libs/spirit/example/scheme/input/parse_sexpr_impl.hpp	2010-04-17 08:16:53 EDT (Sat, 17 Apr 2010)
@@ -25,9 +25,15 @@
         // no white space skipping in the stream!
         is.unsetf(std::ios::skipws);
 
-        typedef boost::spirit::basic_istream_iterator<Char> iterator_type;
-        iterator_type first(is);
-        iterator_type last;
+        typedef
+            boost::spirit::basic_istream_iterator<Char>
+        stream_iterator_type;
+        stream_iterator_type sfirst(is);
+        stream_iterator_type slast;
+
+        typedef line_pos_iterator<stream_iterator_type> iterator_type;
+        iterator_type first(sfirst);
+        iterator_type last(slast);
 
         scheme::input::sexpr<iterator_type> p;
         scheme::input::sexpr_white_space<iterator_type> ws;
@@ -43,9 +49,15 @@
         // no white space skipping in the stream!
         is.unsetf(std::ios::skipws);
 
-        typedef boost::spirit::basic_istream_iterator<Char> iterator_type;
-        iterator_type first(is);
-        iterator_type last;
+        typedef
+            boost::spirit::basic_istream_iterator<Char>
+        stream_iterator_type;
+        stream_iterator_type sfirst(is);
+        stream_iterator_type slast;
+
+        typedef line_pos_iterator<stream_iterator_type> iterator_type;
+        iterator_type first(sfirst);
+        iterator_type last(slast);
 
         scheme::input::sexpr<iterator_type> p;
         scheme::input::sexpr_white_space<iterator_type> ws;
@@ -59,35 +71,45 @@
     typename boost::disable_if<boost::is_base_of<std::ios_base, Range>, bool>::type
     parse_sexpr(Range const& rng, utree& result)
     {
-        typedef typename Range::const_iterator iterator_type;
+        typedef
+            line_pos_iterator<typename Range::const_iterator>
+        iterator_type;
 
         scheme::input::sexpr<iterator_type> p;
         scheme::input::sexpr_white_space<iterator_type> ws;
 
+        iterator_type first(rng.begin());
+        iterator_type last(rng.end());
+
         using boost::spirit::qi::phrase_parse;
-        return phrase_parse(rng.begin(), rng.end(), p, ws, result);
+        return phrase_parse(first, last, p, ws, result);
     }
 
     template <typename Range>
     typename boost::disable_if<boost::is_base_of<std::ios_base, Range>, bool>::type
     parse_sexpr_list(Range const& rng, utree& result)
     {
-        typedef typename Range::const_iterator iterator_type;
+        typedef
+            line_pos_iterator<typename Range::const_iterator>
+        iterator_type;
 
         scheme::input::sexpr<iterator_type> p;
         scheme::input::sexpr_white_space<iterator_type> ws;
 
+        iterator_type first(rng.begin());
+        iterator_type last(rng.end());
+
         using boost::spirit::qi::phrase_parse;
-        return phrase_parse(rng.begin(), rng.end(), +p, ws, result);
+        return phrase_parse(first, last, +p, ws, result);
     }
 
     ///////////////////////////////////////////////////////////////////////////
-    inline bool parse_sexpr(utree const& in, utree& result)
+    bool parse_sexpr(utree const& in, utree& result)
     {
         return parse_sexpr(in.as<utf8_string_range>(), result);
     }
 
-    inline bool parse_sexpr_list(utree const& in, utree& result)
+    bool parse_sexpr_list(utree const& in, utree& result)
     {
         return parse_sexpr_list(in.as<utf8_string_range>(), result);
     }
Modified: trunk/libs/spirit/example/scheme/support/line_pos_iterator.hpp
==============================================================================
--- trunk/libs/spirit/example/scheme/support/line_pos_iterator.hpp	(original)
+++ trunk/libs/spirit/example/scheme/support/line_pos_iterator.hpp	2010-04-17 08:16:53 EDT (Sat, 17 Apr 2010)
@@ -32,11 +32,11 @@
     public:
 
         line_pos_iterator()
-          : line_pos_iterator::iterator_adaptor_()
+          : line_pos_iterator::iterator_adaptor_(),
             line(0), prev(0) {}
 
         explicit line_pos_iterator(Iterator base)
-          : node_iter::iterator_adaptor_(base)
+          : line_pos_iterator::iterator_adaptor_(base),
             line(0), prev(0) {}
 
         std::size_t position() const
@@ -49,7 +49,8 @@
         friend class boost::iterator_core_access;
         void increment()
         {
-            typename Iterator::reference ref = *(this->base());
+            typename std::iterator_traits<Iterator>::reference
+                ref = *(this->base());
             switch (ref)
             {
                 case '\r':
@@ -67,7 +68,7 @@
         }
 
         std::size_t line;
-        typename Iterator::value_type prev;
+        typename std::iterator_traits<Iterator>::value_type prev;
     };
 
     ///////////////////////////////////////////////////////////////////////////