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