Compare commits

...

20 Commits

Author SHA1 Message Date
ea460e8d70 Branch for development of boost.system related changes
[SVN r40931]
2007-11-08 14:20:16 +00:00
5b24f31486 merging changes from 1.34
[SVN r40698]
2007-11-02 21:00:08 +00:00
b25d6511b3 merging changes from 1.34
[SVN r40697]
2007-11-02 20:55:26 +00:00
1541a554f5 changed range_result_iterator to range_iterator
[SVN r40518]
2007-10-27 22:52:29 +00:00
7a97b3390e Added missing include.
[SVN r39586]
2007-09-28 07:19:29 +00:00
6e5a7497ae Added missing include.
[SVN r39519]
2007-09-25 08:46:31 +00:00
f0b8b60379 Update
[SVN r38522]
2007-08-08 19:24:04 +00:00
66019abb2f Update
[SVN r38521]
2007-08-08 19:23:38 +00:00
8758222006 Remove V1 Jamfiles
[SVN r38516]
2007-08-08 19:02:26 +00:00
4eef56761a find/split iterator tests added
[SVN r38126]
2007-07-01 22:24:29 +00:00
b94a3fbfba adapting to new range interface
[SVN r38125]
2007-07-01 22:23:55 +00:00
614cc2ebab adapting to new range interface
[SVN r38123]
2007-07-01 13:29:56 +00:00
869660ed14 adapted to the new range interface
[SVN r38122]
2007-07-01 13:12:57 +00:00
777f30780e Fix broken build of docs, it was missing a dependency to the doxygen docs.
[SVN r37466]
2007-04-17 17:19:25 +00:00
26aa37733b Fix a few more references to *.boosbook instead of *.xml generated files.
[SVN r37465]
2007-04-17 17:13:35 +00:00
f1e60579c2 documentation typo fixed
[SVN r36843]
2007-01-30 07:59:28 +00:00
389dd3c863 Add copyright, license
[SVN r35905]
2006-11-07 19:11:57 +00:00
f23f61ae9b License added to the xml doc files
[SVN r34895]
2006-08-16 07:17:49 +00:00
608112b112 boost guidelines (mainly from inspect tool: tabs, license reference text, etc.)
[SVN r34752]
2006-07-27 10:27:37 +00:00
b21b54dc4e Applying patch from Nicola Musatti
[SVN r33709]
2006-04-16 09:46:34 +00:00
64 changed files with 685 additions and 635 deletions

View File

