Update of /cvsroot/boost/boost/boost/algorithm/string
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv418

Modified Files:
        case_conv.hpp classification.hpp find.hpp find_format.hpp 
        find_iterator.hpp finder.hpp formatter.hpp iter_find.hpp 
        join.hpp predicate.hpp regex.hpp trim.hpp 
Log Message:
adapting to new range interface



Index: case_conv.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/case_conv.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- case_conv.hpp       1 Jul 2007 13:29:56 -0000       1.13
+++ case_conv.hpp       1 Jul 2007 22:23:55 -0000       1.14
@@ -59,7 +59,7 @@
         {
             return ::boost::algorithm::detail::transform_range_copy( 
                Output,
-                          as_literal(Input),
+               as_literal(Input),
                ::boost::algorithm::detail::to_lowerF<
                     typename range_value<RangeT>::type >(Loc));
         }
@@ -73,10 +73,10 @@
             const SequenceT& Input, 
             const std::locale& Loc=std::locale())
         {
-                       return 
::boost::algorithm::detail::transform_range_copy<SequenceT>(
-                               Input,
+            return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
+                Input,
                 ::boost::algorithm::detail::to_lowerF<
-                                       typename range_value<SequenceT>::type 
>(Loc));
+                    typename range_value<SequenceT>::type >(Loc));
         }
 
         //! Convert to lower case
@@ -92,8 +92,8 @@
             WritableRangeT& Input, 
             const std::locale& Loc=std::locale())
         {
-                       ::boost::algorithm::detail::transform_range(
-                               as_literal(Input),
+            ::boost::algorithm::detail::transform_range(
+                as_literal(Input),
                 ::boost::algorithm::detail::to_lowerF<
                     typename range_value<WritableRangeT>::type >(Loc));
         }
@@ -124,7 +124,7 @@
         {
             return ::boost::algorithm::detail::transform_range_copy( 
                Output,
-                          as_literal(Input),
+               as_literal(Input),
                ::boost::algorithm::detail::to_upperF<
                     typename range_value<RangeT>::type >(Loc));
         }
@@ -138,10 +138,10 @@
             const SequenceT& Input, 
             const std::locale& Loc=std::locale())
         {
-                       return 
::boost::algorithm::detail::transform_range_copy<SequenceT>(
-                               Input,
+            return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
+                Input,
                 ::boost::algorithm::detail::to_upperF<
-                                       typename range_value<SequenceT>::type 
>(Loc));
+                    typename range_value<SequenceT>::type >(Loc));
         }
 
         //! Convert to upper case
