$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76454 - in sandbox/coerce/boost/coerce: . detail
From: vexocide_at_[hidden]
Date: 2012-01-13 10:49:23
Author: vexocide
Date: 2012-01-13 10:49:22 EST (Fri, 13 Jan 2012)
New Revision: 76454
URL: http://svn.boost.org/trac/boost/changeset/76454
Log:
Removed string_traits::length
Text files modified: 
   sandbox/coerce/boost/coerce/detail/karma.hpp |    11 +++--------                             
   sandbox/coerce/boost/coerce/detail/qi.hpp    |    17 ++++++-----------                       
   sandbox/coerce/boost/coerce/string.hpp       |    28 +++++-----------------------            
   3 files changed, 14 insertions(+), 42 deletions(-)
Modified: sandbox/coerce/boost/coerce/detail/karma.hpp
==============================================================================
--- sandbox/coerce/boost/coerce/detail/karma.hpp	(original)
+++ sandbox/coerce/boost/coerce/detail/karma.hpp	2012-01-13 10:49:22 EST (Fri, 13 Jan 2012)
@@ -1,4 +1,4 @@
-//           Copyright Jeroen Habraken 2010 - 2011.
+//           Copyright Jeroen Habraken 2010 - 2012.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file ../../../LICENSE_1_0.txt or copy at
@@ -31,17 +31,12 @@
             detail::call_reserve(
                 target, traits::reserve_size<Source, Tag>::call(source, tag));
 
-            typename sequence_traits::iterator iterator =
-                sequence_traits::back_inserter(target);
-
             typename Tag::template generator<
                 typename sequence_traits::iterator, Target, Source
             > generator(tag);
 
-            bool result = spirit::karma::generate(
-                iterator, generator, source);
-
-            return result; 
+            return spirit::karma::generate(
+                sequence_traits::back_inserter(target), generator, source);
         }
     };
 
Modified: sandbox/coerce/boost/coerce/detail/qi.hpp
==============================================================================
--- sandbox/coerce/boost/coerce/detail/qi.hpp	(original)
+++ sandbox/coerce/boost/coerce/detail/qi.hpp	2012-01-13 10:49:22 EST (Fri, 13 Jan 2012)
@@ -1,4 +1,4 @@
-//           Copyright Jeroen Habraken 2010 - 2011.
+//           Copyright Jeroen Habraken 2010 - 2012.
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file ../../../LICENSE_1_0.txt or copy at
@@ -28,25 +28,20 @@
         call(Target & target, Source const & source, Tag const & tag) {
             typedef traits::string_traits<Source> string_traits;
 
-            typename string_traits::size_type
-                length = string_traits::length(source);
-            detail::call_reserve(target, length);
-
             typename string_traits::const_iterator
                 begin = string_traits::begin(source), iterator = begin;
 
+            typename string_traits::const_iterator
+                end = string_traits::end(source);
+
             typename Tag::template parser<
                 typename string_traits::const_iterator, Target, Source
             > parser(tag);
 
             bool result = spirit::qi::parse(
-                iterator, string_traits::end(source), parser, target);
-
-            if (static_cast<typename string_traits::size_type>(iterator - begin) != length) {
-                return false;
-            }
+                iterator, end, parser, target);
 
-            return result;
+            return result && (iterator == end);
         }
     };
 
Modified: sandbox/coerce/boost/coerce/string.hpp
==============================================================================
--- sandbox/coerce/boost/coerce/string.hpp	(original)
+++ sandbox/coerce/boost/coerce/string.hpp	2012-01-13 10:49:22 EST (Fri, 13 Jan 2012)
@@ -1,4 +1,4 @@
-//              Copyright Jeroen Habraken 2011.
+//           Copyright Jeroen Habraken 2011 - 2012.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //  (See accompanying file ../../LICENSE_1_0.txt or copy at
@@ -23,7 +23,6 @@
     template <typename T>
     struct string_traits_impl<T *> {
         typedef T const * const_iterator;
-        typedef std::size_t size_type;
 
         static inline const_iterator
         begin(T * const value) {
@@ -32,21 +31,15 @@
 
         static inline const_iterator
         end(T * const value) {
-            return value + length(value) + 1;
-        }
-
-        static inline size_type
-        length(T * const value) {
-            return std::char_traits<
-                    typename remove_const<T>::type
-                >::length(value);
+            return value + std::char_traits<
+                               typename remove_const<T>::type
+                           >::length(value);
         }
     };
 
     template <typename T, std::size_t N>
     struct string_traits_impl<T [N]> {
         typedef T const * const_iterator;
-        typedef std::size_t size_type;
 
         static inline const_iterator
         begin(T const(& value)[N]) {
@@ -55,12 +48,7 @@
 
         static inline const_iterator
         end(T const(& value)[N]) {
-            return value + length(value);
-        }
-
-        static inline size_type
-        length(T const(& value)[N]) {
-            return value[N - 1] == 0 ? N - 1 : N;
+            return value + (value[N - 1] == 0 ? N - 1 : N);
         }
     };
 
@@ -69,7 +57,6 @@
         typedef std::basic_string<T, Traits, Allocator> type;
 
         typedef typename type::const_iterator const_iterator;
-        typedef typename type::size_type size_type;
 
         static inline const_iterator
         begin(type const & value) {
@@ -80,11 +67,6 @@
         end(type const & value) {
             return value.end();
         }
-
-        static inline size_type
-        length(type const & value) {
-            return value.length();
-        }
     };
 
     template <typename T, typename Enable = void>