@ -1,7 +1,7 @@
// (C) Copyright Herve Bronnimann 2004. // (C) Copyright Herve Bronnimann 2004.
// Use, modification and distribution are subject to the //
// Boost Software License, Version 1.0. (See accompanying file // Distributed under the Boost Software License, Version 1.0. (See accompanying
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/* /*
Revision history: Revision history:

View File

@ -1,7 +1,7 @@
// (C) Copyright Herve Bronnimann 2004. // (C) Copyright Herve Bronnimann 2004.
// Use, modification and distribution are subject to the //
// Boost Software License, Version 1.0. (See accompanying file // Distributed under the Boost Software License, Version 1.0. (See accompanying
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/* /*
Revision history: Revision history:

View File

@ -1,11 +1,12 @@
// Boost string_algo library string_algo.hpp header file ---------------------------// // Boost string_algo library string_algo.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004. Use, modification and // Copyright Pavol Droba 2002-2004.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ALGO_HPP #ifndef BOOST_STRING_ALGO_HPP
#define BOOST_STRING_ALGO_HPP #define BOOST_STRING_ALGO_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library case_conv.hpp header file ---------------------------// // Boost string_algo library case_conv.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CASE_CONV_HPP #ifndef BOOST_STRING_CASE_CONV_HPP
#define BOOST_STRING_CASE_CONV_HPP #define BOOST_STRING_CASE_CONV_HPP
@ -15,6 +16,7 @@
#include <locale> #include <locale>
#include <boost/iterator/transform_iterator.hpp> #include <boost/iterator/transform_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/value_type.hpp> #include <boost/range/value_type.hpp>
@ -55,11 +57,10 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return std::transform( return ::boost::algorithm::detail::transform_range_copy(
begin(Input), Output,
end(Input), as_literal(Input),
Output, ::boost::algorithm::detail::to_lowerF<
::boost::algorithm::detail::to_lowerF<
typename range_value<RangeT>::type >(Loc)); typename range_value<RangeT>::type >(Loc));
} }
@ -72,15 +73,10 @@ namespace boost {
const SequenceT& Input, const SequenceT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return SequenceT( return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
make_transform_iterator( Input,
begin(Input), ::boost::algorithm::detail::to_lowerF<
::boost::algorithm::detail::to_lowerF< typename range_value<SequenceT>::type >(Loc));
typename range_value<SequenceT>::type >(Loc)),
make_transform_iterator(
end(Input),
::boost::algorithm::detail::to_lowerF<
typename range_value<SequenceT>::type >(Loc)));
} }
//! Convert to lower case //! Convert to lower case
@ -96,10 +92,8 @@ namespace boost {
WritableRangeT& Input, WritableRangeT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
std::transform( ::boost::algorithm::detail::transform_range(
begin(Input), as_literal(Input),
end(Input),
begin(Input),
::boost::algorithm::detail::to_lowerF< ::boost::algorithm::detail::to_lowerF<
typename range_value<WritableRangeT>::type >(Loc)); typename range_value<WritableRangeT>::type >(Loc));
} }
@ -128,11 +122,10 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return std::transform( return ::boost::algorithm::detail::transform_range_copy(
begin(Input), Output,
end(Input), as_literal(Input),
Output, ::boost::algorithm::detail::to_upperF<
::boost::algorithm::detail::to_upperF<
typename range_value<RangeT>::type >(Loc)); typename range_value<RangeT>::type >(Loc));
} }
@ -145,16 +138,10 @@ namespace boost {
const SequenceT& Input, const SequenceT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return SequenceT( return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
make_transform_iterator( Input,
begin(Input), ::boost::algorithm::detail::to_upperF<
::boost::algorithm::detail::to_upperF< typename range_value<SequenceT>::type >(Loc));
typename range_value<SequenceT>::type >(Loc)),
make_transform_iterator(
end(Input),
::boost::algorithm::detail::to_upperF<
typename range_value<SequenceT>::type >(Loc)));
} }
//! Convert to upper case //! Convert to upper case
@ -170,10 +157,8 @@ namespace boost {
WritableRangeT& Input, WritableRangeT& Input,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
std::transform( ::boost::algorithm::detail::transform_range(
begin(Input), as_literal(Input),
end(Input),
begin(Input),
::boost::algorithm::detail::to_upperF< ::boost::algorithm::detail::to_upperF<
typename range_value<WritableRangeT>::type >(Loc)); typename range_value<WritableRangeT>::type >(Loc));
} }

View File

@ -1,11 +1,12 @@
// Boost string_algo library classification.hpp header file ---------------------------// // Boost string_algo library classification.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CLASSIFICATION_HPP #ifndef BOOST_STRING_CLASSIFICATION_HPP
#define BOOST_STRING_CLASSIFICATION_HPP #define BOOST_STRING_CLASSIFICATION_HPP
@ -13,9 +14,11 @@
#include <algorithm> #include <algorithm>
#include <locale> #include <locale>
#include <boost/range/value_type.hpp> #include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/classification.hpp> #include <boost/algorithm/string/detail/classification.hpp>
#include <boost/algorithm/string/predicate_facade.hpp> #include <boost/algorithm/string/predicate_facade.hpp>
/*! \file /*! \file
Classification predicates are included in the library to give Classification predicates are included in the library to give
some more convenience when using algorithms like \c trim() and \c all(). some more convenience when using algorithms like \c trim() and \c all().
@ -200,7 +203,7 @@ namespace boost {
is_any_of( const RangeT& Set ) is_any_of( const RangeT& Set )
{ {
return detail::is_any_ofF< 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 //! is_from_range predicate

View File

@ -1,11 +1,12 @@
// Boost string_algo library compare.hpp header file -------------------------// // Boost string_algo library compare.hpp header file -------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_COMPARE_HPP #ifndef BOOST_STRING_COMPARE_HPP
#define BOOST_STRING_COMPARE_HPP #define BOOST_STRING_COMPARE_HPP
@ -67,7 +68,7 @@ namespace boost {
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)==std::toupper(Arg2); return std::toupper(Arg1)==std::toupper(Arg2);
#else #else
return std::toupper(Arg1,m_Loc)==std::toupper(Arg2,m_Loc); return std::toupper<T1>(Arg1,m_Loc)==std::toupper<T2>(Arg2,m_Loc);
#endif #endif
} }
@ -120,7 +121,7 @@ namespace boost {
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)<std::toupper(Arg2); return std::toupper(Arg1)<std::toupper(Arg2);
#else #else
return std::toupper(Arg1,m_Loc)<std::toupper(Arg2,m_Loc); return std::toupper<T1>(Arg1,m_Loc)<std::toupper<T2>(Arg2,m_Loc);
#endif #endif
} }
@ -173,7 +174,7 @@ namespace boost {
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)<=std::toupper(Arg2); return std::toupper(Arg1)<=std::toupper(Arg2);
#else #else
return std::toupper(Arg1,m_Loc)<=std::toupper(Arg2,m_Loc); return std::toupper<T1>(Arg1,m_Loc)<=std::toupper<T2>(Arg2,m_Loc);
#endif #endif
} }

View File

@ -1,11 +1,12 @@
// Boost string_algo library concept.hpp header file ---------------------------// // Boost string_algo library concept.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONCEPT_HPP #ifndef BOOST_STRING_CONCEPT_HPP
#define BOOST_STRING_CONCEPT_HPP #define BOOST_STRING_CONCEPT_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library config.hpp header file ---------------------------// // Boost string_algo library config.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONFIG_HPP #ifndef BOOST_STRING_CONFIG_HPP
#define BOOST_STRING_CONFIG_HPP #define BOOST_STRING_CONFIG_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library constants.hpp header file ---------------------------// // Boost string_algo library constants.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONSTANTS_HPP #ifndef BOOST_STRING_CONSTANTS_HPP
#define BOOST_STRING_CONSTANTS_HPP #define BOOST_STRING_CONSTANTS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library string_funct.hpp header file ---------------------------// // Boost string_algo library string_funct.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP #ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
#define BOOST_STRING_CASE_CONV_DETAIL_HPP #define BOOST_STRING_CASE_CONV_DETAIL_HPP
@ -33,7 +34,7 @@ namespace boost {
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::tolower( Ch); return std::tolower( Ch);
#else #else
return std::tolower( Ch, m_Loc ); return std::tolower<CharT>( Ch, m_Loc );
#endif #endif
} }
private: private:
@ -53,13 +54,56 @@ namespace boost {
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper( Ch); return std::toupper( Ch);
#else #else
return std::toupper( Ch, m_Loc ); return std::toupper<CharT>( Ch, m_Loc );
#endif #endif
} }
private: private:
const std::locale& m_Loc; const std::locale& m_Loc;
}; };
// algorithm implementation -------------------------------------------------------------------------
// Transform a range
template<typename OutputIteratorT, typename RangeT, typename FunctorT>
OutputIteratorT transform_range_copy(
OutputIteratorT Output,
const RangeT& Input,
FunctorT Functor)
{
return std::transform(
begin(Input),
end(Input),
Output,
Functor);
}
// Transform a range (in-place)
template<typename RangeT, typename FunctorT>
void transform_range(
const RangeT& Input,
FunctorT Functor)
{
std::transform(
begin(Input),
end(Input),
begin(Input),
Functor);
}
template<typename SequenceT, typename RangeT, typename FunctorT>
inline SequenceT transform_range_copy(
const RangeT& Input,
FunctorT Functor)
{
return SequenceT(
make_transform_iterator(
begin(Input),
Functor),
make_transform_iterator(
end(Input),
Functor));
}
} // namespace detail } // namespace detail
} // namespace algorithm } // namespace algorithm
} // namespace boost } // namespace boost

View File

@ -1,11 +1,12 @@
// Boost string_algo library classification.hpp header file ---------------------------// // Boost string_algo library classification.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP #ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP
#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP #define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
@ -46,7 +47,7 @@ namespace boost {
return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch ); return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch );
} }
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL)
template<> template<>
bool operator()( char const Ch ) const bool operator()( char const Ch ) const
{ {

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_format.hpp header file ---------------------------// // Boost string_algo library find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP #ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP #define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
@ -26,20 +27,17 @@ namespace boost {
template< template<
typename OutputIteratorT, typename OutputIteratorT,
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT > typename FindResultT >
inline OutputIteratorT find_format_copy_impl( inline OutputIteratorT find_format_copy_impl(
OutputIteratorT Output, OutputIteratorT Output,
const InputT& Input, const InputT& Input,
FinderT Finder,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult ) const FindResultT& FindResult )
{ {
return find_format_copy_impl2( return find_format_copy_impl2(
Output, Output,
Input, Input,
Finder,
Formatter, Formatter,
FindResult, FindResult,
Formatter(FindResult) ); Formatter(FindResult) );
@ -48,14 +46,12 @@ namespace boost {
template< template<
typename OutputIteratorT, typename OutputIteratorT,
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT, typename FindResultT,
typename FormatResultT > typename FormatResultT >
inline OutputIteratorT find_format_copy_impl2( inline OutputIteratorT find_format_copy_impl2(
OutputIteratorT Output, OutputIteratorT Output,
const InputT& Input, const InputT& Input,
FinderT Finder,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult, const FindResultT& FindResult,
const FormatResultT& FormatResult ) const FormatResultT& FormatResult )
@ -91,18 +87,15 @@ namespace boost {
template< template<
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT > typename FindResultT >
inline InputT find_format_copy_impl( inline InputT find_format_copy_impl(
const InputT& Input, const InputT& Input,
FinderT Finder,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult) const FindResultT& FindResult)
{ {
return find_format_copy_impl2( return find_format_copy_impl2(
Input, Input,
Finder,
Formatter, Formatter,
FindResult, FindResult,
Formatter(FindResult) ); Formatter(FindResult) );
@ -110,13 +103,11 @@ namespace boost {
template< template<
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT, typename FindResultT,
typename FormatResultT > typename FormatResultT >
inline InputT find_format_copy_impl2( inline InputT find_format_copy_impl2(
const InputT& Input, const InputT& Input,
FinderT Finder,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult, const FindResultT& FindResult,
const FormatResultT& FormatResult) const FormatResultT& FormatResult)
@ -151,18 +142,15 @@ namespace boost {
template< template<
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT > typename FindResultT >
inline void find_format_impl( inline void find_format_impl(
InputT& Input, InputT& Input,
FinderT Finder,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult) const FindResultT& FindResult)
{ {
find_format_impl2( find_format_impl2(
Input, Input,
Finder,
Formatter, Formatter,
FindResult, FindResult,
Formatter(FindResult) ); Formatter(FindResult) );
@ -170,13 +158,11 @@ namespace boost {
template< template<
typename InputT, typename InputT,
typename FinderT,
typename FormatterT, typename FormatterT,
typename FindResultT, typename FindResultT,
typename FormatResultT > typename FormatResultT >
inline void find_format_impl2( inline void find_format_impl2(
InputT& Input, InputT& Input,
FinderT,
FormatterT Formatter, FormatterT Formatter,
const FindResultT& FindResult, const FindResultT& FindResult,
const FormatResultT& FormatResult) const FormatResultT& FormatResult)

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_format_all.hpp header file ---------------------------// // Boost string_algo library find_format_all.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP #ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP #define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_format_store.hpp header file ---------------------------// // Boost string_algo library find_format_store.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP #ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP #define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_iterator.hpp header file ---------------------------// // Boost string_algo library find_iterator.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP #ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP #define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library finder.hpp header file ---------------------------// // Boost string_algo library finder.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_DETAIL_HPP #ifndef BOOST_STRING_FINDER_DETAIL_HPP
#define BOOST_STRING_FINDER_DETAIL_HPP #define BOOST_STRING_FINDER_DETAIL_HPP
@ -18,6 +19,7 @@
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/empty.hpp> #include <boost/range/empty.hpp>
#include <boost/range/as_literal.hpp>
namespace boost { namespace boost {
namespace algorithm { namespace algorithm {

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_regex.hpp header file ---------------------------// // Boost string_algo library find_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP #ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP
#define BOOST_STRING_FINDER_REGEX_DETAIL_HPP #define BOOST_STRING_FINDER_REGEX_DETAIL_HPP

View File

@ -1,9 +1,10 @@
// Boost string_algo library formatter.hpp header file ---------------------------// // Boost string_algo library formatter.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org for updates, documentation, and revision history.

View File

@ -1,11 +1,12 @@
// Boost string_algo library formatter_regex.hpp header file ---------------------------// // Boost string_algo library formatter_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP #ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
#define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP #define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library predicate.hpp header file ---------------------------// // Boost string_algo library predicate.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP #ifndef BOOST_STRING_PREDICATE_DETAIL_HPP
#define BOOST_STRING_PREDICATE_DETAIL_HPP #define BOOST_STRING_PREDICATE_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library replace_storage.hpp header file ---------------------------// // Boost string_algo library replace_storage.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP #ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP #define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library sequence.hpp header file ---------------------------// // Boost string_algo library sequence.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP #ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
#define BOOST_STRING_DETAIL_SEQUENCE_HPP #define BOOST_STRING_DETAIL_SEQUENCE_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library trim.hpp header file ---------------------------// // Boost string_algo library trim.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_TRIM_DETAIL_HPP #ifndef BOOST_STRING_TRIM_DETAIL_HPP
#define BOOST_STRING_TRIM_DETAIL_HPP #define BOOST_STRING_TRIM_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library util.hpp header file ---------------------------// // Boost string_algo library util.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_UTIL_DETAIL_HPP #ifndef BOOST_STRING_UTIL_DETAIL_HPP
#define BOOST_STRING_UTIL_DETAIL_HPP #define BOOST_STRING_UTIL_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library erase.hpp header file ---------------------------// // Boost string_algo library erase.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ERASE_HPP #ifndef BOOST_STRING_ERASE_HPP
#define BOOST_STRING_ERASE_HPP #define BOOST_STRING_ERASE_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library find.hpp header file ---------------------------// // Boost string_algo library find.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_HPP #ifndef BOOST_STRING_FIND_HPP
#define BOOST_STRING_FIND_HPP #define BOOST_STRING_FIND_HPP
@ -16,8 +17,7 @@
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/iterator.hpp> #include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp> #include <boost/range/as_literal.hpp>
#include <boost/range/result_iterator.hpp>
#include <boost/algorithm/string/finder.hpp> #include <boost/algorithm/string/finder.hpp>
#include <boost/algorithm/string/compare.hpp> #include <boost/algorithm/string/compare.hpp>
@ -48,19 +48,21 @@ namespace boost {
*/ */
template<typename RangeT, typename FinderT> template<typename RangeT, typename FinderT>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find( find(
RangeT& Input, 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 -----------------------------------------------//
//! Find first algorithm //! 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 Input A string which will be searched.
\param Search A substring to be searched for. \param Search A substring to be searched for.
@ -74,13 +76,12 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_first( find_first(
Range1T& Input, Range1T& Input,
const Range2T& Search) const Range2T& Search)
{ {
return first_finder(Search)( return find(Input, first_finder(Search));
begin(Input),end(Input));
} }
//! Find first algorithm ( case insensitive ) //! Find first algorithm ( case insensitive )
@ -101,21 +102,20 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_first( ifind_first(
Range1T& Input, Range1T& Input,
const Range2T& Search, const Range2T& Search,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return first_finder(Search,is_iequal(Loc))( return find(Input, first_finder(Search,is_iequal(Loc)));
begin(Input),end(Input));
} }
// find_last -----------------------------------------------// // find_last -----------------------------------------------//
//! Find last algorithm //! 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 Input A string which will be searched.
\param Search A substring to be searched for. \param Search A substring to be searched for.
@ -129,13 +129,12 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_last( find_last(
Range1T& Input, Range1T& Input,
const Range2T& Search) const Range2T& Search)
{ {
return last_finder(Search)( return find(Input, last_finder(Search));
begin(Input),end(Input));
} }
//! Find last algorithm ( case insensitive ) //! Find last algorithm ( case insensitive )
@ -156,21 +155,20 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_last( ifind_last(
Range1T& Input, Range1T& Input,
const Range2T& Search, const Range2T& Search,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return last_finder(Search, is_iequal(Loc))( return find(Input, last_finder(Search, is_iequal(Loc)));
begin(Input),end(Input));
} }
// find_nth ----------------------------------------------------------------------// // find_nth ----------------------------------------------------------------------//
//! Find n-th algorithm //! 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. input.
\param Input A string which will be searched. \param Input A string which will be searched.
@ -185,14 +183,13 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_nth( find_nth(
Range1T& Input, Range1T& Input,
const Range2T& Search, const Range2T& Search,
int Nth) int Nth)
{ {
return nth_finder(Search,Nth)( return find(Input, nth_finder(Search,Nth));
begin(Input),end(Input));
} }
//! Find n-th algorithm ( case insensitive ). //! Find n-th algorithm ( case insensitive ).
@ -216,15 +213,14 @@ namespace boost {
*/ */
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type> BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_nth( ifind_nth(
Range1T& Input, Range1T& Input,
const Range2T& Search, const Range2T& Search,
int Nth, int Nth,
const std::locale& Loc=std::locale()) const std::locale& Loc=std::locale())
{ {
return nth_finder(Search,Nth,is_iequal(Loc))( return find(Input, nth_finder(Search,Nth,is_iequal(Loc)));
begin(Input),end(Input));
} }
// find_head ----------------------------------------------------------------------// // find_head ----------------------------------------------------------------------//
@ -249,13 +245,12 @@ namespace boost {
*/ */
template<typename RangeT> template<typename RangeT>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_head( find_head(
RangeT& Input, RangeT& Input,
int N) int N)
{ {
return head_finder(N)( return find(Input, head_finder(N));
begin(Input),end(Input));
} }
// find_tail ----------------------------------------------------------------------// // find_tail ----------------------------------------------------------------------//
@ -281,13 +276,12 @@ namespace boost {
*/ */
template<typename RangeT> template<typename RangeT>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_tail( find_tail(
RangeT& Input, RangeT& Input,
int N) int N)
{ {
return tail_finder(N)( return find(Input, tail_finder(N));
begin(Input),end(Input));
} }
// find_token --------------------------------------------------------------------// // find_token --------------------------------------------------------------------//
@ -311,14 +305,13 @@ namespace boost {
*/ */
template<typename RangeT, typename PredicateT> template<typename RangeT, typename PredicateT>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_token( find_token(
RangeT& Input, RangeT& Input,
PredicateT Pred, PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off) token_compress_mode_type eCompress=token_compress_off)
{ {
return token_finder(Pred, eCompress)( return find(Input, token_finder(Pred, eCompress));
begin(Input),end(Input));
} }
} // namespace algorithm } // namespace algorithm

View File

@ -1,11 +1,12 @@
// Boost string_algo library find_format.hpp header file ---------------------------// // Boost string_algo library find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_HPP #ifndef BOOST_STRING_FIND_FORMAT_HPP
#define BOOST_STRING_FIND_FORMAT_HPP #define BOOST_STRING_FIND_FORMAT_HPP
@ -16,6 +17,7 @@
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp> #include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/concept.hpp> #include <boost/algorithm/string/concept.hpp>
#include <boost/algorithm/string/detail/find_format.hpp> #include <boost/algorithm/string/detail/find_format.hpp>
@ -68,12 +70,13 @@ namespace boost {
FormatterT, FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(); 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( return detail::find_format_copy_impl(
Output, Output,
Input, lit_input,
Finder,
Formatter, Formatter,
Finder( begin(Input), end(Input) ) ); Finder( begin(lit_input), end(lit_input) ) );
} }
//! Generic replace algorithm //! Generic replace algorithm
@ -100,7 +103,6 @@ namespace boost {
return detail::find_format_copy_impl( return detail::find_format_copy_impl(
Input, Input,
Finder,
Formatter, Formatter,
Finder(begin(Input), end(Input))); Finder(begin(Input), end(Input)));
} }
@ -134,7 +136,6 @@ namespace boost {
detail::find_format_impl( detail::find_format_impl(
Input, Input,
Finder,
Formatter, Formatter,
Finder(begin(Input), end(Input))); Finder(begin(Input), end(Input)));
} }
@ -179,12 +180,14 @@ namespace boost {
FormatterT, FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(); 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( return detail::find_format_all_copy_impl(
Output, Output,
Input, lit_input,
Finder, Finder,
Formatter, Formatter,
Finder(begin(Input), end(Input))); Finder(begin(lit_input), end(lit_input)));
} }
//! Generic replace all algorithm //! Generic replace all algorithm

View File

@ -1,10 +1,12 @@
// Boost string_algo library find_iterator.hpp header file ---------------------------// // Boost string_algo library find_iterator.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004. Use, modification and // Copyright Pavol Droba 2002-2004.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// See http://www.boost.org for updates, documentation, and revision history. // http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_ITERATOR_HPP #ifndef BOOST_STRING_FIND_ITERATOR_HPP
#define BOOST_STRING_FIND_ITERATOR_HPP #define BOOST_STRING_FIND_ITERATOR_HPP
@ -16,7 +18,8 @@
#include <boost/range/iterator_range.hpp> #include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp> #include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/find_iterator.hpp> #include <boost/algorithm/string/detail/find_iterator.hpp>
@ -114,10 +117,12 @@ namespace boost {
find_iterator( find_iterator(
RangeT& Col, RangeT& Col,
FinderT Finder ) : FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0), detail::find_iterator_base<IteratorT>(Finder,0)
m_Match(begin(Col),begin(Col)),
m_End(end(Col))
{ {
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(); increment();
} }
@ -180,13 +185,13 @@ namespace boost {
*/ */
template<typename RangeT, typename FinderT> template<typename RangeT, typename FinderT>
inline find_iterator< inline find_iterator<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_find_iterator( make_find_iterator(
RangeT& Collection, RangeT& Collection,
FinderT Finder) FinderT Finder)
{ {
return find_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>( return find_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
begin(Collection), end(Collection), Finder); Collection, Finder);
} }
// split iterator -----------------------------------------------// // split iterator -----------------------------------------------//
@ -278,11 +283,13 @@ namespace boost {
RangeT& Col, RangeT& Col,
FinderT Finder ) : FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0), detail::find_iterator_base<IteratorT>(Finder,0),
m_Match(begin(Col),begin(Col)),
m_Next(begin(Col)),
m_End(end(Col)),
m_bEof(false) 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(); increment();
} }
@ -356,13 +363,13 @@ namespace boost {
*/ */
template<typename RangeT, typename FinderT> template<typename RangeT, typename FinderT>
inline split_iterator< inline split_iterator<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_split_iterator( make_split_iterator(
RangeT& Collection, RangeT& Collection,
FinderT Finder) FinderT Finder)
{ {
return split_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>( return split_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
begin(Collection), end(Collection), Finder); Collection, Finder);
} }