@@ -157,8 +157,8 @@
             WritableRangeT& Input, 
             const std::locale& Loc=std::locale())
         {
-                       ::boost::algorithm::detail::transform_range(
-                               as_literal(Input),
+            ::boost::algorithm::detail::transform_range(
+                as_literal(Input),
                 ::boost::algorithm::detail::to_upperF<
                     typename range_value<WritableRangeT>::type >(Loc));
         }

Index: classification.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/classification.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- classification.hpp  27 Jul 2006 10:27:33 -0000      1.8
+++ classification.hpp  1 Jul 2007 22:23:55 -0000       1.9
@@ -14,9 +14,11 @@
 #include <algorithm>
 #include <locale>
 #include <boost/range/value_type.hpp>
+#include <boost/range/as_literal.hpp>
 #include <boost/algorithm/string/detail/classification.hpp>
 #include <boost/algorithm/string/predicate_facade.hpp>
 
+
 /*! \file
     Classification predicates are included in the library to give 
     some more convenience when using algorithms like \c trim() and \c all(). 
@@ -201,7 +203,7 @@
         is_any_of( const RangeT& Set )
         {
             return detail::is_any_ofF<
-                BOOST_STRING_TYPENAME range_value<RangeT>::type>(Set); 
+                BOOST_STRING_TYPENAME 
range_value<RangeT>::type>(as_literal(Set)); 
         }
 
         //! is_from_range predicate

Index: find.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/find.hpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- find.hpp    27 Jul 2006 10:27:33 -0000      1.11
+++ find.hpp    1 Jul 2007 22:23:55 -0000       1.12
@@ -19,6 +19,7 @@
 #include <boost/range/iterator.hpp>
 #include <boost/range/const_iterator.hpp>
 #include <boost/range/result_iterator.hpp>
+#include <boost/range/as_literal.hpp>
 
 #include <boost/algorithm/string/finder.hpp>
 #include <boost/algorithm/string/compare.hpp>
@@ -52,16 +53,18 @@
             BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
         find( 
             RangeT& Input, 
-            FinderT Finder)
+            const FinderT& Finder)
         {
-            return Finder(begin(Input),end(Input));
+            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> 
lit_input(as_literal(Input));
+
+            return Finder(begin(lit_input),end(lit_input));
         }
 
 //  find_first  -----------------------------------------------//
 
         //! Find first algorithm
         /*!
-            Search for the first occurence of the substring in the input. 
+            Search for the first occurrence of the substring in the input. 
             
             \param Input A string which will be searched.
             \param Search A substring to be searched for.
@@ -80,8 +83,7 @@
             Range1T& Input, 
             const Range2T& Search)
         {
-            return first_finder(Search)(
-                begin(Input),end(Input));
+            return find(Input, first_finder(Search));
         }
 
         //! Find first algorithm ( case insensitive )
@@ -108,15 +110,14 @@
             const Range2T& Search,
             const std::locale& Loc=std::locale())
         {
-            return first_finder(Search,is_iequal(Loc))(
-                begin(Input),end(Input));
+            return find(Input, first_finder(Search,is_iequal(Loc)));
         }
 
 //  find_last  -----------------------------------------------//
 
         //! Find last algorithm
         /*!
-            Search for the last occurence of the substring in the input. 
+            Search for the last occurrence of the substring in the input. 
             
             \param Input A string which will be searched.
             \param Search A substring to be searched for.
@@ -135,8 +136,7 @@
             Range1T& Input, 
             const Range2T& Search)
         {
-            return last_finder(Search)(
-                begin(Input),end(Input));
+            return find(Input, last_finder(Search));
         }
 
         //! Find last algorithm ( case insensitive )
@@ -163,15 +163,14 @@
             const Range2T& Search,
             const std::locale& Loc=std::locale())
         {
-            return last_finder(Search, is_iequal(Loc))(
-                begin(Input),end(Input));
+            return find(Input, last_finder(Search, is_iequal(Loc)));
         }
 
 //  find_nth 
----------------------------------------------------------------------//
 
         //! Find n-th algorithm 
         /*!
-            Search for the n-th (zero-indexed) occurence of the substring in 
the 
+            Search for the n-th (zero-indexed) occurrence of the substring in 
the 
             input.         
             
             \param Input A string which will be searched.
@@ -192,8 +191,7 @@
             const Range2T& Search,
             int Nth)
         {
-            return nth_finder(Search,Nth)(
-                begin(Input),end(Input));
+            return find(Input, nth_finder(Search,Nth));
         }
 
         //! Find n-th algorithm ( case insensitive ).
@@ -224,8 +222,7 @@
             int Nth,
             const std::locale& Loc=std::locale())
         {
-            return nth_finder(Search,Nth,is_iequal(Loc))(
-                begin(Input),end(Input));
+            return find(Input, nth_finder(Search,Nth,is_iequal(Loc)));
         }
 
 //  find_head 
----------------------------------------------------------------------//
@@ -255,8 +252,7 @@
             RangeT& Input, 
             int N)
         {
-            return head_finder(N)(
-                begin(Input),end(Input));      
+            return find(Input, head_finder(N));
         }
 
 //  find_tail 
----------------------------------------------------------------------//
@@ -287,8 +283,7 @@
             RangeT& Input, 
             int N)
         {
-            return tail_finder(N)(
-                begin(Input),end(Input));      
+            return find(Input, tail_finder(N));
         }
 
 //  find_token 
--------------------------------------------------------------------//
@@ -318,8 +313,7 @@
             PredicateT Pred,
             token_compress_mode_type eCompress=token_compress_off)
         {
-            return token_finder(Pred, eCompress)(
-                begin(Input),end(Input));       
+            return find(Input, token_finder(Pred, eCompress));
         }
 
     } // namespace algorithm

Index: find_format.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/find_format.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- find_format.hpp     27 Jul 2006 10:27:33 -0000      1.9
+++ find_format.hpp     1 Jul 2007 22:23:55 -0000       1.10
@@ -69,12 +69,13 @@
                     FormatterT,
                     FinderT,BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> >();
 
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
+
             return detail::find_format_copy_impl(
                 Output,
-                Input,
-                Finder,
+                lit_input,
                 Formatter,
-                Finder( begin(Input), end(Input) ) );
+                Finder( begin(lit_input), end(lit_input) ) );
         }
 
         //! Generic replace algorithm
@@ -101,7 +102,6 @@
 
             return detail::find_format_copy_impl(
                 Input,
-                Finder,
                 Formatter,
                 Finder(begin(Input), end(Input)));
         }
@@ -135,7 +135,6 @@
 
             detail::find_format_impl(
                 Input,
-                Finder,
                 Formatter,
                 Finder(begin(Input), end(Input)));
         }
@@ -180,12 +179,14 @@
                     FormatterT,
                     FinderT,BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> >();
 
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
+
             return detail::find_format_all_copy_impl(
                 Output,
-                Input,
+                lit_input,
                 Finder,
                 Formatter,
-                Finder(begin(Input), end(Input)));
+                Finder(begin(lit_input), end(lit_input)));
         }
 
         //! Generic replace all algorithm

Index: find_iterator.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/find_iterator.hpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- find_iterator.hpp   27 Jul 2006 10:27:33 -0000      1.15
+++ find_iterator.hpp   1 Jul 2007 22:23:55 -0000       1.16
@@ -19,6 +19,7 @@
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
 #include <boost/range/result_iterator.hpp>
+#include <boost/range/as_literal.hpp>
 
 #include <boost/algorithm/string/detail/find_iterator.hpp>
 
@@ -116,10 +117,12 @@
             find_iterator(
                     RangeT& Col,
                     FinderT Finder ) :
-                detail::find_iterator_base<IteratorT>(Finder,0),
-                m_Match(begin(Col),begin(Col)),
-                m_End(end(Col))
+                detail::find_iterator_base<IteratorT>(Finder,0)
             {
+                iterator_range<BOOST_STRING_TYPENAME 
range_iterator<RangeT>::type> lit_col(as_literal(Col));
+                m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
+                m_End=end(lit_col);
+
                 increment();
             }
 
@@ -188,7 +191,7 @@
             FinderT Finder)
         {
             return find_iterator<BOOST_STRING_TYPENAME 
range_result_iterator<RangeT>::type>(
-                begin(Collection), end(Collection), Finder);
+                Collection, Finder);
         }
 
 //  split iterator -----------------------------------------------//
@@ -280,11 +283,13 @@
                     RangeT& Col,
                     FinderT Finder ) :
                 detail::find_iterator_base<IteratorT>(Finder,0),
-                m_Match(begin(Col),begin(Col)),
-                m_Next(begin(Col)),
-                m_End(end(Col)),
                 m_bEof(false)
             {
+                iterator_range<BOOST_STRING_TYPENAME 
range_iterator<RangeT>::type> lit_col(as_literal(Col));
+                m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
+                m_Next=begin(lit_col);
+                m_End=end(lit_col);
+
                 increment();
             }
 
@@ -364,7 +369,7 @@
             FinderT Finder)
         {
             return split_iterator<BOOST_STRING_TYPENAME 
range_result_iterator<RangeT>::type>(
-                begin(Collection), end(Collection), Finder);
+                Collection, Finder);
         }
 
 

Index: finder.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/finder.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- finder.hpp  27 Jul 2006 10:27:33 -0000      1.8
+++ finder.hpp  1 Jul 2007 22:23:55 -0000       1.9
@@ -46,35 +46,35 @@
             \param Comp An element comparison predicate
             \return An instance of the \c first_finder object
         */
-        template<typename ContainerT>
+        template<typename RangeT>
         inline detail::first_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             is_equal>
-        first_finder( const ContainerT& Search )
+        first_finder( const RangeT& Search )
         {
             return 
                 detail::first_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    is_equal>( Search, is_equal() ) ;
+                        range_const_iterator<RangeT>::type,
+                    is_equal>( as_literal(Search), is_equal() ) ;
         }
 
         //! "First" finder
         /*!
             \overload
         */
-        template<typename ContainerT,typename PredicateT>
+        template<typename RangeT,typename PredicateT>
         inline detail::first_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             PredicateT>
         first_finder( 
-            const ContainerT& Search, PredicateT Comp )
+            const RangeT& Search, PredicateT Comp )
         {
             return 
                 detail::first_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    PredicateT>( Search, Comp );
+                        range_const_iterator<RangeT>::type,
+                    PredicateT>( as_literal(Search), Comp );
         }
 
         //! "Last" finder