View File

@ -1,11 +1,12 @@
// Boost string_algo library finder.hpp header file ---------------------------// // Boost string_algo library finder.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_HPP #ifndef BOOST_STRING_FINDER_HPP
#define BOOST_STRING_FINDER_HPP #define BOOST_STRING_FINDER_HPP
@ -45,35 +46,35 @@ namespace boost {
\param Comp An element comparison predicate \param Comp An element comparison predicate
\return An instance of the \c first_finder object \return An instance of the \c first_finder object
*/ */
template<typename ContainerT> template<typename RangeT>
inline detail::first_finderF< inline detail::first_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal> is_equal>
first_finder( const ContainerT& Search ) first_finder( const RangeT& Search )
{ {
return return
detail::first_finderF< detail::first_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
is_equal>( Search, is_equal() ) ; is_equal>( as_literal(Search), is_equal() ) ;
} }
//! "First" finder //! "First" finder
/*! /*!
\overload \overload
*/ */
template<typename ContainerT,typename PredicateT> template<typename RangeT,typename PredicateT>
inline detail::first_finderF< inline detail::first_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT> PredicateT>
first_finder( first_finder(
const ContainerT& Search, PredicateT Comp ) const RangeT& Search, PredicateT Comp )
{ {
return return
detail::first_finderF< detail::first_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
PredicateT>( Search, Comp ); PredicateT>( as_literal(Search), Comp );
} }
//! "Last" finder //! "Last" finder
@ -86,33 +87,33 @@ namespace boost {
\param Comp An element comparison predicate \param Comp An element comparison predicate
\return An instance of the \c last_finder object \return An instance of the \c last_finder object
*/ */
template<typename ContainerT> template<typename RangeT>
inline detail::last_finderF< inline detail::last_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal> is_equal>
last_finder( const ContainerT& Search ) last_finder( const RangeT& Search )
{ {
return return
detail::last_finderF< detail::last_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
is_equal>( Search, is_equal() ); is_equal>( as_literal(Search), is_equal() );
} }
//! "Last" finder //! "Last" finder
/*! /*!
\overload \overload
*/ */
template<typename ContainerT, typename PredicateT> template<typename RangeT, typename PredicateT>
inline detail::last_finderF< inline detail::last_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT> PredicateT>
last_finder( const ContainerT& Search, PredicateT Comp ) last_finder( const RangeT& Search, PredicateT Comp )
{ {
return return
detail::last_finderF< detail::last_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
PredicateT>( Search, Comp ) ; PredicateT>( as_literal(Search), Comp ) ;
} }
//! "Nth" finder //! "Nth" finder
@ -126,38 +127,38 @@ namespace boost {
\param Comp An element comparison predicate \param Comp An element comparison predicate
\return An instance of the \c nth_finder object \return An instance of the \c nth_finder object
*/ */
template<typename ContainerT> template<typename RangeT>
inline detail::nth_finderF< inline detail::nth_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal> is_equal>
nth_finder( nth_finder(
const ContainerT& Search, const RangeT& Search,
int Nth) int Nth)
{ {
return return
detail::nth_finderF< detail::nth_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
is_equal>( Search, Nth, is_equal() ) ; is_equal>( as_literal(Search), Nth, is_equal() ) ;
} }
//! "Nth" finder //! "Nth" finder
/*! /*!
\overload \overload
*/ */
template<typename ContainerT, typename PredicateT> template<typename RangeT, typename PredicateT>
inline detail::nth_finderF< inline detail::nth_finderF<
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type, BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT> PredicateT>
nth_finder( nth_finder(
const ContainerT& Search, const RangeT& Search,
int Nth, int Nth,
PredicateT Comp ) PredicateT Comp )
{ {
return return
detail::nth_finderF< detail::nth_finderF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<ContainerT>::type, range_const_iterator<RangeT>::type,
PredicateT>( Search, Nth, Comp ); PredicateT>( as_literal(Search), Nth, Comp );
} }
//! "Head" finder //! "Head" finder

View File

@ -1,11 +1,12 @@
// Boost string_algo library formatter.hpp header file ---------------------------// // Boost string_algo library formatter.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FORMATTER_HPP #ifndef BOOST_STRING_FORMATTER_HPP
#define BOOST_STRING_FORMATTER_HPP #define BOOST_STRING_FORMATTER_HPP
@ -13,6 +14,7 @@
#include <boost/detail/iterator.hpp> #include <boost/detail/iterator.hpp>
#include <boost/range/value_type.hpp> #include <boost/range/value_type.hpp>
#include <boost/range/iterator_range.hpp> #include <boost/range/iterator_range.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/formatter.hpp> #include <boost/algorithm/string/detail/formatter.hpp>
@ -41,10 +43,14 @@ namespace boost {
\return An instance of the \c const_formatter object. \return An instance of the \c const_formatter object.
*/ */
template<typename RangeT> 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) 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 //! Identity formatter
@ -55,10 +61,14 @@ namespace boost {
\return An instance of the \c identity_formatter object. \return An instance of the \c identity_formatter object.
*/ */
template<typename RangeT> template<typename RangeT>
inline detail::identity_formatF<RangeT> inline detail::identity_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
identity_formatter() identity_formatter()
{ {
return detail::identity_formatF<RangeT>(); return detail::identity_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
} }
//! Empty formatter //! Empty formatter

View File

@ -1,11 +1,12 @@
// Boost string_algo library iter_find.hpp header file ---------------------------// // Boost string_algo library iter_find.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ITER_FIND_HPP #ifndef BOOST_STRING_ITER_FIND_HPP
#define BOOST_STRING_ITER_FIND_HPP #define BOOST_STRING_ITER_FIND_HPP
@ -18,8 +19,9 @@
#include <boost/range/iterator_range.hpp> #include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp> #include <boost/range/iterator.hpp>
#include <boost/range/value_type.hpp> #include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/concept.hpp> #include <boost/algorithm/string/concept.hpp>
#include <boost/algorithm/string/find_iterator.hpp> #include <boost/algorithm/string/find_iterator.hpp>
@ -74,24 +76,26 @@ namespace boost {
{ {
function_requires< function_requires<
FinderConcept<FinderT, FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >(); BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_result_iterator<RangeT>::type input_iterator_type; range_iterator<RangeT>::type input_iterator_type;
typedef find_iterator<input_iterator_type> find_iterator_type; typedef find_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF< typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type, range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_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> typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type; transform_iter_type;
transform_iter_type itBegin= transform_iter_type itBegin=
make_transform_iterator( make_transform_iterator(
find_iterator_type( begin(Input), InputEnd, Finder ), find_iterator_type( begin(lit_input), InputEnd, Finder ),
copy_range_type()); copy_range_type());
transform_iter_type itEnd= transform_iter_type itEnd=
@ -141,24 +145,26 @@ namespace boost {
{ {
function_requires< function_requires<
FinderConcept<FinderT, FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >(); BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_result_iterator<RangeT>::type input_iterator_type; range_iterator<RangeT>::type input_iterator_type;
typedef split_iterator<input_iterator_type> find_iterator_type; typedef split_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF< typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type, range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_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> typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type; transform_iter_type;
transform_iter_type itBegin= transform_iter_type itBegin=
make_transform_iterator( make_transform_iterator(
find_iterator_type( begin(Input), InputEnd, Finder ), find_iterator_type( begin(lit_input), InputEnd, Finder ),
copy_range_type() ); copy_range_type() );
transform_iter_type itEnd= transform_iter_type itEnd=

View File

@ -1,11 +1,12 @@
// Boost string_algo library join.hpp header file ---------------------------// // Boost string_algo library join.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_JOIN_HPP #ifndef BOOST_STRING_JOIN_HPP
#define BOOST_STRING_JOIN_HPP #define BOOST_STRING_JOIN_HPP
@ -13,7 +14,7 @@
#include <boost/algorithm/string/config.hpp> #include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/detail/sequence.hpp> #include <boost/algorithm/string/detail/sequence.hpp>
#include <boost/range/value_type.hpp> #include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
/*! \file /*! \file
Defines join algorithm. Defines join algorithm.
@ -44,7 +45,7 @@ namespace boost {
inline typename range_value<SequenceSequenceT>::type inline typename range_value<SequenceSequenceT>::type
join( join(
const SequenceSequenceT& Input, const SequenceSequenceT& Input,
Range1T& Separator) const Range1T& Separator)
{ {
// Define working types // Define working types
typedef typename range_value<SequenceSequenceT>::type ResultT; typedef typename range_value<SequenceSequenceT>::type ResultT;
@ -67,7 +68,7 @@ namespace boost {
for(;itBegin!=itEnd; ++itBegin) for(;itBegin!=itEnd; ++itBegin)
{ {
// Add separator // Add separator
detail::insert(Result, end(Result), Separator); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }
@ -94,7 +95,7 @@ namespace boost {
inline typename range_value<SequenceSequenceT>::type inline typename range_value<SequenceSequenceT>::type
join_if( join_if(
const SequenceSequenceT& Input, const SequenceSequenceT& Input,
Range1T& Separator, const Range1T& Separator,
PredicateT Pred) PredicateT Pred)
{ {
// Define working types // Define working types
@ -122,7 +123,7 @@ namespace boost {
if(Pred(*itBegin)) if(Pred(*itBegin))
{ {
// Add separator // Add separator
detail::insert(Result, end(Result), Separator); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }

View File

@ -1,11 +1,12 @@
// Boost string_algo library predicate.hpp header file ---------------------------// // Boost string_algo library predicate.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_HPP #ifndef BOOST_STRING_PREDICATE_HPP
#define BOOST_STRING_PREDICATE_HPP #define BOOST_STRING_PREDICATE_HPP
@ -15,6 +16,8 @@
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/iterator.hpp> #include <boost/range/iterator.hpp>
#include <boost/range/const_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/compare.hpp>
#include <boost/algorithm/string/find.hpp> #include <boost/algorithm/string/find.hpp>
@ -56,16 +59,19 @@ namespace boost {
const Range2T& Test, const Range2T& Test,
PredicateT Comp) 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 typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T; range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T; range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=end(Input); Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=end(Test); Iterator2T TestEnd=end(lit_test);
Iterator1T it=begin(Input); Iterator1T it=begin(lit_input);
Iterator2T pit=begin(Test); Iterator2T pit=begin(lit_test);
for(; for(;
it!=InputEnd && pit!=TestEnd; it!=InputEnd && pit!=TestEnd;
++it,++pit) ++it,++pit)
@ -135,6 +141,9 @@ namespace boost {
const Range2T& Test, const Range2T& Test,
PredicateT Comp) 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 typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T; range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME boost::detail:: typedef BOOST_STRING_TYPENAME boost::detail::
@ -142,10 +151,10 @@ namespace boost {
return detail:: return detail::
ends_with_iter_select( ends_with_iter_select(
begin(Input), begin(lit_input),
end(Input), end(lit_input),
begin(Test), begin(lit_test),
end(Test), end(lit_test),
Comp, Comp,
category()); category());
} }
@ -206,14 +215,17 @@ namespace boost {
const Range2T& Test, const Range2T& Test,
PredicateT Comp) 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 // Empty range is contained always
return true; return true;
} }
// Use the temporary variable to make VACPP happy // 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; return bResult;
} }
@ -274,16 +286,19 @@ namespace boost {
const Range2T& Test, const Range2T& Test,
PredicateT Comp) 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 typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T; range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T; range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=end(Input); Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=end(Test); Iterator2T TestEnd=end(lit_test);
Iterator1T it=begin(Input); Iterator1T it=begin(lit_input);
Iterator2T pit=begin(Test); Iterator2T pit=begin(lit_test);
for(; for(;
it!=InputEnd && pit!=TestEnd; it!=InputEnd && pit!=TestEnd;
++it,++pit) ++it,++pit)
@ -357,11 +372,14 @@ namespace boost {
const Range2T& Arg2, const Range2T& Arg2,
PredicateT Pred) 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( return std::lexicographical_compare(
begin(Arg1), begin(lit_arg1),
end(Arg1), end(lit_arg1),
begin(Arg2), begin(lit_arg2),
end(Arg2), end(lit_arg2),
Pred); Pred);
} }
@ -374,12 +392,7 @@ namespace boost {
const Range1T& Arg1, const Range1T& Arg1,
const Range2T& Arg2) const Range2T& Arg2)
{ {
return std::lexicographical_compare( return lexicographical_compare(Arg1, Arg2, is_less());
begin(Arg1),
end(Arg1),
begin(Arg2),
end(Arg2),
is_less());
} }
//! Lexicographical compare predicate (case-insensitive) //! Lexicographical compare predicate (case-insensitive)
@ -393,6 +406,7 @@ namespace boost {
\param Arg1 First argument \param Arg1 First argument
\param Arg2 Second argument \param Arg2 Second argument
\param Loc A locale used for case insensitive comparison
\return The result of the test \return The result of the test
\note This function provides the strong exception-safety guarantee \note This function provides the strong exception-safety guarantee
@ -400,14 +414,10 @@ namespace boost {
template<typename Range1T, typename Range2T> template<typename Range1T, typename Range2T>
inline bool ilexicographical_compare( inline bool ilexicographical_compare(
const Range1T& Arg1, const Range1T& Arg1,
const Range2T& Arg2) const Range2T& Arg2,
const std::locale& Loc=std::locale())
{ {
return std::lexicographical_compare( return lexicographical_compare(Arg1, Arg2, is_iless(Loc));
begin(Arg1),
end(Arg1),
begin(Arg2),
end(Arg2),
is_iless());
} }
@ -429,11 +439,13 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
PredicateT Pred) PredicateT Pred)
{ {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type Iterator1T; range_const_iterator<RangeT>::type Iterator1T;
Iterator1T InputEnd=end(Input); Iterator1T InputEnd=end(lit_input);
for( Iterator1T It=begin(Input); It!=InputEnd; ++It) for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
{ {
if (!Pred(*It)) if (!Pred(*It))
return false; return false;

View File

@ -1,11 +1,12 @@
// Boost string_algo library predicate_facade.hpp header file ---------------------------// // Boost string_algo library predicate_facade.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_FACADE_HPP #ifndef BOOST_STRING_PREDICATE_FACADE_HPP
#define BOOST_STRING_PREDICATE_FACADE_HPP #define BOOST_STRING_PREDICATE_FACADE_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library regex.hpp header file ---------------------------// // Boost string_algo library regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REGEX_HPP #ifndef BOOST_STRING_REGEX_HPP
#define BOOST_STRING_REGEX_HPP #define BOOST_STRING_REGEX_HPP
@ -16,7 +17,8 @@
#include <boost/range/iterator_range.hpp> #include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp> #include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/find_format.hpp> #include <boost/algorithm/string/find_format.hpp>
#include <boost/algorithm/string/regex_find_format.hpp> #include <boost/algorithm/string/regex_find_format.hpp>
@ -52,14 +54,16 @@ namespace boost {
typename CharT, typename CharT,
typename RegexTraitsT> typename RegexTraitsT>
inline iterator_range< inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type > BOOST_STRING_TYPENAME range_iterator<RangeT>::type >
find_regex( find_regex(
RangeT& Input, RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx, const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default ) 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)( return regex_finder(Rx,Flags)(
begin(Input), end(Input) ); begin(lit_input), end(lit_input) );
} }
// replace_regex --------------------------------------------------------------------// // replace_regex --------------------------------------------------------------------//
@ -502,7 +506,7 @@ namespace boost {
inline typename range_value<SequenceSequenceT>::type inline typename range_value<SequenceSequenceT>::type
join_if( join_if(
const SequenceSequenceT& Input, const SequenceSequenceT& Input,
Range1T& Separator, const Range1T& Separator,
const basic_regex<CharT, RegexTraitsT>& Rx, const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default ) match_flag_type Flags=match_default )
{ {
@ -535,7 +539,7 @@ namespace boost {
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
{ {
// Add separator // Add separator
detail::insert(Result, end(Result), Separator); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }
@ -570,7 +574,7 @@ namespace boost {
inline typename range_value<SequenceSequenceT>::type inline typename range_value<SequenceSequenceT>::type
join_if_regex( join_if_regex(
const SequenceSequenceT& Input, const SequenceSequenceT& Input,
Range1T& Separator, const Range1T& Separator,
const basic_regex<CharT, RegexTraitsT>& Rx, const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default ) match_flag_type Flags=match_default )
{ {
@ -603,7 +607,7 @@ namespace boost {
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
{ {
// Add separator // Add separator
detail::insert(Result, end(Result), Separator); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }
@ -630,6 +634,12 @@ namespace boost {
using algorithm::find_all_regex; using algorithm::find_all_regex;
using algorithm::split_regex; using algorithm::split_regex;
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if;
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if_regex;
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
} // namespace boost } // namespace boost

View File

@ -1,11 +1,12 @@
// Boost string_algo library regex_find_format.hpp header file ---------------------------// // Boost string_algo library regex_find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP #ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP
#define BOOST_STRING_REGEX_FIND_FORMAT_HPP #define BOOST_STRING_REGEX_FIND_FORMAT_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library replace.hpp header file ---------------------------// // Boost string_algo library replace.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REPLACE_HPP #ifndef BOOST_STRING_REPLACE_HPP
#define BOOST_STRING_REPLACE_HPP #define BOOST_STRING_REPLACE_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library sequence_traits.hpp header file ---------------------------// // Boost string_algo library sequence_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP #ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
#define BOOST_STRING_SEQUENCE_TRAITS_HPP #define BOOST_STRING_SEQUENCE_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library split.hpp header file ---------------------------// // Boost string_algo library split.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006. Use, modification and // Copyright Pavol Droba 2002-2006.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_SPLIT_HPP #ifndef BOOST_STRING_SPLIT_HPP
#define BOOST_STRING_SPLIT_HPP #define BOOST_STRING_SPLIT_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library list_traits.hpp header file ---------------------------// // Boost string_algo library list_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP #ifndef BOOST_STRING_STD_LIST_TRAITS_HPP
#define BOOST_STRING_STD_LIST_TRAITS_HPP #define BOOST_STRING_STD_LIST_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library string_traits.hpp header file ---------------------------// // Boost string_algo library string_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP #ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP
#define BOOST_STRING_STD_ROPE_TRAITS_HPP #define BOOST_STRING_STD_ROPE_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library slist_traits.hpp header file ---------------------------// // Boost string_algo library slist_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP #ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP
#define BOOST_STRING_STD_SLIST_TRAITS_HPP #define BOOST_STRING_STD_SLIST_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library string_traits.hpp header file ---------------------------// // Boost string_algo library string_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP #ifndef BOOST_STRING_STD_STRING_TRAITS_HPP
#define BOOST_STRING_STD_STRING_TRAITS_HPP #define BOOST_STRING_STD_STRING_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library std_containers_traits.hpp header file ---------------------------// // Boost string_algo library std_containers_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP #ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP #define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library trim.hpp header file ---------------------------// // Boost string_algo library trim.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_TRIM_HPP #ifndef BOOST_STRING_TRIM_HPP
#define BOOST_STRING_TRIM_HPP #define BOOST_STRING_TRIM_HPP
@ -15,6 +16,8 @@
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp> #include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/algorithm/string/detail/trim.hpp> #include <boost/algorithm/string/detail/trim.hpp>
#include <boost/algorithm/string/classification.hpp> #include <boost/algorithm/string/classification.hpp>
@ -60,12 +63,14 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
PredicateT IsSpace) PredicateT IsSpace)
{ {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
std::copy( std::copy(
::boost::algorithm::detail::trim_begin( ::boost::algorithm::detail::trim_begin(
begin(Input), begin(lit_range),
end(Input), end(lit_range),
IsSpace ), IsSpace ),
end(Input), end(lit_range),
Output); Output);
return Output; return Output;
@ -166,11 +171,13 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
PredicateT IsSpace ) PredicateT IsSpace )
{ {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
std::copy( std::copy(
begin(Input), begin(lit_range),
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
begin(Input), begin(lit_range),
end(Input), end(lit_range),
IsSpace ), IsSpace ),
Output ); Output );
@ -276,16 +283,18 @@ namespace boost {
const RangeT& Input, const RangeT& Input,
PredicateT IsSpace) PredicateT IsSpace)
{ {
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= range_const_iterator<RangeT>::type TrimEnd=
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
begin(Input), begin(lit_range),
end(Input), end(lit_range),
IsSpace); IsSpace);
std::copy( std::copy(
detail::trim_begin( detail::trim_begin(
begin(Input), TrimEnd, IsSpace), begin(lit_range), TrimEnd, IsSpace),
TrimEnd, TrimEnd,
Output Output
); );

View File

@ -1,11 +1,12 @@
// Boost string_algo library yes_no_type.hpp header file ---------------------------// // Boost string_algo library yes_no_type.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003. Use, modification and // Copyright Pavol Droba 2002-2003.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP #ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP #define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP

View File

@ -1,11 +1,12 @@
// Boost string_algo library string_regex.hpp header file ---------------------------// // Boost string_algo library string_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004. Use, modification and // Copyright Pavol Droba 2002-2004.
// distribution is subject to the Boost Software License, Version //
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at // Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt) // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history. // See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ALGO_REGEX_HPP #ifndef BOOST_STRING_ALGO_REGEX_HPP
#define BOOST_STRING_ALGO_REGEX_HPP #define BOOST_STRING_ALGO_REGEX_HPP

View File

@ -7,8 +7,6 @@
# http://www.boost.org/LICENSE_1_0.txt) # http://www.boost.org/LICENSE_1_0.txt)
# #
subproject libs/algorithm/minmax/example ;
exe minmax_ex : minmax_ex.cpp ; exe minmax_ex : minmax_ex.cpp ;
exe minmax_timer : minmax_timer.cpp ; exe minmax_timer : minmax_timer.cpp ;

View File

@ -1,33 +0,0 @@
# Boost.Minmax Library Test Jamfile
#
# Copyright (C) 2002--2004, Herve Bronnimann
#
# Use, modification, and distribution is subject to the Boost Software
# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
#
subproject libs/algorithm/minmax/test ;
# bring in rules for testing
import testing ;
# Make tests run by default.
DEPENDS all : test ;
{
test-suite algorithm/minmax
: [ run
minmax_element_test.cpp
: :
:
: minmax_element
]
[ run
minmax_test.cpp
: :
:
: minmax
]
;
}

View File

@ -10,7 +10,7 @@
import toolset ; import toolset ;
toolset.using doxygen ; toolset.using doxygen ;
boostbook string_algo : string_algo.xml ; boostbook string_algo : string_algo.xml autodoc ;
doxygen autodoc doxygen autodoc
: :
@ -31,6 +31,7 @@ doxygen autodoc
[ glob ../../../../boost/algorithm/string/trim.hpp ] [ glob ../../../../boost/algorithm/string/trim.hpp ]
[ glob ../../../../boost/algorithm/string/predicate.hpp ] [ glob ../../../../boost/algorithm/string/predicate.hpp ]
[ glob ../../../../boost/algorithm/string/split.hpp ] [ glob ../../../../boost/algorithm/string/split.hpp ]
[ glob ../../../../boost/algorithm/string/iter_find.hpp ]
[ glob ../../../../boost/algorithm/string/erase.hpp ] [ glob ../../../../boost/algorithm/string/erase.hpp ]
[ glob ../../../../boost/algorithm/string/join.hpp ] [ glob ../../../../boost/algorithm/string/join.hpp ]
[ glob ../../../../boost/algorithm/string/replace.hpp ] [ glob ../../../../boost/algorithm/string/replace.hpp ]

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.concept" last-revision="$Date$"> <section id="string_algo.concept" last-revision="$Date$">
<title>Concepts</title> <title>Concepts</title>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.credits" last-revision="$Date$"> <section id="string_algo.credits" last-revision="$Date$">
<title>Credits</title> <title>Credits</title>
<section id="string_algo.ack"> <section id="string_algo.ack">

View File

@ -1,6 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.design" last-revision="$Date$"> <section id="string_algo.design" last-revision="$Date$">
<title>Design Topics</title> <title>Design Topics</title>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.env" last-revision="$Date$"> <section id="string_algo.env" last-revision="$Date$">
<title>Environment</title> <title>Environment</title>
<section> <section>

View File

@ -1,6 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.intro" last-revision="$Date$"> <section id="string_algo.intro" last-revision="$Date$">
<title>Introduction</title> <title>Introduction</title>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.quickref" last-revision="$Date$"> <section id="string_algo.quickref" last-revision="$Date$">
<title>Quick Reference</title> <title>Quick Reference</title>
@ -145,7 +151,7 @@
</row> </row>
<row> <row>
<entry><code>lexicographical_compare</code></entry> <entry><code>lexicographical_compare</code></entry>
<entry>Check if a string is lexicographicaly less then another one</entry> <entry>Check if a string is lexicographically less then another one</entry>
<entry> <entry>
<functionname>lexicographical_compare()</functionname> <functionname>lexicographical_compare()</functionname>
<sbr/> <sbr/>
@ -428,7 +434,7 @@
<functionname>find_all_regex()</functionname> <functionname>find_all_regex()</functionname>
</entry> </entry>
</row> </row>
<row> <row>
<entry>split</entry> <entry>split</entry>
<entry>Split input into parts</entry> <entry>Split input into parts</entry>
<entry> <entry>
@ -436,7 +442,21 @@
<sbr/> <sbr/>
<functionname>split_regex()</functionname> <functionname>split_regex()</functionname>
</entry> </entry>
</row> </row>
<row>
<entry>iter_find</entry>
<entry>Iteratively apply the finder to the input to find all matching substrings</entry>
<entry>
<functionname>iter_find()</functionname>
</entry>
</row>
<row>
<entry>iter_split</entry>
<entry>Use the finder to find matching substrings in the input and use them as separators to split the input into parts</entry>
<entry>
<functionname>iter_split()</functionname>
</entry>
</row>
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.rationale" last-revision="$Date$"> <section id="string_algo.rationale" last-revision="$Date$">
<title>Rationale</title> <title>Rationale</title>

View File

@ -1,7 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.release_notes" last-revision="$Date$"> <section id="string_algo.release_notes" last-revision="$Date$">
<using-namespace name="boost"/>
<using-namespace name="boost::algorithm"/>
<title>Release Notes</title> <title>Release Notes</title>
<itemizedlist> <itemizedlist>
@ -13,5 +23,23 @@
<para><emphasis role="bold">1.33</emphasis></para> <para><emphasis role="bold">1.33</emphasis></para>
<para>Internal version of collection traits removed, library adapted to Boost.Range</para> <para>Internal version of collection traits removed, library adapted to Boost.Range</para>
</listitem> </listitem>
<listitem>
<para><emphasis role="bold">1.34</emphasis></para>
<itemizedlist>
<listitem>
<functionname>lexicographical_compare()</functionname>
</listitem>
<listitem>
<functionname>join()</functionname> and <functionname>join_if()</functionname>
</listitem>
<listitem>
New comparison predicates <code>is_less</code>, <code>is_not_greater</code>
</listitem>
<listitem>
Negative indexes support (like Perl) in various algorihtms
(<code>*_head/tail</code>, <code>*_nth</code>).
</listitem>
</itemizedlist>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View File

@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<library name="String Algorithms" dirname="algorithm/string" xmlns:xi="http://www.w3.org/2001/XInclude" <library name="String Algorithms" dirname="algorithm/string" xmlns:xi="http://www.w3.org/2001/XInclude"
id="string_algo" last-revision="$Date$"> id="string_algo" last-revision="$Date$">
<libraryinfo> <libraryinfo>
@ -38,7 +44,7 @@
<xi:include href="quickref.xml"/> <xi:include href="quickref.xml"/>
<xi:include href="design.xml"/> <xi:include href="design.xml"/>
<xi:include href="concept.xml"/> <xi:include href="concept.xml"/>
<xi:include href="autodoc.boostbook"/> <xi:include href="autodoc.xml"/>
<xi:include href="rationale.xml"/> <xi:include href="rationale.xml"/>
<xi:include href="environment.xml"/> <xi:include href="environment.xml"/>
<xi:include href="credits.xml"/> <xi:include href="credits.xml"/>

View File

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
-->
<section id="string_algo.usage" last-revision="$Date$"> <section id="string_algo.usage" last-revision="$Date$">
<title>Usage</title> <title>Usage</title>
@ -283,9 +291,9 @@
// aBC // aBC
typedef split_iterator&lt;string::iterator&gt; string_split_iterator; typedef split_iterator&lt;string::iterator&gt; string_split_iterator;
for(string_find_iterator It= for(string_split_iterator It=
make_split_iterator(str1, first_finder("-*-", is_iequal())); make_split_iterator(str1, first_finder("-*-", is_iequal()));
It!=string_find_iterator(); It!=string_split_iterator();
++It) ++It)
{ {
cout &lt;&lt; copy_range&lt;std::string&gt;(*It) &lt;&lt; endl; cout &lt;&lt; copy_range&lt;std::string&gt;(*It) &lt;&lt; endl;

View File

@ -7,69 +7,12 @@
# #
# See http://www.boost.org for updates, documentation, and revision history. # See http://www.boost.org for updates, documentation, and revision history.
subproject libs/algorithm/string/example ;
exe conv_example exe conv_example : conv_example.cpp ;
: exe predicate_example : predicate_example.cpp ;
conv_example.cpp exe find_example : find_example.cpp ;
: exe replace_example : replace_example.cpp ;
<include>$(BOOST_ROOT) exe rle_example : rle_example.cpp ;
: exe trim_example : trim_example.cpp ;
; exe regex_example : regex_example.cpp /boost/regex//boost_regex ;
exe split_example : split_example.cpp ;
exe predicate_example
:
predicate_example.cpp
:
<include>$(BOOST_ROOT)
:
;
exe find_example
:
find_example.cpp
:
<include>$(BOOST_ROOT)
:
;
exe replace_example
:
replace_example.cpp
:
<include>$(BOOST_ROOT)
:
;
exe rle_example
:
rle_example.cpp
:
<include>$(BOOST_ROOT)
:
;
exe trim_example
:
trim_example.cpp
:
<include>$(BOOST_ROOT)
:
;
exe regex_example
:
regex_example.cpp
<lib>../../../regex/build/boost_regex
:
<include>$(BOOST_ROOT)
:
;
exe split_example
:
split_example.cpp
:
<include>$(BOOST_ROOT)
:
;

View File

@ -4,6 +4,11 @@
</head> </head>
<body> <body>
Automatic redirection failed, please go to Automatic redirection failed, please go to
<a href="../../../doc/html/string_algo.html">../../doc/html/string_algo.html</a> <a href="../../../doc/html/string_algo.html">../../doc/html/string_algo.html</a>
&nbsp;<hr>
<p><EFBFBD> Copyright Beman Dawes, 2001</p>
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy
at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
</body> </body>
</html> </html>

View File

@ -1,85 +0,0 @@
# Boost string_algo library test suite Jamfile ----------------------------
#
# Copyright Pavol Droba 2002-2003. Use, modification and
# distribution is subject to the Boost Software License, Version
# 1.0. (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
#
# See http://www.boost.org for updates, documentation, and revision history.
subproject libs/algorithm/string/test ;
# bring in rules for testing
import testing ;
# Make tests run by default.
DEPENDS all : test ;
{
test-suite algorithm/string
: [ run
trim_test.cpp
: :
:
std::locale-support
std::facet-support
: trim
]
[ run
conv_test.cpp
: :
:
std::locale-support
std::facet-support
: conv
]
[ run
predicate_test.cpp
: :
:
std::locale-support
std::facet-support
: predicate
]
[ run
find_test.cpp
: :
:
std::locale-support
std::facet-support
: find
]
[ run
split_test.cpp
: :
:
std::locale-support
std::facet-support
: split
]
[ run
join_test.cpp
: :
:
std::locale-support
std::facet-support
: join
]
[ run
replace_test.cpp
: :
:
std::locale-support
std::facet-support
: replace
]
[ run
regex_test.cpp
<lib>../../../regex/build/boost_regex
: :
:
: regex
]
;
}

View File

@ -122,6 +122,25 @@ void iterator_test()
BOOST_CHECK( tokens[2]==string("") ); BOOST_CHECK( tokens[2]==string("") );
BOOST_CHECK( tokens[3]==string("xx") ); BOOST_CHECK( tokens[3]==string("xx") );
BOOST_CHECK( tokens[4]==string("abb") ); BOOST_CHECK( tokens[4]==string("abb") );
find_iterator<string::iterator> fiter=make_find_iterator(str1, first_finder("xx"));
BOOST_CHECK(equals(*fiter, "xx"));
++fiter;
BOOST_CHECK(equals(*fiter, "xx"));
++fiter;
BOOST_CHECK(fiter==find_iterator<string::iterator>());
split_iterator<string::iterator> siter=make_split_iterator(str1, token_finder(is_any_of("-"), token_compress_on));
BOOST_CHECK(equals(*siter, "xx"));
++siter;
BOOST_CHECK(equals(*siter, "abc"));
++siter;
BOOST_CHECK(equals(*siter, "xx"));
++siter;
BOOST_CHECK(equals(*siter, "abb"));
++siter;
BOOST_CHECK(siter==split_iterator<string::iterator>());
} }
// test main // test main