@@ -87,33 +87,33 @@
             \param Comp An element comparison predicate
             \return An instance of the \c last_finder object
         */
-        template<typename ContainerT>
+        template<typename RangeT>
         inline detail::last_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             is_equal>
-        last_finder( const ContainerT& Search )
+        last_finder( const RangeT& Search )
         {
             return 
                 detail::last_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    is_equal>( Search, is_equal() );
+                        range_const_iterator<RangeT>::type,
+                    is_equal>( as_literal(Search), is_equal() );
         }
         //! "Last" finder
         /*!
             \overload
         */
-        template<typename ContainerT, typename PredicateT>
+        template<typename RangeT, typename PredicateT>
         inline detail::last_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             PredicateT>
-        last_finder( const ContainerT& Search, PredicateT Comp )
+        last_finder( const RangeT& Search, PredicateT Comp )
         {
             return 
                 detail::last_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    PredicateT>( Search, Comp ) ;
+                        range_const_iterator<RangeT>::type,
+                    PredicateT>( as_literal(Search), Comp ) ;
         }
 
         //! "Nth" finder
@@ -127,38 +127,38 @@
             \param Comp An element comparison predicate
             \return An instance of the \c nth_finder object
         */
-        template<typename ContainerT>
+        template<typename RangeT>
         inline detail::nth_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             is_equal>
         nth_finder( 
-            const ContainerT& Search, 
+            const RangeT& Search, 
             int Nth)
         {
             return 
                 detail::nth_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    is_equal>( Search, Nth, is_equal() ) ;
+                        range_const_iterator<RangeT>::type,
+                    is_equal>( as_literal(Search), Nth, is_equal() ) ;
         }
         //! "Nth" finder
         /*!
             \overload
         */
-        template<typename ContainerT, typename PredicateT>
+        template<typename RangeT, typename PredicateT>
         inline detail::nth_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
+            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
             PredicateT>
         nth_finder( 
-            const ContainerT& Search, 
+            const RangeT& Search, 
             int Nth, 
             PredicateT Comp )
         {
             return 
                 detail::nth_finderF<
                     BOOST_STRING_TYPENAME 
-                        range_const_iterator<ContainerT>::type,
-                    PredicateT>( Search, Nth, Comp );
+                        range_const_iterator<RangeT>::type,
+                    PredicateT>( as_literal(Search), Nth, Comp );
         }
 
         //! "Head" finder

Index: formatter.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/formatter.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- formatter.hpp       27 Jul 2006 10:27:33 -0000      1.6
+++ formatter.hpp       1 Jul 2007 22:23:55 -0000       1.7
@@ -14,6 +14,7 @@
 #include <boost/detail/iterator.hpp>
 #include <boost/range/value_type.hpp>
 #include <boost/range/iterator_range.hpp>
+#include <boost/range/as_literal.hpp>
 
 #include <boost/algorithm/string/detail/formatter.hpp>
 
@@ -42,10 +43,14 @@
             \return An instance of the \c const_formatter object.
         */
         template<typename RangeT>
-        inline detail::const_formatF<RangeT>
+        inline detail::const_formatF<
+            iterator_range<
+                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
         const_formatter(const RangeT& Format)
         {
-            return detail::const_formatF<RangeT>(Format);
+            return detail::const_formatF<
+                iterator_range<
+                    BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> 
>(as_literal(Format));
         }
 
         //! Identity formatter
@@ -56,10 +61,14 @@
             \return An instance of the \c identity_formatter object.
         */
         template<typename RangeT>
-        inline detail::identity_formatF<RangeT>
+        inline detail::identity_formatF<
+            iterator_range<
+                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
         identity_formatter()
         {
-            return detail::identity_formatF<RangeT>();
+            return detail::identity_formatF<
+                iterator_range<
+                    BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> 
>();
         }
 
         //! Empty formatter

Index: iter_find.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/iter_find.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- iter_find.hpp       27 Jul 2006 10:27:33 -0000      1.9
+++ iter_find.hpp       1 Jul 2007 22:23:55 -0000       1.10
@@ -21,6 +21,7 @@
 #include <boost/range/end.hpp>
 #include <boost/range/result_iterator.hpp>
 #include <boost/range/value_type.hpp>
+#include <boost/range/as_literal.hpp>
 
 #include <boost/algorithm/string/concept.hpp>
 #include <boost/algorithm/string/find_iterator.hpp>
@@ -77,6 +78,8 @@
                 FinderConcept<FinderT,
                 BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
 
+            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> 
lit_input(as_literal(Input));
+
             typedef BOOST_STRING_TYPENAME 
                 range_result_iterator<RangeT>::type input_iterator_type;
             typedef find_iterator<input_iterator_type> find_iterator_type;
@@ -85,14 +88,14 @@
                     range_value<SequenceSequenceT>::type,
                 input_iterator_type> copy_range_type;
             
-            input_iterator_type InputEnd=end(Input);
+            input_iterator_type InputEnd=end(lit_input);
 
             typedef transform_iterator<copy_range_type, find_iterator_type>
                 transform_iter_type;
     
             transform_iter_type itBegin=
                 make_transform_iterator( 
-                    find_iterator_type( begin(Input), InputEnd, Finder ),
+                    find_iterator_type( begin(lit_input), InputEnd, Finder ),
                     copy_range_type());
             
             transform_iter_type itEnd=
@@ -144,6 +147,8 @@
                 FinderConcept<FinderT,
                 BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
 
+            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> 
lit_input(as_literal(Input));
+
             typedef BOOST_STRING_TYPENAME 
                 range_result_iterator<RangeT>::type input_iterator_type;
             typedef split_iterator<input_iterator_type> find_iterator_type;
@@ -152,14 +157,14 @@
                     range_value<SequenceSequenceT>::type,
                 input_iterator_type> copy_range_type;
             
-            input_iterator_type InputEnd=end(Input);
+            input_iterator_type InputEnd=end(lit_input);
 
             typedef transform_iterator<copy_range_type, find_iterator_type>
                 transform_iter_type;
     
             transform_iter_type itBegin=
                 make_transform_iterator( 
-                    find_iterator_type( begin(Input), InputEnd, Finder ),
+                    find_iterator_type( begin(lit_input), InputEnd, Finder ),
                     copy_range_type() );
 
             transform_iter_type itEnd=

Index: join.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/join.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- join.hpp    27 Jul 2006 10:27:33 -0000      1.2
+++ join.hpp    1 Jul 2007 22:23:55 -0000       1.3
@@ -45,7 +45,7 @@
         inline typename range_value<SequenceSequenceT>::type 
         join(
             const SequenceSequenceT& Input,
-            Range1T& Separator)
+            const Range1T& Separator)
         {
             // Define working types
             typedef typename range_value<SequenceSequenceT>::type ResultT;
@@ -68,7 +68,7 @@
             for(;itBegin!=itEnd; ++itBegin)
             {
                 // Add separator
-                detail::insert(Result, end(Result), Separator);
+                detail::insert(Result, end(Result), as_literal(Separator));
                 // Add element
                 detail::insert(Result, end(Result), *itBegin);
             }
@@ -95,7 +95,7 @@
         inline typename range_value<SequenceSequenceT>::type 
         join_if(
             const SequenceSequenceT& Input,
-            Range1T& Separator,
+            const Range1T& Separator,
             PredicateT Pred)
         {
             // Define working types
@@ -123,7 +123,7 @@
                 if(Pred(*itBegin))
                 {
                     // Add separator
-                    detail::insert(Result, end(Result), Separator);
+                    detail::insert(Result, end(Result), as_literal(Separator));
                     // Add element
                     detail::insert(Result, end(Result), *itBegin);
                 }

Index: predicate.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/predicate.hpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- predicate.hpp       27 Jul 2006 10:27:33 -0000      1.14
+++ predicate.hpp       1 Jul 2007 22:23:55 -0000       1.15
@@ -16,6 +16,8 @@
 #include <boost/range/end.hpp>
 #include <boost/range/iterator.hpp>
 #include <boost/range/const_iterator.hpp>
+#include <boost/range/as_literal.hpp>
+#include <boost/range/iterator_range.hpp>
 
 #include <boost/algorithm/string/compare.hpp>
 #include <boost/algorithm/string/find.hpp>
@@ -57,16 +59,19 @@
             const Range2T& Test,
             PredicateT Comp)
         {
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
+
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<Range1T>::type Iterator1T;
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<Range2T>::type Iterator2T;
 
-            Iterator1T InputEnd=end(Input);
-            Iterator2T TestEnd=end(Test);
+            Iterator1T InputEnd=end(lit_input);
+            Iterator2T TestEnd=end(lit_test);
 
-            Iterator1T it=begin(Input);
-            Iterator2T pit=begin(Test);
+            Iterator1T it=begin(lit_input);
+            Iterator2T pit=begin(lit_test);
             for(;
                 it!=InputEnd && pit!=TestEnd;
                 ++it,++pit)
@@ -136,6 +141,9 @@
             const Range2T& Test,
             PredicateT Comp)
         {
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
+
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<Range1T>::type Iterator1T;
             typedef BOOST_STRING_TYPENAME boost::detail::
@@ -143,10 +151,10 @@
 
             return detail::
                 ends_with_iter_select( 
-                    begin(Input), 
-                    end(Input), 
-                    begin(Test), 
-                    end(Test), 
+                    begin(lit_input), 
+                    end(lit_input), 
+                    begin(lit_test), 
+                    end(lit_test), 
                     Comp,
                     category());
         }
@@ -207,14 +215,17 @@
             const Range2T& Test,
             PredicateT Comp)
         {
-            if (empty(Test))
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
+
+            if (empty(lit_test))
             {
                 // Empty range is contained always
                 return true;
             }
             
             // Use the temporary variable to make VACPP happy
-            bool bResult=(first_finder(Test,Comp)(begin(Input), end(Input)));
+            bool bResult=(first_finder(lit_test,Comp)(begin(lit_input), 
end(lit_input)));
             return bResult;
         }
 
@@ -275,16 +286,19 @@
             const Range2T& Test,
             PredicateT Comp)
         {
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
+
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<Range1T>::type Iterator1T;
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<Range2T>::type Iterator2T;
                 
-            Iterator1T InputEnd=end(Input);
-            Iterator2T TestEnd=end(Test);
+            Iterator1T InputEnd=end(lit_input);
+            Iterator2T TestEnd=end(lit_test);
 
-            Iterator1T it=begin(Input);
-            Iterator2T pit=begin(Test);
+            Iterator1T it=begin(lit_input);
+            Iterator2T pit=begin(lit_test);
             for(;
                 it!=InputEnd && pit!=TestEnd;
                 ++it,++pit)
@@ -358,11 +372,14 @@
             const Range2T& Arg2,
             PredicateT Pred)
         {
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range1T>::type> lit_arg1(as_literal(Arg1));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
+
             return std::lexicographical_compare(
-                begin(Arg1),
-                end(Arg1),
-                begin(Arg2),
-                end(Arg2),
+                begin(lit_arg1),
+                end(lit_arg1),
+                begin(lit_arg2),
+                end(lit_arg2),
                 Pred);
         }
 
@@ -375,12 +392,7 @@
             const Range1T& Arg1,
             const Range2T& Arg2)
         {
-            return std::lexicographical_compare(
-                begin(Arg1),
-                end(Arg1),
-                begin(Arg2),
-                end(Arg2),
-                is_less());
+            return lexicographical_compare(Arg1, Arg2, is_less());
         }
 
         //! Lexicographical compare predicate (case-insensitive)
@@ -394,6 +406,7 @@
 
              \param Arg1 First argument 
              \param Arg2 Second argument
+             \param Loc A locale used for case insensitive comparison
              \return The result of the test
 
              \note This function provides the strong exception-safety guarantee
@@ -401,14 +414,10 @@
         template<typename Range1T, typename Range2T>
         inline bool ilexicographical_compare(
             const Range1T& Arg1,
-            const Range2T& Arg2)
+            const Range2T& Arg2,
+            const std::locale& Loc=std::locale())
         {
-            return std::lexicographical_compare(
-                begin(Arg1),
-                end(Arg1),
-                begin(Arg2),
-                end(Arg2),
-                is_iless());
+            return lexicographical_compare(Arg1, Arg2, is_iless(Loc));
         }
         
 
@@ -430,11 +439,13 @@
             const RangeT& Input, 
             PredicateT Pred)
         {
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
+
             typedef BOOST_STRING_TYPENAME 
                 range_const_iterator<RangeT>::type Iterator1T;
 
-            Iterator1T InputEnd=end(Input);
-            for( Iterator1T It=begin(Input); It!=InputEnd; ++It)
+            Iterator1T InputEnd=end(lit_input);
+            for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
             {
                 if (!Pred(*It))
                     return false;

Index: regex.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/regex.hpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- regex.hpp   27 Jul 2006 10:27:33 -0000      1.12
+++ regex.hpp   1 Jul 2007 22:23:55 -0000       1.13
@@ -18,6 +18,7 @@
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
 #include <boost/range/result_iterator.hpp>
+#include <boost/range/as_literal.hpp>
 
 #include <boost/algorithm/string/find_format.hpp>
 #include <boost/algorithm/string/regex_find_format.hpp>
@@ -59,8 +60,10 @@
             const basic_regex<CharT, RegexTraitsT>& Rx,
             match_flag_type Flags=match_default )
         {
+            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> 
lit_input(as_literal(Input));
+
             return regex_finder(Rx,Flags)(
-                begin(Input), end(Input) );
+                begin(lit_input), end(lit_input) );
         }
 
 //  replace_regex 
--------------------------------------------------------------------//
@@ -503,7 +506,7 @@
         inline typename range_value<SequenceSequenceT>::type 
         join_if(
             const SequenceSequenceT& Input,
-            Range1T& Separator,
+            const Range1T& Separator,
             const basic_regex<CharT, RegexTraitsT>& Rx,
             match_flag_type Flags=match_default )
         {
@@ -536,7 +539,7 @@
                 if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
                 {
                     // Add separator
-                    detail::insert(Result, end(Result), Separator);
+                    detail::insert(Result, end(Result), as_literal(Separator));
                     // Add element
                     detail::insert(Result, end(Result), *itBegin);
                 }
@@ -571,7 +574,7 @@
         inline typename range_value<SequenceSequenceT>::type 
         join_if_regex(
             const SequenceSequenceT& Input,
-            Range1T& Separator,
+            const Range1T& Separator,
             const basic_regex<CharT, RegexTraitsT>& Rx,
             match_flag_type Flags=match_default )
         {
@@ -604,7 +607,7 @@
                 if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
                 {
                     // Add separator
-                    detail::insert(Result, end(Result), Separator);
+                    detail::insert(Result, end(Result), as_literal(Separator));
                     // Add element
                     detail::insert(Result, end(Result), *itBegin);
                 }

Index: trim.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/algorithm/string/trim.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- trim.hpp    1 Jul 2007 13:29:56 -0000       1.13
+++ trim.hpp    1 Jul 2007 22:23:55 -0000       1.14
@@ -63,7 +63,7 @@
             const RangeT& Input,
             PredicateT IsSpace)
         {
-                       iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
 
             std::copy( 
                 ::boost::algorithm::detail::trim_begin( 
@@ -171,9 +171,9 @@
             const RangeT& Input,
             PredicateT IsSpace )
         {
-                       iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
-                
-                       std::copy( 
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
+         
+            std::copy( 
                 begin(lit_range),
                 ::boost::algorithm::detail::trim_end( 
                     begin(lit_range), 
@@ -283,9 +283,9 @@
             const RangeT& Input,
             PredicateT IsSpace)
         {
-                       iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
+            iterator_range<BOOST_STRING_TYPENAME 
range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
 
-                       BOOST_STRING_TYPENAME 
+            BOOST_STRING_TYPENAME 
                 range_const_iterator<RangeT>::type TrimEnd=
                 ::boost::algorithm::detail::trim_end( 
                     begin(lit_range), 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to