forked from boostorg/algorithm
Compare commits
16 Commits
boost-1.37
...
boost-1.44
Author | SHA1 | Date | |
---|---|---|---|
f6c5cd6d2b | |||
bbd3220a1e | |||
9068069106 | |||
a37af3c81e | |||
f5885c6fb0 | |||
d45bb3545e | |||
d735b9fa1e | |||
62ec675581 | |||
e7cd4da67b | |||
6076f5a18e | |||
60cd5a0500 | |||
c33dad924d | |||
2f2935f07e | |||
3cbaafc27f | |||
c067b348bf | |||
c33935fa1f |
@ -59,7 +59,7 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy(
|
return ::boost::algorithm::detail::transform_range_copy(
|
||||||
Output,
|
Output,
|
||||||
as_literal(Input),
|
::boost::as_literal(Input),
|
||||||
::boost::algorithm::detail::to_lowerF<
|
::boost::algorithm::detail::to_lowerF<
|
||||||
typename range_value<RangeT>::type >(Loc));
|
typename range_value<RangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ namespace boost {
|
|||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
::boost::algorithm::detail::transform_range(
|
::boost::algorithm::detail::transform_range(
|
||||||
as_literal(Input),
|
::boost::as_literal(Input),
|
||||||
::boost::algorithm::detail::to_lowerF<
|
::boost::algorithm::detail::to_lowerF<
|
||||||
typename range_value<WritableRangeT>::type >(Loc));
|
typename range_value<WritableRangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
@ -124,7 +124,7 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy(
|
return ::boost::algorithm::detail::transform_range_copy(
|
||||||
Output,
|
Output,
|
||||||
as_literal(Input),
|
::boost::as_literal(Input),
|
||||||
::boost::algorithm::detail::to_upperF<
|
::boost::algorithm::detail::to_upperF<
|
||||||
typename range_value<RangeT>::type >(Loc));
|
typename range_value<RangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
@ -158,7 +158,7 @@ namespace boost {
|
|||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
::boost::algorithm::detail::transform_range(
|
::boost::algorithm::detail::transform_range(
|
||||||
as_literal(Input),
|
::boost::as_literal(Input),
|
||||||
::boost::algorithm::detail::to_upperF<
|
::boost::algorithm::detail::to_upperF<
|
||||||
typename range_value<WritableRangeT>::type >(Loc));
|
typename range_value<WritableRangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME range_value<RangeT>::type>
|
BOOST_STRING_TYPENAME range_value<RangeT>::type>
|
||||||
is_any_of( const RangeT& Set )
|
is_any_of( const RangeT& Set )
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(as_literal(Set));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(boost::as_literal(Set));
|
||||||
return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set);
|
return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ namespace boost {
|
|||||||
struct to_lowerF : public std::unary_function<CharT, CharT>
|
struct to_lowerF : public std::unary_function<CharT, CharT>
|
||||||
{
|
{
|
||||||
// Constructor
|
// Constructor
|
||||||
to_lowerF( const std::locale& Loc ) : m_Loc( Loc ) {}
|
to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {}
|
||||||
|
|
||||||
// Operation
|
// Operation
|
||||||
CharT operator ()( CharT Ch ) const
|
CharT operator ()( CharT Ch ) const
|
||||||
@ -39,11 +39,11 @@ 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<CharT>( Ch, m_Loc );
|
return std::tolower<CharT>( Ch, *m_Loc );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
const std::locale& m_Loc;
|
const std::locale* m_Loc;
|
||||||
};
|
};
|
||||||
|
|
||||||
// a toupper functor
|
// a toupper functor
|
||||||
@ -51,7 +51,7 @@ namespace boost {
|
|||||||
struct to_upperF : public std::unary_function<CharT, CharT>
|
struct to_upperF : public std::unary_function<CharT, CharT>
|
||||||
{
|
{
|
||||||
// Constructor
|
// Constructor
|
||||||
to_upperF( const std::locale& Loc ) : m_Loc( Loc ) {}
|
to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {}
|
||||||
|
|
||||||
// Operation
|
// Operation
|
||||||
CharT operator ()( CharT Ch ) const
|
CharT operator ()( CharT Ch ) const
|
||||||
@ -59,11 +59,11 @@ 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<CharT>( Ch, m_Loc );
|
return std::toupper<CharT>( Ch, *m_Loc );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
const std::locale& m_Loc;
|
const std::locale* m_Loc;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
||||||
@ -105,10 +105,10 @@ namespace boost {
|
|||||||
FunctorT Functor)
|
FunctorT Functor)
|
||||||
{
|
{
|
||||||
return SequenceT(
|
return SequenceT(
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
::boost::begin(Input),
|
::boost::begin(Input),
|
||||||
Functor),
|
Functor),
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
::boost::end(Input),
|
::boost::end(Input),
|
||||||
Functor));
|
Functor));
|
||||||
}
|
}
|
||||||
|
@ -32,8 +32,8 @@ namespace boost {
|
|||||||
struct is_classifiedF :
|
struct is_classifiedF :
|
||||||
public predicate_facade<is_classifiedF>
|
public predicate_facade<is_classifiedF>
|
||||||
{
|
{
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor from a locale
|
// Constructor from a locale
|
||||||
is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
|
is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
|
||||||
@ -72,8 +72,8 @@ namespace boost {
|
|||||||
typedef typename ::boost::remove_const<CharT>::type set_value_type;
|
typedef typename ::boost::remove_const<CharT>::type set_value_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
template<typename RangeT>
|
template<typename RangeT>
|
||||||
@ -171,7 +171,7 @@ namespace boost {
|
|||||||
// Check what kind of storage are we using right now
|
// Check what kind of storage are we using right now
|
||||||
if(use_fixed_storage(m_Size))
|
if(use_fixed_storage(m_Size))
|
||||||
{
|
{
|
||||||
// Using fixed storage, allocate new
|
// Using fixed storage, allocate new
|
||||||
set_value_type* pTemp=new set_value_type[Other.m_Size];
|
set_value_type* pTemp=new set_value_type[Other.m_Size];
|
||||||
DestStorage=pTemp;
|
DestStorage=pTemp;
|
||||||
m_Storage.m_dynSet=pTemp;
|
m_Storage.m_dynSet=pTemp;
|
||||||
@ -253,8 +253,8 @@ namespace boost {
|
|||||||
struct is_from_rangeF :
|
struct is_from_rangeF :
|
||||||
public predicate_facade< is_from_rangeF<CharT> >
|
public predicate_facade< is_from_rangeF<CharT> >
|
||||||
{
|
{
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
|
is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
|
||||||
@ -278,8 +278,8 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
|
pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
|
||||||
@ -303,8 +303,8 @@ namespace boost {
|
|||||||
public predicate_facade< pred_orF<Pred1T,Pred2T> >
|
public predicate_facade< pred_orF<Pred1T,Pred2T> >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
|
pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
|
||||||
@ -328,8 +328,8 @@ namespace boost {
|
|||||||
public predicate_facade< pred_notF<PredT> >
|
public predicate_facade< pred_notF<PredT> >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Boost.Lambda support
|
// Boost.ResultOf support
|
||||||
template <class Args> struct sig { typedef bool type; };
|
typedef bool result_type;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
pred_notF( PredT Pred ) : m_Pred(Pred) {}
|
pred_notF( PredT Pred ) : m_Pred(Pred) {}
|
||||||
|
@ -24,26 +24,7 @@ namespace boost {
|
|||||||
|
|
||||||
// find_format_copy (iterator variant) implementation -------------------------------//
|
// find_format_copy (iterator variant) implementation -------------------------------//
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename OutputIteratorT,
|
|
||||||
typename InputT,
|
|
||||||
typename FormatterT,
|
|
||||||
typename FindResultT >
|
|
||||||
inline OutputIteratorT find_format_copy_impl(
|
|
||||||
OutputIteratorT Output,
|
|
||||||
const InputT& Input,
|
|
||||||
FormatterT Formatter,
|
|
||||||
const FindResultT& FindResult )
|
|
||||||
{
|
|
||||||
return find_format_copy_impl2(
|
|
||||||
Output,
|
|
||||||
Input,
|
|
||||||
Formatter,
|
|
||||||
FindResult,
|
|
||||||
Formatter(FindResult) );
|
|
||||||
}
|
|
||||||
|
|
||||||
template<
|
|
||||||
typename OutputIteratorT,
|
typename OutputIteratorT,
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
@ -68,40 +49,48 @@ namespace boost {
|
|||||||
if ( !M )
|
if ( !M )
|
||||||
{
|
{
|
||||||
// Match not found - return original sequence
|
// Match not found - return original sequence
|
||||||
std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
|
Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
|
||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the beginning of the sequence
|
// Copy the beginning of the sequence
|
||||||
std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
|
Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
|
||||||
// Format find result
|
// Format find result
|
||||||
// Copy formated result
|
// Copy formated result
|
||||||
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
|
Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
|
||||||
// Copy the rest of the sequence
|
// Copy the rest of the sequence
|
||||||
std::copy( M.end(), ::boost::end(Input), Output );
|
Output = std::copy( M.end(), ::boost::end(Input), Output );
|
||||||
|
|
||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_format_copy implementation --------------------------------------------------//
|
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename InputT,
|
typename OutputIteratorT,
|
||||||
|
typename InputT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
typename FindResultT >
|
typename FindResultT >
|
||||||
inline InputT find_format_copy_impl(
|
inline OutputIteratorT find_format_copy_impl(
|
||||||
|
OutputIteratorT Output,
|
||||||
const InputT& Input,
|
const InputT& Input,
|
||||||
FormatterT Formatter,
|
FormatterT Formatter,
|
||||||
const FindResultT& FindResult)
|
const FindResultT& FindResult )
|
||||||
{
|
{
|
||||||
return find_format_copy_impl2(
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
return ::boost::algorithm::detail::find_format_copy_impl2(
|
||||||
|
Output,
|
||||||
Input,
|
Input,
|
||||||
Formatter,
|
Formatter,
|
||||||
FindResult,
|
FindResult,
|
||||||
Formatter(FindResult) );
|
Formatter(FindResult) );
|
||||||
|
} else {
|
||||||
|
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<
|
|
||||||
|
// find_format_copy implementation --------------------------------------------------//
|
||||||
|
|
||||||
|
template<
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
typename FindResultT,
|
typename FindResultT,
|
||||||
@ -138,24 +127,28 @@ namespace boost {
|
|||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace implementation ----------------------------------------------------//
|
template<
|
||||||
|
typename InputT,
|
||||||
template<
|
|
||||||
typename InputT,
|
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
typename FindResultT >
|
typename FindResultT >
|
||||||
inline void find_format_impl(
|
inline InputT find_format_copy_impl(
|
||||||
InputT& Input,
|
const InputT& Input,
|
||||||
FormatterT Formatter,
|
FormatterT Formatter,
|
||||||
const FindResultT& FindResult)
|
const FindResultT& FindResult)
|
||||||
{
|
{
|
||||||
find_format_impl2(
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
return ::boost::algorithm::detail::find_format_copy_impl2(
|
||||||
Input,
|
Input,
|
||||||
Formatter,
|
Formatter,
|
||||||
FindResult,
|
FindResult,
|
||||||
Formatter(FindResult) );
|
Formatter(FindResult) );
|
||||||
|
} else {
|
||||||
|
return Input;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// replace implementation ----------------------------------------------------//
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
@ -183,7 +176,25 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Replace match
|
// Replace match
|
||||||
replace( Input, M.begin(), M.end(), M.format_result() );
|
::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() );
|
||||||
|
}
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename InputT,
|
||||||
|
typename FormatterT,
|
||||||
|
typename FindResultT >
|
||||||
|
inline void find_format_impl(
|
||||||
|
InputT& Input,
|
||||||
|
FormatterT Formatter,
|
||||||
|
const FindResultT& FindResult)
|
||||||
|
{
|
||||||
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
::boost::algorithm::detail::find_format_impl2(
|
||||||
|
Input,
|
||||||
|
Formatter,
|
||||||
|
FindResult,
|
||||||
|
Formatter(FindResult) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
@ -24,29 +24,7 @@ namespace boost {
|
|||||||
|
|
||||||
// find_format_all_copy (iterator variant) implementation ---------------------------//
|
// find_format_all_copy (iterator variant) implementation ---------------------------//
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename OutputIteratorT,
|
|
||||||
typename InputT,
|
|
||||||
typename FinderT,
|
|
||||||
typename FormatterT,
|
|
||||||
typename FindResultT >
|
|
||||||
inline OutputIteratorT find_format_all_copy_impl(
|
|
||||||
OutputIteratorT Output,
|
|
||||||
const InputT& Input,
|
|
||||||
FinderT Finder,
|
|
||||||
FormatterT Formatter,
|
|
||||||
const FindResultT& FindResult )
|
|
||||||
{
|
|
||||||
return find_format_all_copy_impl2(
|
|
||||||
Output,
|
|
||||||
Input,
|
|
||||||
Finder,
|
|
||||||
Formatter,
|
|
||||||
FindResult,
|
|
||||||
Formatter(FindResult) );
|
|
||||||
}
|
|
||||||
|
|
||||||
template<
|
|
||||||
typename OutputIteratorT,
|
typename OutputIteratorT,
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FinderT,
|
typename FinderT,
|
||||||
@ -79,9 +57,9 @@ namespace boost {
|
|||||||
while( M )
|
while( M )
|
||||||
{
|
{
|
||||||
// Copy the beginning of the sequence
|
// Copy the beginning of the sequence
|
||||||
std::copy( LastMatch, M.begin(), Output );
|
Output = std::copy( LastMatch, M.begin(), Output );
|
||||||
// Copy formated result
|
// Copy formated result
|
||||||
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
|
Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
|
||||||
|
|
||||||
// Proceed to the next match
|
// Proceed to the next match
|
||||||
LastMatch=M.end();
|
LastMatch=M.end();
|
||||||
@ -89,33 +67,40 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy the rest of the sequence
|
// Copy the rest of the sequence
|
||||||
std::copy( LastMatch, ::boost::end(Input), Output );
|
Output = std::copy( LastMatch, ::boost::end(Input), Output );
|
||||||
|
|
||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_format_all_copy implementation ----------------------------------------------//
|
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename InputT,
|
typename OutputIteratorT,
|
||||||
|
typename InputT,
|
||||||
typename FinderT,
|
typename FinderT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
typename FindResultT >
|
typename FindResultT >
|
||||||
inline InputT find_format_all_copy_impl(
|
inline OutputIteratorT find_format_all_copy_impl(
|
||||||
|
OutputIteratorT Output,
|
||||||
const InputT& Input,
|
const InputT& Input,
|
||||||
FinderT Finder,
|
FinderT Finder,
|
||||||
FormatterT Formatter,
|
FormatterT Formatter,
|
||||||
const FindResultT& FindResult)
|
const FindResultT& FindResult )
|
||||||
{
|
{
|
||||||
return find_format_all_copy_impl2(
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
return ::boost::algorithm::detail::find_format_all_copy_impl2(
|
||||||
|
Output,
|
||||||
Input,
|
Input,
|
||||||
Finder,
|
Finder,
|
||||||
Formatter,
|
Formatter,
|
||||||
FindResult,
|
FindResult,
|
||||||
Formatter(FindResult) );
|
Formatter(FindResult) );
|
||||||
|
} else {
|
||||||
|
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<
|
// find_format_all_copy implementation ----------------------------------------------//
|
||||||
|
|
||||||
|
template<
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FinderT,
|
typename FinderT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
@ -159,32 +144,36 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy the rest of the sequence
|
// Copy the rest of the sequence
|
||||||
insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
|
::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
|
||||||
|
|
||||||
return Output;
|
return Output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_format_all implementation ------------------------------------------------//
|
template<
|
||||||
|
typename InputT,
|
||||||
template<
|
|
||||||
typename InputT,
|
|
||||||
typename FinderT,
|
typename FinderT,
|
||||||
typename FormatterT,
|
typename FormatterT,
|
||||||
typename FindResultT >
|
typename FindResultT >
|
||||||
inline void find_format_all_impl(
|
inline InputT find_format_all_copy_impl(
|
||||||
InputT& Input,
|
const InputT& Input,
|
||||||
FinderT Finder,
|
FinderT Finder,
|
||||||
FormatterT Formatter,
|
FormatterT Formatter,
|
||||||
FindResultT FindResult)
|
const FindResultT& FindResult)
|
||||||
{
|
{
|
||||||
find_format_all_impl2(
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
return ::boost::algorithm::detail::find_format_all_copy_impl2(
|
||||||
Input,
|
Input,
|
||||||
Finder,
|
Finder,
|
||||||
Formatter,
|
Formatter,
|
||||||
FindResult,
|
FindResult,
|
||||||
Formatter(FindResult) );
|
Formatter(FindResult) );
|
||||||
|
} else {
|
||||||
|
return Input;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find_format_all implementation ------------------------------------------------//
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename InputT,
|
typename InputT,
|
||||||
typename FinderT,
|
typename FinderT,
|
||||||
@ -230,14 +219,14 @@ namespace boost {
|
|||||||
SearchIt=M.end();
|
SearchIt=M.end();
|
||||||
|
|
||||||
// Copy formated replace to the storage
|
// Copy formated replace to the storage
|
||||||
copy_to_storage( Storage, M.format_result() );
|
::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() );
|
||||||
|
|
||||||
// Find range for a next match
|
// Find range for a next match
|
||||||
M=Finder( SearchIt, ::boost::end(Input) );
|
M=Finder( SearchIt, ::boost::end(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// process the last segment
|
// process the last segment
|
||||||
InsertIt=process_segment(
|
InsertIt=::boost::algorithm::detail::process_segment(
|
||||||
Storage,
|
Storage,
|
||||||
Input,
|
Input,
|
||||||
InsertIt,
|
InsertIt,
|
||||||
@ -247,15 +236,36 @@ namespace boost {
|
|||||||
if ( Storage.empty() )
|
if ( Storage.empty() )
|
||||||
{
|
{
|
||||||
// Truncate input
|
// Truncate input
|
||||||
erase( Input, InsertIt, ::boost::end(Input) );
|
::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Copy remaining data to the end of input
|
// Copy remaining data to the end of input
|
||||||
insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
|
::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename InputT,
|
||||||
|
typename FinderT,
|
||||||
|
typename FormatterT,
|
||||||
|
typename FindResultT >
|
||||||
|
inline void find_format_all_impl(
|
||||||
|
InputT& Input,
|
||||||
|
FinderT Finder,
|
||||||
|
FormatterT Formatter,
|
||||||
|
FindResultT FindResult)
|
||||||
|
{
|
||||||
|
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
|
||||||
|
::boost::algorithm::detail::find_format_all_impl2(
|
||||||
|
Input,
|
||||||
|
Finder,
|
||||||
|
Formatter,
|
||||||
|
FindResult,
|
||||||
|
Formatter(FindResult) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
@ -52,7 +52,9 @@ namespace boost {
|
|||||||
find_format_store& operator=( FindResultT FindResult )
|
find_format_store& operator=( FindResultT FindResult )
|
||||||
{
|
{
|
||||||
iterator_range<ForwardIteratorT>::operator=(FindResult);
|
iterator_range<ForwardIteratorT>::operator=(FindResult);
|
||||||
|
if( !this->empty() ) {
|
||||||
m_FormatResult=m_Formatter(FindResult);
|
m_FormatResult=m_Formatter(FindResult);
|
||||||
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -68,6 +70,15 @@ namespace boost {
|
|||||||
const formatter_type& m_Formatter;
|
const formatter_type& m_Formatter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename InputT, typename FindResultT>
|
||||||
|
bool check_find_result(InputT& Input, FindResultT& FindResult)
|
||||||
|
{
|
||||||
|
typedef BOOST_STRING_TYPENAME
|
||||||
|
range_const_iterator<InputT>::type input_iterator_type;
|
||||||
|
iterator_range<input_iterator_type> ResultRange(FindResult);
|
||||||
|
return !ResultRange.empty();
|
||||||
|
}
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
#endif
|
#endif
|
||||||
|
@ -382,7 +382,7 @@ namespace boost {
|
|||||||
typedef BOOST_STRING_TYPENAME boost::detail::
|
typedef BOOST_STRING_TYPENAME boost::detail::
|
||||||
iterator_traits<ForwardIteratorT>::iterator_category category;
|
iterator_traits<ForwardIteratorT>::iterator_category category;
|
||||||
|
|
||||||
return find_head_impl( Begin, End, N, category() );
|
return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename ForwardIteratorT >
|
template< typename ForwardIteratorT >
|
||||||
@ -456,7 +456,7 @@ namespace boost {
|
|||||||
typedef BOOST_STRING_TYPENAME boost::detail::
|
typedef BOOST_STRING_TYPENAME boost::detail::
|
||||||
iterator_traits<ForwardIteratorT>::iterator_category category;
|
iterator_traits<ForwardIteratorT>::iterator_category category;
|
||||||
|
|
||||||
return find_tail_impl( Begin, End, N, category() );
|
return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -484,14 +484,14 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
if(m_N>=0)
|
if(m_N>=0)
|
||||||
{
|
{
|
||||||
return find_head_impl( Begin, End, m_N );
|
return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iterator_range<ForwardIteratorT> Res=
|
iterator_range<ForwardIteratorT> Res=
|
||||||
find_tail_impl( Begin, End, -m_N );
|
::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N );
|
||||||
|
|
||||||
return make_iterator_range(Begin, Res.begin());
|
return ::boost::make_iterator_range(Begin, Res.begin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,14 +522,14 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
if(m_N>=0)
|
if(m_N>=0)
|
||||||
{
|
{
|
||||||
return find_tail_impl( Begin, End, m_N );
|
return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iterator_range<ForwardIteratorT> Res=
|
iterator_range<ForwardIteratorT> Res=
|
||||||
find_head_impl( Begin, End, -m_N );
|
::boost::algorithm::detail::find_head_impl( Begin, End, -m_N );
|
||||||
|
|
||||||
return make_iterator_range(Res.end(), End);
|
return ::boost::make_iterator_range(Res.end(), End);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ namespace boost {
|
|||||||
// instantiate match result
|
// instantiate match result
|
||||||
match_results<input_iterator_type> result;
|
match_results<input_iterator_type> result;
|
||||||
// search for a match
|
// search for a match
|
||||||
if ( regex_search( Begin, End, result, m_Rx, m_MatchFlags ) )
|
if ( ::boost::regex_search( Begin, End, result, m_Rx, m_MatchFlags ) )
|
||||||
{
|
{
|
||||||
// construct a result
|
// construct a result
|
||||||
return result_type( result );
|
return result_type( result );
|
||||||
|
@ -63,7 +63,7 @@ namespace boost {
|
|||||||
|
|
||||||
iterator_range<ForwardIterator1T> Result
|
iterator_range<ForwardIterator1T> Result
|
||||||
=last_finder(
|
=last_finder(
|
||||||
make_iterator_range(SubBegin, SubEnd),
|
::boost::make_iterator_range(SubBegin, SubEnd),
|
||||||
Comp)(Begin, End);
|
Comp)(Begin, End);
|
||||||
|
|
||||||
return !Result.empty() && Result.end()==End;
|
return !Result.empty() && Result.end()==End;
|
||||||
|
@ -68,7 +68,7 @@ namespace boost {
|
|||||||
ForwardIteratorT SegmentEnd )
|
ForwardIteratorT SegmentEnd )
|
||||||
{
|
{
|
||||||
// Copy data from the storage until the beginning of the segment
|
// Copy data from the storage until the beginning of the segment
|
||||||
ForwardIteratorT It=move_from_storage( Storage, InsertIt, SegmentBegin );
|
ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin );
|
||||||
|
|
||||||
// 3 cases are possible :
|
// 3 cases are possible :
|
||||||
// a) Storage is empty, It==SegmentBegin
|
// a) Storage is empty, It==SegmentBegin
|
||||||
@ -125,7 +125,7 @@ namespace boost {
|
|||||||
|
|
||||||
{
|
{
|
||||||
// Call replace to do the job
|
// Call replace to do the job
|
||||||
replace( Input, InsertIt, SegmentBegin, Storage );
|
::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage );
|
||||||
// Empty the storage
|
// Empty the storage
|
||||||
Storage.clear();
|
Storage.clear();
|
||||||
// Iterators were not changed, simply return the end of segment
|
// Iterators were not changed, simply return the end of segment
|
||||||
|
@ -41,7 +41,7 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME InputT::iterator At,
|
BOOST_STRING_TYPENAME InputT::iterator At,
|
||||||
const InsertT& Insert )
|
const InsertT& Insert )
|
||||||
{
|
{
|
||||||
insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
|
::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase helper ---------------------------------------------------//
|
// erase helper ---------------------------------------------------//
|
||||||
@ -184,11 +184,11 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
if(From!=To)
|
if(From!=To)
|
||||||
{
|
{
|
||||||
replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
|
::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
|
::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,36 +20,6 @@ namespace boost {
|
|||||||
|
|
||||||
// trim iterator helper -----------------------------------------------//
|
// trim iterator helper -----------------------------------------------//
|
||||||
|
|
||||||
// Search for first non matching character from the beginning of the sequence
|
|
||||||
template< typename ForwardIteratorT, typename PredicateT >
|
|
||||||
inline ForwardIteratorT trim_begin(
|
|
||||||
ForwardIteratorT InBegin,
|
|
||||||
ForwardIteratorT InEnd,
|
|
||||||
PredicateT IsSpace )
|
|
||||||
{
|
|
||||||
ForwardIteratorT It=InBegin;
|
|
||||||
for(; It!=InEnd; ++It )
|
|
||||||
{
|
|
||||||
if (!IsSpace(*It))
|
|
||||||
return It;
|
|
||||||
}
|
|
||||||
|
|
||||||
return It;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search for first non matching character from the end of the sequence
|
|
||||||
template< typename ForwardIteratorT, typename PredicateT >
|
|
||||||
inline ForwardIteratorT trim_end(
|
|
||||||
ForwardIteratorT InBegin,
|
|
||||||
ForwardIteratorT InEnd,
|
|
||||||
PredicateT IsSpace )
|
|
||||||
{
|
|
||||||
typedef BOOST_STRING_TYPENAME boost::detail::
|
|
||||||
iterator_traits<ForwardIteratorT>::iterator_category category;
|
|
||||||
|
|
||||||
return trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
|
|
||||||
}
|
|
||||||
|
|
||||||
template< typename ForwardIteratorT, typename PredicateT >
|
template< typename ForwardIteratorT, typename PredicateT >
|
||||||
inline ForwardIteratorT trim_end_iter_select(
|
inline ForwardIteratorT trim_end_iter_select(
|
||||||
ForwardIteratorT InBegin,
|
ForwardIteratorT InBegin,
|
||||||
@ -86,6 +56,36 @@ namespace boost {
|
|||||||
|
|
||||||
return InBegin;
|
return InBegin;
|
||||||
}
|
}
|
||||||
|
// Search for first non matching character from the beginning of the sequence
|
||||||
|
template< typename ForwardIteratorT, typename PredicateT >
|
||||||
|
inline ForwardIteratorT trim_begin(
|
||||||
|
ForwardIteratorT InBegin,
|
||||||
|
ForwardIteratorT InEnd,
|
||||||
|
PredicateT IsSpace )
|
||||||
|
{
|
||||||
|
ForwardIteratorT It=InBegin;
|
||||||
|
for(; It!=InEnd; ++It )
|
||||||
|
{
|
||||||
|
if (!IsSpace(*It))
|
||||||
|
return It;
|
||||||
|
}
|
||||||
|
|
||||||
|
return It;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search for first non matching character from the end of the sequence
|
||||||
|
template< typename ForwardIteratorT, typename PredicateT >
|
||||||
|
inline ForwardIteratorT trim_end(
|
||||||
|
ForwardIteratorT InBegin,
|
||||||
|
ForwardIteratorT InEnd,
|
||||||
|
PredicateT IsSpace )
|
||||||
|
{
|
||||||
|
typedef BOOST_STRING_TYPENAME boost::detail::
|
||||||
|
iterator_traits<ForwardIteratorT>::iterator_category category;
|
||||||
|
|
||||||
|
return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -54,11 +54,11 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type>& SearchRange )
|
range_const_iterator<RangeT>::type>& SearchRange )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase range algorithm
|
//! Erase range algorithm
|
||||||
@ -72,10 +72,10 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<SequenceT>::type>& SearchRange )
|
range_const_iterator<SequenceT>::type>& SearchRange )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase range algorithm
|
//! Erase range algorithm
|
||||||
@ -93,10 +93,10 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_iterator<SequenceT>::type>& SearchRange )
|
range_iterator<SequenceT>::type>& SearchRange )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_first --------------------------------------------------------//
|
// erase_first --------------------------------------------------------//
|
||||||
@ -124,11 +124,11 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Search )
|
const Range2T& Search )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase first algorithm
|
//! Erase first algorithm
|
||||||
@ -140,10 +140,10 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase first algorithm
|
//! Erase first algorithm
|
||||||
@ -159,10 +159,10 @@ namespace boost {
|
|||||||
SequenceT& Input,
|
SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_first ( case insensitive ) ------------------------------------//
|
// erase_first ( case insensitive ) ------------------------------------//
|
||||||
@ -193,11 +193,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase first algorithm ( case insensitive )
|
//! Erase first algorithm ( case insensitive )
|
||||||
@ -210,10 +210,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase first algorithm ( case insensitive )
|
//! Erase first algorithm ( case insensitive )
|
||||||
@ -231,10 +231,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_last --------------------------------------------------------//
|
// erase_last --------------------------------------------------------//
|
||||||
@ -262,11 +262,11 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Search )
|
const Range2T& Search )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase last algorithm
|
//! Erase last algorithm
|
||||||
@ -278,10 +278,10 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase last algorithm
|
//! Erase last algorithm
|
||||||
@ -297,10 +297,10 @@ namespace boost {
|
|||||||
SequenceT& Input,
|
SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_last ( case insensitive ) ------------------------------------//
|
// erase_last ( case insensitive ) ------------------------------------//
|
||||||
@ -331,11 +331,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase last algorithm ( case insensitive )
|
//! Erase last algorithm ( case insensitive )
|
||||||
@ -348,10 +348,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase last algorithm ( case insensitive )
|
//! Erase last algorithm ( case insensitive )
|
||||||
@ -369,10 +369,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_nth --------------------------------------------------------------------//
|
// erase_nth --------------------------------------------------------------------//
|
||||||
@ -404,11 +404,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
int Nth )
|
int Nth )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase nth algorithm
|
//! Erase nth algorithm
|
||||||
@ -421,10 +421,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
int Nth )
|
int Nth )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase nth algorithm
|
//! Erase nth algorithm
|
||||||
@ -443,10 +443,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
int Nth )
|
int Nth )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_nth ( case insensitive ) ---------------------------------------------//
|
// erase_nth ( case insensitive ) ---------------------------------------------//
|
||||||
@ -480,11 +480,11 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc)),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase nth algorithm
|
//! Erase nth algorithm
|
||||||
@ -498,9 +498,9 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc)),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,10 +522,10 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc)),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -555,11 +555,11 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Search )
|
const Range2T& Search )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all algorithm
|
//! Erase all algorithm
|
||||||
@ -571,10 +571,10 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all algorithm
|
//! Erase all algorithm
|
||||||
@ -590,10 +590,10 @@ namespace boost {
|
|||||||
SequenceT& Input,
|
SequenceT& Input,
|
||||||
const RangeT& Search )
|
const RangeT& Search )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_all ( case insensitive ) ------------------------------------//
|
// erase_all ( case insensitive ) ------------------------------------//
|
||||||
@ -624,11 +624,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all algorithm ( case insensitive )
|
//! Erase all algorithm ( case insensitive )
|
||||||
@ -641,10 +641,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all algorithm ( case insensitive )
|
//! Erase all algorithm ( case insensitive )
|
||||||
@ -662,10 +662,10 @@ namespace boost {
|
|||||||
const RangeT& Search,
|
const RangeT& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
empty_formatter(Input) );
|
::boost::algorithm::empty_formatter(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_head --------------------------------------------------------------------//
|
// erase_head --------------------------------------------------------------------//
|
||||||
@ -696,11 +696,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase head algorithm
|
//! Erase head algorithm
|
||||||
@ -712,10 +712,10 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase head algorithm
|
//! Erase head algorithm
|
||||||
@ -734,10 +734,10 @@ namespace boost {
|
|||||||
SequenceT& Input,
|
SequenceT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_tail --------------------------------------------------------------------//
|
// erase_tail --------------------------------------------------------------------//
|
||||||
@ -752,7 +752,7 @@ namespace boost {
|
|||||||
|
|
||||||
\param Output An output iterator to which the result will be copied
|
\param Output An output iterator to which the result will be copied
|
||||||
\param Input An input string
|
\param Input An input string
|
||||||
\param N Length of the head.
|
\param N Length of the tail.
|
||||||
For N>=0, at most N characters are extracted.
|
For N>=0, at most N characters are extracted.
|
||||||
For N<0, size(Input)-|N| characters are extracted.
|
For N<0, size(Input)-|N| characters are extracted.
|
||||||
\return An output iterator pointing just after the last inserted character or
|
\return An output iterator pointing just after the last inserted character or
|
||||||
@ -768,11 +768,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase tail algorithm
|
//! Erase tail algorithm
|
||||||
@ -784,10 +784,10 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase tail algorithm
|
//! Erase tail algorithm
|
||||||
@ -797,7 +797,7 @@ namespace boost {
|
|||||||
considered to be the tail. The input sequence is modified in-place.
|
considered to be the tail. The input sequence is modified in-place.
|
||||||
|
|
||||||
\param Input An input string
|
\param Input An input string
|
||||||
\param N Length of the head
|
\param N Length of the tail
|
||||||
For N>=0, at most N characters are extracted.
|
For N>=0, at most N characters are extracted.
|
||||||
For N<0, size(Input)-|N| characters are extracted.
|
For N<0, size(Input)-|N| characters are extracted.
|
||||||
*/
|
*/
|
||||||
@ -806,10 +806,10 @@ namespace boost {
|
|||||||
SequenceT& Input,
|
SequenceT& Input,
|
||||||
int N )
|
int N )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -53,7 +53,7 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
const FinderT& Finder)
|
const FinderT& Finder)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
return Finder(::boost::begin(lit_input),::boost::end(lit_input));
|
return Finder(::boost::begin(lit_input),::boost::end(lit_input));
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ namespace boost {
|
|||||||
Range1T& Input,
|
Range1T& Input,
|
||||||
const Range2T& Search)
|
const Range2T& Search)
|
||||||
{
|
{
|
||||||
return find(Input, first_finder(Search));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find first algorithm ( case insensitive )
|
//! Find first algorithm ( case insensitive )
|
||||||
@ -108,7 +108,7 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, first_finder(Search,is_iequal(Loc)));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search,is_iequal(Loc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_last -----------------------------------------------//
|
// find_last -----------------------------------------------//
|
||||||
@ -134,7 +134,7 @@ namespace boost {
|
|||||||
Range1T& Input,
|
Range1T& Input,
|
||||||
const Range2T& Search)
|
const Range2T& Search)
|
||||||
{
|
{
|
||||||
return find(Input, last_finder(Search));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find last algorithm ( case insensitive )
|
//! Find last algorithm ( case insensitive )
|
||||||
@ -161,7 +161,7 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, last_finder(Search, is_iequal(Loc)));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search, is_iequal(Loc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_nth ----------------------------------------------------------------------//
|
// find_nth ----------------------------------------------------------------------//
|
||||||
@ -189,7 +189,7 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
int Nth)
|
int Nth)
|
||||||
{
|
{
|
||||||
return find(Input, nth_finder(Search,Nth));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find n-th algorithm ( case insensitive ).
|
//! Find n-th algorithm ( case insensitive ).
|
||||||
@ -220,7 +220,7 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, nth_finder(Search,Nth,is_iequal(Loc)));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth,is_iequal(Loc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_head ----------------------------------------------------------------------//
|
// find_head ----------------------------------------------------------------------//
|
||||||
@ -250,14 +250,14 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
int N)
|
int N)
|
||||||
{
|
{
|
||||||
return find(Input, head_finder(N));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_tail ----------------------------------------------------------------------//
|
// find_tail ----------------------------------------------------------------------//
|
||||||
|
|
||||||
//! Find tail algorithm
|
//! Find tail algorithm
|
||||||
/*!
|
/*!
|
||||||
Get the head of the input. Head is a suffix of the string of the
|
Get the tail of the input. Tail is a suffix of the string of the
|
||||||
given size. If the input is shorter then required, whole input if considered
|
given size. If the input is shorter then required, whole input if considered
|
||||||
to be the tail.
|
to be the tail.
|
||||||
|
|
||||||
@ -281,7 +281,7 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
int N)
|
int N)
|
||||||
{
|
{
|
||||||
return find(Input, tail_finder(N));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_token --------------------------------------------------------------------//
|
// find_token --------------------------------------------------------------------//
|
||||||
@ -311,7 +311,7 @@ namespace boost {
|
|||||||
PredicateT Pred,
|
PredicateT Pred,
|
||||||
token_compress_mode_type eCompress=token_compress_off)
|
token_compress_mode_type eCompress=token_compress_off)
|
||||||
{
|
{
|
||||||
return find(Input, token_finder(Pred, eCompress));
|
return ::boost::algorithm::find(Input, ::boost::algorithm::token_finder(Pred, eCompress));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -62,15 +62,18 @@ namespace boost {
|
|||||||
FormatterT Formatter )
|
FormatterT Formatter )
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
return detail::find_format_copy_impl(
|
return detail::find_format_copy_impl(
|
||||||
Output,
|
Output,
|
||||||
@ -93,13 +96,16 @@ namespace boost {
|
|||||||
FormatterT Formatter )
|
FormatterT Formatter )
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
return detail::find_format_copy_impl(
|
return detail::find_format_copy_impl(
|
||||||
Input,
|
Input,
|
||||||
@ -126,13 +132,16 @@ namespace boost {
|
|||||||
FormatterT Formatter)
|
FormatterT Formatter)
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
detail::find_format_impl(
|
detail::find_format_impl(
|
||||||
Input,
|
Input,
|
||||||
@ -172,15 +181,18 @@ namespace boost {
|
|||||||
FormatterT Formatter)
|
FormatterT Formatter)
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
return detail::find_format_all_copy_impl(
|
return detail::find_format_all_copy_impl(
|
||||||
Output,
|
Output,
|
||||||
@ -204,13 +216,16 @@ namespace boost {
|
|||||||
FormatterT Formatter )
|
FormatterT Formatter )
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
return detail::find_format_all_copy_impl(
|
return detail::find_format_all_copy_impl(
|
||||||
Input,
|
Input,
|
||||||
@ -239,13 +254,16 @@ namespace boost {
|
|||||||
FormatterT Formatter )
|
FormatterT Formatter )
|
||||||
{
|
{
|
||||||
// Concept check
|
// Concept check
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,
|
||||||
function_requires<
|
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
BOOST_CONCEPT_ASSERT((
|
||||||
FormatterConcept<
|
FormatterConcept<
|
||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
detail::find_format_all_impl(
|
detail::find_format_all_impl(
|
||||||
Input,
|
Input,
|
||||||
|
@ -113,8 +113,8 @@ namespace boost {
|
|||||||
FinderT Finder ) :
|
FinderT Finder ) :
|
||||||
detail::find_iterator_base<IteratorT>(Finder,0)
|
detail::find_iterator_base<IteratorT>(Finder,0)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
|
||||||
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
|
m_Match=::boost::make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
|
||||||
m_End=::boost::end(lit_col);
|
m_End=::boost::end(lit_col);
|
||||||
|
|
||||||
increment();
|
increment();
|
||||||
@ -240,7 +240,7 @@ namespace boost {
|
|||||||
m_Match(Other.m_Match),
|
m_Match(Other.m_Match),
|
||||||
m_Next(Other.m_Next),
|
m_Next(Other.m_Next),
|
||||||
m_End(Other.m_End),
|
m_End(Other.m_End),
|
||||||
m_bEof(false)
|
m_bEof(Other.m_bEof)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Constructor
|
//! Constructor
|
||||||
@ -273,7 +273,7 @@ namespace boost {
|
|||||||
detail::find_iterator_base<IteratorT>(Finder,0),
|
detail::find_iterator_base<IteratorT>(Finder,0),
|
||||||
m_bEof(false)
|
m_bEof(false)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
|
||||||
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
|
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
|
||||||
m_Next=::boost::begin(lit_col);
|
m_Next=::boost::begin(lit_col);
|
||||||
m_End=::boost::end(lit_col);
|
m_End=::boost::end(lit_col);
|
||||||
|
@ -56,7 +56,7 @@ namespace boost {
|
|||||||
detail::first_finderF<
|
detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
is_equal>( as_literal(Search), is_equal() ) ;
|
is_equal>( ::boost::as_literal(Search), is_equal() ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "First" finder
|
//! "First" finder
|
||||||
@ -74,7 +74,7 @@ namespace boost {
|
|||||||
detail::first_finderF<
|
detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
PredicateT>( as_literal(Search), Comp );
|
PredicateT>( ::boost::as_literal(Search), Comp );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Last" finder
|
//! "Last" finder
|
||||||
@ -97,7 +97,7 @@ namespace boost {
|
|||||||
detail::last_finderF<
|
detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
is_equal>( as_literal(Search), is_equal() );
|
is_equal>( ::boost::as_literal(Search), is_equal() );
|
||||||
}
|
}
|
||||||
//! "Last" finder
|
//! "Last" finder
|
||||||
/*!
|
/*!
|
||||||
@ -113,7 +113,7 @@ namespace boost {
|
|||||||
detail::last_finderF<
|
detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
PredicateT>( as_literal(Search), Comp ) ;
|
PredicateT>( ::boost::as_literal(Search), Comp ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Nth" finder
|
//! "Nth" finder
|
||||||
@ -139,7 +139,7 @@ namespace boost {
|
|||||||
detail::nth_finderF<
|
detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
is_equal>( as_literal(Search), Nth, is_equal() ) ;
|
is_equal>( ::boost::as_literal(Search), Nth, is_equal() ) ;
|
||||||
}
|
}
|
||||||
//! "Nth" finder
|
//! "Nth" finder
|
||||||
/*!
|
/*!
|
||||||
@ -158,7 +158,7 @@ namespace boost {
|
|||||||
detail::nth_finderF<
|
detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<RangeT>::type,
|
||||||
PredicateT>( as_literal(Search), Nth, Comp );
|
PredicateT>( ::boost::as_literal(Search), Nth, Comp );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Head" finder
|
//! "Head" finder
|
||||||
|
@ -50,7 +50,7 @@ namespace boost {
|
|||||||
{
|
{
|
||||||
return detail::const_formatF<
|
return detail::const_formatF<
|
||||||
iterator_range<
|
iterator_range<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(as_literal(Format));
|
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(::boost::as_literal(Format));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Identity formatter
|
//! Identity formatter
|
||||||
|
@ -74,11 +74,13 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
FinderT Finder )
|
FinderT Finder )
|
||||||
{
|
{
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<
|
||||||
BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
|
FinderT,
|
||||||
|
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_iterator<RangeT>::type input_iterator_type;
|
range_iterator<RangeT>::type input_iterator_type;
|
||||||
@ -94,12 +96,12 @@ namespace boost {
|
|||||||
transform_iter_type;
|
transform_iter_type;
|
||||||
|
|
||||||
transform_iter_type itBegin=
|
transform_iter_type itBegin=
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
|
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
|
||||||
copy_range_type());
|
copy_range_type());
|
||||||
|
|
||||||
transform_iter_type itEnd=
|
transform_iter_type itEnd=
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
find_iterator_type(),
|
find_iterator_type(),
|
||||||
copy_range_type());
|
copy_range_type());
|
||||||
|
|
||||||
@ -143,11 +145,12 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
FinderT Finder )
|
FinderT Finder )
|
||||||
{
|
{
|
||||||
function_requires<
|
BOOST_CONCEPT_ASSERT((
|
||||||
FinderConcept<FinderT,
|
FinderConcept<FinderT,
|
||||||
BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
|
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
|
||||||
|
));
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_iterator<RangeT>::type input_iterator_type;
|
range_iterator<RangeT>::type input_iterator_type;
|
||||||
@ -163,12 +166,12 @@ namespace boost {
|
|||||||
transform_iter_type;
|
transform_iter_type;
|
||||||
|
|
||||||
transform_iter_type itBegin=
|
transform_iter_type itBegin=
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
|
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
|
||||||
copy_range_type() );
|
copy_range_type() );
|
||||||
|
|
||||||
transform_iter_type itEnd=
|
transform_iter_type itEnd=
|
||||||
make_transform_iterator(
|
::boost::make_transform_iterator(
|
||||||
find_iterator_type(),
|
find_iterator_type(),
|
||||||
copy_range_type() );
|
copy_range_type() );
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ namespace boost {
|
|||||||
for(;itBegin!=itEnd; ++itBegin)
|
for(;itBegin!=itEnd; ++itBegin)
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, ::boost::end(Result), as_literal(Separator));
|
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, ::boost::end(Result), *itBegin);
|
detail::insert(Result, ::boost::end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
@ -123,7 +123,7 @@ namespace boost {
|
|||||||
if(Pred(*itBegin))
|
if(Pred(*itBegin))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, ::boost::end(Result), as_literal(Separator));
|
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, ::boost::end(Result), *itBegin);
|
detail::insert(Result, ::boost::end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
|
@ -59,8 +59,8 @@ 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<Range1T>::type> lit_input(::boost::as_literal(Input));
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
@ -92,7 +92,7 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Test)
|
const Range2T& Test)
|
||||||
{
|
{
|
||||||
return starts_with(Input, Test, is_equal());
|
return ::boost::algorithm::starts_with(Input, Test, is_equal());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! 'Starts with' predicate ( case insensitive )
|
//! 'Starts with' predicate ( case insensitive )
|
||||||
@ -114,7 +114,7 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return starts_with(Input, Test, is_iequal(Loc));
|
return ::boost::algorithm::starts_with(Input, Test, is_iequal(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -141,8 +141,8 @@ 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<Range1T>::type> lit_input(::boost::as_literal(Input));
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
@ -169,7 +169,7 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Test)
|
const Range2T& Test)
|
||||||
{
|
{
|
||||||
return ends_with(Input, Test, is_equal());
|
return ::boost::algorithm::ends_with(Input, Test, is_equal());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! 'Ends with' predicate ( case insensitive )
|
//! 'Ends with' predicate ( case insensitive )
|
||||||
@ -191,7 +191,7 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return ends_with(Input, Test, is_iequal(Loc));
|
return ::boost::algorithm::ends_with(Input, Test, is_iequal(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
// contains predicate -----------------------------------------------//
|
// contains predicate -----------------------------------------------//
|
||||||
@ -215,17 +215,17 @@ 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<Range1T>::type> lit_input(::boost::as_literal(Input));
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
|
||||||
|
|
||||||
if (empty(lit_test))
|
if (::boost::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(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
|
bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
|
||||||
return bResult;
|
return bResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Test)
|
const Range2T& Test)
|
||||||
{
|
{
|
||||||
return contains(Input, Test, is_equal());
|
return ::boost::algorithm::contains(Input, Test, is_equal());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! 'Contains' predicate ( case insensitive )
|
//! 'Contains' predicate ( case insensitive )
|
||||||
@ -259,7 +259,7 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return contains(Input, Test, is_iequal(Loc));
|
return ::boost::algorithm::contains(Input, Test, is_iequal(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
// equals predicate -----------------------------------------------//
|
// equals predicate -----------------------------------------------//
|
||||||
@ -286,8 +286,8 @@ 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<Range1T>::type> lit_input(::boost::as_literal(Input));
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
@ -319,7 +319,7 @@ namespace boost {
|
|||||||
const Range1T& Input,
|
const Range1T& Input,
|
||||||
const Range2T& Test)
|
const Range2T& Test)
|
||||||
{
|
{
|
||||||
return equals(Input, Test, is_equal());
|
return ::boost::algorithm::equals(Input, Test, is_equal());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! 'Equals' predicate ( case insensitive )
|
//! 'Equals' predicate ( case insensitive )
|
||||||
@ -343,7 +343,7 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return equals(Input, Test, is_iequal(Loc));
|
return ::boost::algorithm::equals(Input, Test, is_iequal(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
// lexicographical_compare predicate -----------------------------//
|
// lexicographical_compare predicate -----------------------------//
|
||||||
@ -372,8 +372,8 @@ 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<Range1T>::type> lit_arg1(::boost::as_literal(Arg1));
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(::boost::as_literal(Arg2));
|
||||||
|
|
||||||
return std::lexicographical_compare(
|
return std::lexicographical_compare(
|
||||||
::boost::begin(lit_arg1),
|
::boost::begin(lit_arg1),
|
||||||
@ -392,7 +392,7 @@ namespace boost {
|
|||||||
const Range1T& Arg1,
|
const Range1T& Arg1,
|
||||||
const Range2T& Arg2)
|
const Range2T& Arg2)
|
||||||
{
|
{
|
||||||
return lexicographical_compare(Arg1, Arg2, is_less());
|
return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Lexicographical compare predicate (case-insensitive)
|
//! Lexicographical compare predicate (case-insensitive)
|
||||||
@ -417,7 +417,7 @@ namespace boost {
|
|||||||
const Range2T& Arg2,
|
const Range2T& Arg2,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return lexicographical_compare(Arg1, Arg2, is_iless(Loc));
|
return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_iless(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -439,7 +439,7 @@ 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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type Iterator1T;
|
range_const_iterator<RangeT>::type Iterator1T;
|
||||||
|
@ -60,9 +60,9 @@ namespace boost {
|
|||||||
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));
|
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
|
||||||
|
|
||||||
return regex_finder(Rx,Flags)(
|
return ::boost::algorithm::regex_finder(Rx,Flags)(
|
||||||
::boost::begin(lit_input), ::boost::end(lit_input) );
|
::boost::begin(lit_input), ::boost::end(lit_input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,11 +98,11 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace regex algorithm
|
//! Replace regex algorithm
|
||||||
@ -120,10 +120,10 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace regex algorithm
|
//! Replace regex algorithm
|
||||||
@ -147,10 +147,10 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_all_regex --------------------------------------------------------------------//
|
// replace_all_regex --------------------------------------------------------------------//
|
||||||
@ -184,11 +184,11 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all regex algorithm
|
//! Replace all regex algorithm
|
||||||
@ -206,10 +206,10 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all regex algorithm
|
//! Replace all regex algorithm
|
||||||
@ -233,10 +233,10 @@ namespace boost {
|
|||||||
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
|
||||||
match_flag_type Flags=match_default | format_default )
|
match_flag_type Flags=match_default | format_default )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
regex_formatter( Format, Flags ) );
|
::boost::algorithm::regex_formatter( Format, Flags ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_regex --------------------------------------------------------------------//
|
// erase_regex --------------------------------------------------------------------//
|
||||||
@ -267,11 +267,11 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase regex algorithm
|
//! Erase regex algorithm
|
||||||
@ -287,10 +287,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase regex algorithm
|
//! Erase regex algorithm
|
||||||
@ -311,10 +311,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase_all_regex --------------------------------------------------------------------//
|
// erase_all_regex --------------------------------------------------------------------//
|
||||||
@ -346,11 +346,11 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all regex algorithm
|
//! Erase all regex algorithm
|
||||||
@ -366,10 +366,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Erase all regex algorithm
|
//! Erase all regex algorithm
|
||||||
@ -390,10 +390,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
regex_finder( Rx, Flags ),
|
::boost::algorithm::regex_finder( Rx, Flags ),
|
||||||
empty_formatter( Input ) );
|
::boost::algorithm::empty_formatter( Input ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_all_regex ------------------------------------------------------------------//
|
// find_all_regex ------------------------------------------------------------------//
|
||||||
@ -431,10 +431,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return iter_find(
|
return ::boost::algorithm::iter_find(
|
||||||
Result,
|
Result,
|
||||||
Input,
|
Input,
|
||||||
regex_finder(Rx,Flags) );
|
::boost::algorithm::regex_finder(Rx,Flags) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// split_regex ------------------------------------------------------------------//
|
// split_regex ------------------------------------------------------------------//
|
||||||
@ -472,10 +472,10 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
return iter_split(
|
return ::boost::algorithm::iter_split(
|
||||||
Result,
|
Result,
|
||||||
Input,
|
Input,
|
||||||
regex_finder(Rx,Flags) );
|
::boost::algorithm::regex_finder(Rx,Flags) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// join_if ------------------------------------------------------------------//
|
// join_if ------------------------------------------------------------------//
|
||||||
@ -525,7 +525,7 @@ namespace boost {
|
|||||||
// Roll to the first element that will be added
|
// Roll to the first element that will be added
|
||||||
while(
|
while(
|
||||||
itBegin!=itEnd &&
|
itBegin!=itEnd &&
|
||||||
!regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
|
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
|
||||||
|
|
||||||
// Add this element
|
// Add this element
|
||||||
if(itBegin!=itEnd)
|
if(itBegin!=itEnd)
|
||||||
@ -536,10 +536,10 @@ namespace boost {
|
|||||||
|
|
||||||
for(;itBegin!=itEnd; ++itBegin)
|
for(;itBegin!=itEnd; ++itBegin)
|
||||||
{
|
{
|
||||||
if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
|
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, ::boost::end(Result), as_literal(Separator));
|
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, ::boost::end(Result), *itBegin);
|
detail::insert(Result, ::boost::end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
@ -593,7 +593,7 @@ namespace boost {
|
|||||||
// Roll to the first element that will be added
|
// Roll to the first element that will be added
|
||||||
while(
|
while(
|
||||||
itBegin!=itEnd &&
|
itBegin!=itEnd &&
|
||||||
!regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
|
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
|
||||||
|
|
||||||
// Add this element
|
// Add this element
|
||||||
if(itBegin!=itEnd)
|
if(itBegin!=itEnd)
|
||||||
@ -604,10 +604,10 @@ namespace boost {
|
|||||||
|
|
||||||
for(;itBegin!=itEnd; ++itBegin)
|
for(;itBegin!=itEnd; ++itBegin)
|
||||||
{
|
{
|
||||||
if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
|
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, ::boost::end(Result), as_literal(Separator));
|
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, ::boost::end(Result), *itBegin);
|
detail::insert(Result, ::boost::end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
|
@ -61,11 +61,11 @@ namespace boost {
|
|||||||
range_const_iterator<Range1T>::type>& SearchRange,
|
range_const_iterator<Range1T>::type>& SearchRange,
|
||||||
const Range2T& Format)
|
const Range2T& Format)
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
const_formatter(Format));
|
::boost::algorithm::const_formatter(Format));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace range algorithm
|
//! Replace range algorithm
|
||||||
@ -80,10 +80,10 @@ namespace boost {
|
|||||||
range_const_iterator<SequenceT>::type>& SearchRange,
|
range_const_iterator<SequenceT>::type>& SearchRange,
|
||||||
const RangeT& Format)
|
const RangeT& Format)
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
const_formatter(Format));
|
::boost::algorithm::const_formatter(Format));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace range algorithm
|
//! Replace range algorithm
|
||||||
@ -103,10 +103,10 @@ namespace boost {
|
|||||||
range_iterator<SequenceT>::type>& SearchRange,
|
range_iterator<SequenceT>::type>& SearchRange,
|
||||||
const RangeT& Format)
|
const RangeT& Format)
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
range_finder(SearchRange),
|
::boost::algorithm::range_finder(SearchRange),
|
||||||
const_formatter(Format));
|
::boost::algorithm::const_formatter(Format));
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_first --------------------------------------------------------------------//
|
// replace_first --------------------------------------------------------------------//
|
||||||
@ -138,11 +138,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const Range3T& Format)
|
const Range3T& Format)
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace first algorithm
|
//! Replace first algorithm
|
||||||
@ -155,10 +155,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace first algorithm
|
//! Replace first algorithm
|
||||||
@ -176,10 +176,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_first ( case insensitive ) ---------------------------------------------//
|
// replace_first ( case insensitive ) ---------------------------------------------//
|
||||||
@ -214,11 +214,11 @@ namespace boost {
|
|||||||
const Range3T& Format,
|
const Range3T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace first algorithm ( case insensitive )
|
//! Replace first algorithm ( case insensitive )
|
||||||
@ -232,10 +232,10 @@ namespace boost {
|
|||||||
const Range1T& Format,
|
const Range1T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace first algorithm ( case insensitive )
|
//! Replace first algorithm ( case insensitive )
|
||||||
@ -256,10 +256,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_last --------------------------------------------------------------------//
|
// replace_last --------------------------------------------------------------------//
|
||||||
@ -291,11 +291,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const Range3T& Format )
|
const Range3T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace last algorithm
|
//! Replace last algorithm
|
||||||
@ -308,10 +308,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace last algorithm
|
//! Replace last algorithm
|
||||||
@ -329,10 +329,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search),
|
::boost::algorithm::last_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_last ( case insensitive ) -----------------------------------------------//
|
// replace_last ( case insensitive ) -----------------------------------------------//
|
||||||
@ -367,11 +367,11 @@ namespace boost {
|
|||||||
const Range3T& Format,
|
const Range3T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace last algorithm ( case insensitive )
|
//! Replace last algorithm ( case insensitive )
|
||||||
@ -385,10 +385,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace last algorithm ( case insensitive )
|
//! Replace last algorithm ( case insensitive )
|
||||||
@ -410,10 +410,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
last_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_nth --------------------------------------------------------------------//
|
// replace_nth --------------------------------------------------------------------//
|
||||||
@ -448,11 +448,11 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const Range3T& Format )
|
const Range3T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace nth algorithm
|
//! Replace nth algorithm
|
||||||
@ -466,10 +466,10 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace nth algorithm
|
//! Replace nth algorithm
|
||||||
@ -490,10 +490,10 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth),
|
::boost::algorithm::nth_finder(Search, Nth),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_nth ( case insensitive ) -----------------------------------------------//
|
// replace_nth ( case insensitive ) -----------------------------------------------//
|
||||||
@ -531,11 +531,11 @@ namespace boost {
|
|||||||
const Range3T& Format,
|
const Range3T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc) ),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace nth algorithm ( case insensitive )
|
//! Replace nth algorithm ( case insensitive )
|
||||||
@ -550,10 +550,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc)),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace nth algorithm ( case insensitive )
|
//! Replace nth algorithm ( case insensitive )
|
||||||
@ -577,10 +577,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
nth_finder(Search, Nth, is_iequal(Loc)),
|
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_all --------------------------------------------------------------------//
|
// replace_all --------------------------------------------------------------------//
|
||||||
@ -612,11 +612,11 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const Range3T& Format )
|
const Range3T& Format )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all algorithm
|
//! Replace all algorithm
|
||||||
@ -629,10 +629,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all algorithm
|
//! Replace all algorithm
|
||||||
@ -651,10 +651,10 @@ namespace boost {
|
|||||||
const Range1T& Search,
|
const Range1T& Search,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search),
|
::boost::algorithm::first_finder(Search),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_all ( case insensitive ) -----------------------------------------------//
|
// replace_all ( case insensitive ) -----------------------------------------------//
|
||||||
@ -689,11 +689,11 @@ namespace boost {
|
|||||||
const Range3T& Format,
|
const Range3T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all algorithm ( case insensitive )
|
//! Replace all algorithm ( case insensitive )
|
||||||
@ -707,10 +707,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return find_format_all_copy(
|
return ::boost::algorithm::find_format_all_copy(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace all algorithm ( case insensitive )
|
//! Replace all algorithm ( case insensitive )
|
||||||
@ -731,10 +731,10 @@ namespace boost {
|
|||||||
const Range2T& Format,
|
const Range2T& Format,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
find_format_all(
|
::boost::algorithm::find_format_all(
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc)),
|
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_head --------------------------------------------------------------------//
|
// replace_head --------------------------------------------------------------------//
|
||||||
@ -769,11 +769,11 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace head algorithm
|
//! Replace head algorithm
|
||||||
@ -786,10 +786,10 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const RangeT& Format )
|
const RangeT& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace head algorithm
|
//! Replace head algorithm
|
||||||
@ -811,10 +811,10 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const RangeT& Format )
|
const RangeT& Format )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
head_finder(N),
|
::boost::algorithm::head_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_tail --------------------------------------------------------------------//
|
// replace_tail --------------------------------------------------------------------//
|
||||||
@ -849,11 +849,11 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const Range2T& Format )
|
const Range2T& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Output,
|
Output,
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace tail algorithm
|
//! Replace tail algorithm
|
||||||
@ -866,10 +866,10 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const RangeT& Format )
|
const RangeT& Format )
|
||||||
{
|
{
|
||||||
return find_format_copy(
|
return ::boost::algorithm::find_format_copy(
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Replace tail algorithm
|
//! Replace tail algorithm
|
||||||
@ -891,10 +891,10 @@ namespace boost {
|
|||||||
int N,
|
int N,
|
||||||
const RangeT& Format )
|
const RangeT& Format )
|
||||||
{
|
{
|
||||||
find_format(
|
::boost::algorithm::find_format(
|
||||||
Input,
|
Input,
|
||||||
tail_finder(N),
|
::boost::algorithm::tail_finder(N),
|
||||||
const_formatter(Format) );
|
::boost::algorithm::const_formatter(Format) );
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -64,10 +64,10 @@ namespace boost {
|
|||||||
Range1T& Input,
|
Range1T& Input,
|
||||||
const Range2T& Search)
|
const Range2T& Search)
|
||||||
{
|
{
|
||||||
return iter_find(
|
return ::boost::algorithm::iter_find(
|
||||||
Result,
|
Result,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search) );
|
::boost::algorithm::first_finder(Search) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find all algorithm ( case insensitive )
|
//! Find all algorithm ( case insensitive )
|
||||||
@ -100,10 +100,10 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale() )
|
const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return iter_find(
|
return ::boost::algorithm::iter_find(
|
||||||
Result,
|
Result,
|
||||||
Input,
|
Input,
|
||||||
first_finder(Search, is_iequal(Loc) ) );
|
::boost::algorithm::first_finder(Search, is_iequal(Loc) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -143,10 +143,10 @@ namespace boost {
|
|||||||
PredicateT Pred,
|
PredicateT Pred,
|
||||||
token_compress_mode_type eCompress=token_compress_off )
|
token_compress_mode_type eCompress=token_compress_off )
|
||||||
{
|
{
|
||||||
return iter_split(
|
return ::boost::algorithm::iter_split(
|
||||||
Result,
|
Result,
|
||||||
Input,
|
Input,
|
||||||
token_finder( Pred, eCompress ) );
|
::boost::algorithm::token_finder( Pred, eCompress ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -63,7 +63,7 @@ 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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
|
||||||
|
|
||||||
std::copy(
|
std::copy(
|
||||||
::boost::algorithm::detail::trim_begin(
|
::boost::algorithm::detail::trim_begin(
|
||||||
@ -106,7 +106,7 @@ namespace boost {
|
|||||||
inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
|
inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
trim_left_copy_if(
|
::boost::algorithm::trim_left_copy_if(
|
||||||
Input,
|
Input,
|
||||||
is_space(Loc));
|
is_space(Loc));
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ namespace boost {
|
|||||||
template<typename SequenceT>
|
template<typename SequenceT>
|
||||||
inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
|
inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
trim_left_if(
|
::boost::algorithm::trim_left_if(
|
||||||
Input,
|
Input,
|
||||||
is_space(Loc));
|
is_space(Loc));
|
||||||
}
|
}
|
||||||
@ -171,7 +171,7 @@ 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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
|
||||||
|
|
||||||
std::copy(
|
std::copy(
|
||||||
::boost::begin(lit_range),
|
::boost::begin(lit_range),
|
||||||
@ -215,7 +215,7 @@ namespace boost {
|
|||||||
inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
|
inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
trim_right_copy_if(
|
::boost::algorithm::trim_right_copy_if(
|
||||||
Input,
|
Input,
|
||||||
is_space(Loc));
|
is_space(Loc));
|
||||||
}
|
}
|
||||||
@ -254,7 +254,7 @@ namespace boost {
|
|||||||
template<typename SequenceT>
|
template<typename SequenceT>
|
||||||
inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
|
inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
trim_right_if(
|
::boost::algorithm::trim_right_if(
|
||||||
Input,
|
Input,
|
||||||
is_space(Loc) );
|
is_space(Loc) );
|
||||||
}
|
}
|
||||||
@ -283,7 +283,7 @@ 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));
|
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
|
||||||
|
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type TrimEnd=
|
range_const_iterator<RangeT>::type TrimEnd=
|
||||||
@ -340,7 +340,7 @@ namespace boost {
|
|||||||
inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
|
inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
trim_copy_if(
|
::boost::algorithm::trim_copy_if(
|
||||||
Input,
|
Input,
|
||||||
is_space(Loc) );
|
is_space(Loc) );
|
||||||
}
|
}
|
||||||
@ -357,8 +357,8 @@ namespace boost {
|
|||||||
template<typename SequenceT, typename PredicateT>
|
template<typename SequenceT, typename PredicateT>
|
||||||
inline void trim_if(SequenceT& Input, PredicateT IsSpace)
|
inline void trim_if(SequenceT& Input, PredicateT IsSpace)
|
||||||
{
|
{
|
||||||
trim_right_if( Input, IsSpace );
|
::boost::algorithm::trim_right_if( Input, IsSpace );
|
||||||
trim_left_if( Input, IsSpace );
|
::boost::algorithm::trim_left_if( Input, IsSpace );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Trim
|
//! Trim
|
||||||
@ -372,7 +372,7 @@ namespace boost {
|
|||||||
template<typename SequenceT>
|
template<typename SequenceT>
|
||||||
inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
|
inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
trim_if(
|
::boost::algorithm::trim_if(
|
||||||
Input,
|
Input,
|
||||||
is_space( Loc ) );
|
is_space( Loc ) );
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ be enough. The present library solves both problems.</p>
|
|||||||
<tt>minmax</tt>
|
<tt>minmax</tt>
|
||||||
as straightforward extensions of the C++
|
as straightforward extensions of the C++
|
||||||
standard. As it returns a pair of <tt>const&</tt>, we must use the <a
|
standard. As it returns a pair of <tt>const&</tt>, we must use the <a
|
||||||
href=:../../../../tuple/index.html>Boost.tuple</a> library to construct such
|
href="../../tuple/index.html">Boost.tuple</a> library to construct such
|
||||||
pairs. (Please note: the intent is not to fix the known defaults of
|
pairs. (Please note: the intent is not to fix the known defaults of
|
||||||
<tt>std::min</tt>
|
<tt>std::min</tt>
|
||||||
and <tt>std::max</tt>, but to add one more algorithms that combines both; see the
|
and <tt>std::max</tt>, but to add one more algorithms that combines both; see the
|
||||||
@ -92,11 +92,11 @@ Synopsis of <tt><boost/algorithm/minmax.hpp></tt></h3>
|
|||||||
namespace boost {
|
namespace boost {
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
tuple<T const&, T const&> >
|
tuple<T const&, T const&>
|
||||||
minmax(const T& a, const T& b);
|
minmax(const T& a, const T& b);
|
||||||
|
|
||||||
template <class T, class <a href="http://www.sgi.com/tech/stl/BinaryPredicate.html">BinaryPredicate</a>>
|
template <class T, class <a href="http://www.sgi.com/tech/stl/BinaryPredicate.html">BinaryPredicate</a>>
|
||||||
tuple<T const&, T const&> >
|
tuple<T const&, T const&>
|
||||||
minmax(const T& a, const T& b, BinaryPredicate comp);
|
minmax(const T& a, const T& b, BinaryPredicate comp);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -158,9 +158,9 @@ identical to
|
|||||||
that they return the last instance of the largest element (and not the
|
that they return the last instance of the largest element (and not the
|
||||||
first, as <tt>first_min_element</tt> and <tt>last_max_element</tt> would).
|
first, as <tt>first_min_element</tt> and <tt>last_max_element</tt> would).
|
||||||
<p>The family of algorithms comprising <tt>first_min_first_max_element</tt>,
|
<p>The family of algorithms comprising <tt>first_min_first_max_element</tt>,
|
||||||
<tt>first_min_first_max_element</tt>,
|
<tt>first_min_last_max_element</tt>,
|
||||||
<tt>first_min_first_max_element</tt>,
|
<tt>last_min_first_max_element</tt>,
|
||||||
and <tt>first_min_first_max_element</tt> can be described generically as
|
and <tt>last_min_last_max_element</tt> can be described generically as
|
||||||
follows (using <i><tt>which</tt></i> and
|
follows (using <i><tt>which</tt></i> and
|
||||||
<i><tt>what</tt></i> for <tt>first</tt>
|
<i><tt>what</tt></i> for <tt>first</tt>
|
||||||
or <tt>last</tt>): <tt><i>which</i>_min_<i>what</i>_max_element</tt> finds
|
or <tt>last</tt>): <tt><i>which</i>_min_<i>what</i>_max_element</tt> finds
|
||||||
@ -243,7 +243,7 @@ range
|
|||||||
|
|
||||||
<a name="complexity">
|
<a name="complexity">
|
||||||
<h3>
|
<h3>
|
||||||
<a NAME="Complexity"></a>Complexity</h3>
|
Complexity</h3>
|
||||||
Minmax performs a single comparison and is otherwise of constant complexity.
|
Minmax performs a single comparison and is otherwise of constant complexity.
|
||||||
The use of <tt>boost::tuple<T const&></tt> prevents copy
|
The use of <tt>boost::tuple<T const&></tt> prevents copy
|
||||||
constructors in case the arguments are passed by reference.
|
constructors in case the arguments are passed by reference.
|
||||||
@ -438,7 +438,7 @@ comparisons).</p>
|
|||||||
slower than
|
slower than
|
||||||
<tt>first_min_element</tt> alone, still much less than <tt>first_min_element</tt>
|
<tt>first_min_element</tt> alone, still much less than <tt>first_min_element</tt>
|
||||||
and
|
and
|
||||||
<tt>last_max_element</tt> called separately. <a href="#Performance">[2]</a>
|
<tt>last_max_element</tt> called separately. <a href="#Note2">[2]</a>
|
||||||
|
|
||||||
<h4><b>Why algorithms and not accumulators?</b></h4>
|
<h4><b>Why algorithms and not accumulators?</b></h4>
|
||||||
<p>The minmax algorithms are useful in computing the extent of a range.
|
<p>The minmax algorithms are useful in computing the extent of a range.
|
||||||
|
@ -54,23 +54,23 @@ void test(BOOST_EXPLICIT_TEMPLATE_TYPE(Value))
|
|||||||
less_count<Value> lc(counter);
|
less_count<Value> lc(counter);
|
||||||
|
|
||||||
// Test functionality
|
// Test functionality
|
||||||
tuple<Value const&, Value const&> result1 = minmax(zero, one);
|
tuple<Value const&, Value const&> result1 = boost::minmax(zero, one);
|
||||||
BOOST_CHECK_EQUAL( get<0>(result1), zero );
|
BOOST_CHECK_EQUAL( get<0>(result1), zero );
|
||||||
BOOST_CHECK_EQUAL( get<1>(result1), one );
|
BOOST_CHECK_EQUAL( get<1>(result1), one );
|
||||||
|
|
||||||
tuple<Value const&, Value const&> result2 = minmax(one, zero);
|
tuple<Value const&, Value const&> result2 = boost::minmax(one, zero);
|
||||||
BOOST_CHECK_EQUAL( get<0>(result2), zero );
|
BOOST_CHECK_EQUAL( get<0>(result2), zero );
|
||||||
BOOST_CHECK_EQUAL( get<1>(result2), one );
|
BOOST_CHECK_EQUAL( get<1>(result2), one );
|
||||||
|
|
||||||
// Test functionality and number of comparisons
|
// Test functionality and number of comparisons
|
||||||
lc.reset();
|
lc.reset();
|
||||||
tuple<Value const&, Value const&> result3 = minmax(zero, one, lc );
|
tuple<Value const&, Value const&> result3 = boost::minmax(zero, one, lc );
|
||||||
BOOST_CHECK_EQUAL( get<0>(result3), zero );
|
BOOST_CHECK_EQUAL( get<0>(result3), zero );
|
||||||
BOOST_CHECK_EQUAL( get<1>(result3), one );
|
BOOST_CHECK_EQUAL( get<1>(result3), one );
|
||||||
BOOST_CHECK_EQUAL( counter, 1 );
|
BOOST_CHECK_EQUAL( counter, 1 );
|
||||||
|
|
||||||
lc.reset();
|
lc.reset();
|
||||||
tuple<Value const&, Value const&> result4 = minmax(one, zero, lc );
|
tuple<Value const&, Value const&> result4 = boost::minmax(one, zero, lc );
|
||||||
BOOST_CHECK_EQUAL( get<0>(result4), zero );
|
BOOST_CHECK_EQUAL( get<0>(result4), zero );
|
||||||
BOOST_CHECK_EQUAL( get<1>(result4), one );
|
BOOST_CHECK_EQUAL( get<1>(result4), one );
|
||||||
BOOST_CHECK_EQUAL( counter, 1);
|
BOOST_CHECK_EQUAL( counter, 1);
|
||||||
|
@ -10,7 +10,11 @@
|
|||||||
import toolset ;
|
import toolset ;
|
||||||
toolset.using doxygen ;
|
toolset.using doxygen ;
|
||||||
|
|
||||||
boostbook string_algo : string_algo.xml autodoc ;
|
boostbook string_algo : string_algo.xml autodoc
|
||||||
|
:
|
||||||
|
<xsl:param>boost.root=../../../../..
|
||||||
|
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
|
||||||
|
;
|
||||||
|
|
||||||
doxygen autodoc
|
doxygen autodoc
|
||||||
:
|
:
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
<emphasis role="bold">Definition:</emphasis> A string is a
|
<emphasis role="bold">Definition:</emphasis> A string is a
|
||||||
<ulink url="../../libs/range/doc/range.html">range</ulink> of characters accessible in sequential
|
<ulink url="../../libs/range/index.html">range</ulink> of characters accessible in sequential
|
||||||
ordered fashion. Character is any value type with "cheap" copying and assignment.
|
ordered fashion. Character is any value type with "cheap" copying and assignment.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -32,7 +32,9 @@
|
|||||||
free-standing functions and type-generators exists:</p><code>void foo( const T&, int ); <br>
|
free-standing functions and type-generators exists:</p><code>void foo( const T&, int ); <br>
|
||||||
int bar( T& ); <br>
|
int bar( T& ); <br>
|
||||||
foo_type_of< T >::type;</code> <br> <br><hr size="1" ><h3 >Literature</h3><ul ><li > <a href="http://www.boost.org/more/generic_programming.html#type_generator" target="_self" >Type Generators</a> </li><li > <a href="http://www.boost.org/more/generic_programming.html#concept" target="_self" >Concepts</a> </li><li > <a href="http://www.sgi.com/tech/stl/stl_introduction.html" target="_self" >Concepts and SGI STL</a> </li></ul><hr size="1" ><p >© Thorsten Ottosen 2003-2004 (nesotto_AT_cs.auc.dk).
|
foo_type_of< T >::type;</code> <br> <br><hr size="1" ><h3 >Literature</h3><ul ><li > <a href="http://www.boost.org/more/generic_programming.html#type_generator" target="_self" >Type Generators</a> </li><li > <a href="http://www.boost.org/more/generic_programming.html#concept" target="_self" >Concepts</a> </li><li > <a href="http://www.sgi.com/tech/stl/stl_introduction.html" target="_self" >Concepts and SGI STL</a> </li></ul><hr size="1" ><p >© Thorsten Ottosen 2003-2004 (nesotto_AT_cs.auc.dk).
|
||||||
Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears
|
<br>Use, modification and distribution is subject to the Boost
|
||||||
in all copies. This software is provided "as is" without express or implied warranty, and with no
|
Software License, Version 1.0. (See accompanying file
|
||||||
claim as to its suitability for any purpose.</p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></body></html>
|
<code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||||
<!-- Copyright Dezide Aps 2003-2004 -->
|
</br>
|
||||||
|
</p>
|
||||||
|
<!-- Copyright Dezide Aps 2003-2004 -->
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
<librarypurpose>
|
<librarypurpose>
|
||||||
A set of generic string-related algorithms and utilities
|
A set of generic string-related algorithms and utilities
|
||||||
</librarypurpose>
|
</librarypurpose>
|
||||||
<librarycategory name="category:algoritms"/>
|
<librarycategory name="category:algorithms"/>
|
||||||
<librarycategory name="category:string-text"/>
|
<librarycategory name="category:string-text"/>
|
||||||
</libraryinfo>
|
</libraryinfo>
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
The magic of <ulink url="../../libs/range/index.html">Boost.Range</ulink>
|
The magic of <ulink url="../../libs/range/index.html">Boost.Range</ulink>
|
||||||
provides a uniform way of handling different string types.
|
provides a uniform way of handling different string types.
|
||||||
If there is a need to pass a pair of iterators,
|
If there is a need to pass a pair of iterators,
|
||||||
<ulink url="../../libs/range/doc/utility_class.html"><code>boost::iterator_range</code></ulink>
|
<ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
||||||
can be used to package iterators into a structure with a compatible interface.
|
can be used to package iterators into a structure with a compatible interface.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
string str1("command.com");
|
string str1("command.com");
|
||||||
cout
|
cout
|
||||||
<< str1
|
<< str1
|
||||||
<< is_executable("command.com")? "is": "is not"
|
<< (is_executable("command.com")? "is": "is not")
|
||||||
<< "an executable"
|
<< "an executable"
|
||||||
<< endl; // prints "command.com is an executable"
|
<< endl; // prints "command.com is an executable"
|
||||||
|
|
||||||
@ -138,7 +138,7 @@
|
|||||||
char text1[]="hello world!";
|
char text1[]="hello world!";
|
||||||
cout
|
cout
|
||||||
<< text1
|
<< text1
|
||||||
<< all( text1, is_lower() )? "is": "is not"
|
<< (all( text1, is_lower() )? "is": "is not")
|
||||||
<< " written in the lower case"
|
<< " written in the lower case"
|
||||||
<< endl; // prints "hello world! is written in the lower case"
|
<< endl; // prints "hello world! is written in the lower case"
|
||||||
</programlisting>
|
</programlisting>
|
||||||
@ -169,7 +169,7 @@
|
|||||||
<programlisting>
|
<programlisting>
|
||||||
string str1=" hello world! ";
|
string str1=" hello world! ";
|
||||||
string str2=trim_left_copy(str1); // str2 == "hello world! "
|
string str2=trim_left_copy(str1); // str2 == "hello world! "
|
||||||
string str3=trim_right_copy(str2); // str3 == " hello world!"
|
string str3=trim_right_copy(str1); // str3 == " hello world!"
|
||||||
trim(str1); // str1 == "hello world!"
|
trim(str1); // str1 == "hello world!"
|
||||||
|
|
||||||
string phone="00423333444";
|
string phone="00423333444";
|
||||||
@ -208,7 +208,7 @@
|
|||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
We have used <functionname>find_last()</functionname> to search the <code>text</code> for "ll".
|
We have used <functionname>find_last()</functionname> to search the <code>text</code> for "ll".
|
||||||
The result is given in the <ulink url="../../libs/range/doc/utility_class.html"><code>boost::iterator_range</code></ulink>.
|
The result is given in the <ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>.
|
||||||
This range delimits the
|
This range delimits the
|
||||||
part of the input which satisfies the find criteria. In our example it is the last occurrence of "ll".
|
part of the input which satisfies the find criteria. In our example it is the last occurrence of "ll".
|
||||||
|
|
||||||
@ -217,7 +217,7 @@
|
|||||||
<ulink url="../../libs/range/index.html">Boost.Range</ulink>.
|
<ulink url="../../libs/range/index.html">Boost.Range</ulink>.
|
||||||
|
|
||||||
The following lines transform the result. Notice that
|
The following lines transform the result. Notice that
|
||||||
<ulink url="../../libs/range/doc/utility_class.html"><code>boost::iterator_range</code></ulink> has familiar
|
<ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink> has familiar
|
||||||
<code>begin()</code> and <code>end()</code> methods, so it can be used like any other STL container.
|
<code>begin()</code> and <code>end()</code> methods, so it can be used like any other STL container.
|
||||||
Also it is convertible to bool therefore it is easy to use find algorithms for a simple containment checking.
|
Also it is convertible to bool therefore it is easy to use find algorithms for a simple containment checking.
|
||||||
</para>
|
</para>
|
||||||
@ -264,7 +264,7 @@
|
|||||||
the find iterator allows us to iterate over the substrings matching the specified criteria.
|
the find iterator allows us to iterate over the substrings matching the specified criteria.
|
||||||
This facility is using the <link linkend="string_algo.finder_concept">Finder</link> to incrementally
|
This facility is using the <link linkend="string_algo.finder_concept">Finder</link> to incrementally
|
||||||
search the string.
|
search the string.
|
||||||
Dereferencing a find iterator yields an <ulink url="../../libs/range/doc/utility_class.html"><code>boost::iterator_range</code></ulink>
|
Dereferencing a find iterator yields an <ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
||||||
object, that delimits the current match.
|
object, that delimits the current match.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -339,7 +339,7 @@
|
|||||||
typedef vector< string > split_vector_type;
|
typedef vector< string > split_vector_type;
|
||||||
|
|
||||||
split_vector_type SplitVec; // #2: Search for tokens
|
split_vector_type SplitVec; // #2: Search for tokens
|
||||||
split( SplitVec, str1, is_any_of("-*") ); // SplitVec == { "hello abc","ABC","aBc goodbye" }
|
split( SplitVec, str1, is_any_of("-*"), token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" }
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
<code>[hello]</code> designates an <code>iterator_range</code> delimiting this substring.
|
<code>[hello]</code> designates an <code>iterator_range</code> delimiting this substring.
|
||||||
|
@ -59,5 +59,11 @@ test-suite algorithm/string
|
|||||||
:
|
:
|
||||||
: regex
|
: regex
|
||||||
]
|
]
|
||||||
|
[ run
|
||||||
|
find_format_test.cpp
|
||||||
|
: :
|
||||||
|
:
|
||||||
|
: find_format
|
||||||
|
]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
163
string/test/find_format_test.cpp
Normal file
163
string/test/find_format_test.cpp
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
// Boost string_algo library find_format_test.cpp file ------------------//
|
||||||
|
|
||||||
|
// Copyright (c) 2009 Steven Watanabe
|
||||||
|
// Distributed under 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.
|
||||||
|
|
||||||
|
#include <boost/algorithm/string/find_format.hpp>
|
||||||
|
#include <boost/algorithm/string/finder.hpp>
|
||||||
|
#include <boost/algorithm/string/formatter.hpp>
|
||||||
|
|
||||||
|
// Include unit test framework
|
||||||
|
#include <boost/test/included/test_exec_monitor.hpp>
|
||||||
|
|
||||||
|
#include <boost/test/test_tools.hpp>
|
||||||
|
|
||||||
|
// We're only using const_formatter.
|
||||||
|
template<class Formatter>
|
||||||
|
struct formatter_result {
|
||||||
|
typedef boost::iterator_range<const char*> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class Formatter>
|
||||||
|
struct checked_formatter {
|
||||||
|
public:
|
||||||
|
checked_formatter(const Formatter& formatter) : formatter_(formatter) {}
|
||||||
|
template< typename T >
|
||||||
|
typename formatter_result<Formatter>::type operator()( const T & s ) const {
|
||||||
|
BOOST_CHECK( !s.empty() );
|
||||||
|
return formatter_(s);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
Formatter formatter_;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class Formatter>
|
||||||
|
checked_formatter<Formatter>
|
||||||
|
make_checked_formatter(const Formatter& formatter) {
|
||||||
|
return checked_formatter<Formatter>(formatter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void find_format_test()
|
||||||
|
{
|
||||||
|
const std::string source = "$replace $replace";
|
||||||
|
std::string expected = "ok $replace";
|
||||||
|
std::string output(80, '\0');
|
||||||
|
|
||||||
|
std::string::iterator pos =
|
||||||
|
boost::find_format_copy(
|
||||||
|
output.begin(),
|
||||||
|
source,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("ok")));
|
||||||
|
BOOST_CHECK(pos == output.begin() + expected.size());
|
||||||
|
output.erase(std::remove(output.begin(), output.end(), '\0'), output.end());
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
|
||||||
|
output =
|
||||||
|
boost::find_format_copy(
|
||||||
|
source,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("ok")));
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
|
||||||
|
// now try finding a string that doesn't exist
|
||||||
|
output.resize(80);
|
||||||
|
pos =
|
||||||
|
boost::find_format_copy(
|
||||||
|
output.begin(),
|
||||||
|
source,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK(pos == output.begin() + source.size());
|
||||||
|
output.erase(std::remove(output.begin(), output.end(), '\0'), output.end());
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
|
||||||
|
output =
|
||||||
|
boost::find_format_copy(
|
||||||
|
source,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
|
||||||
|
// in place version
|
||||||
|
output = source;
|
||||||
|
boost::find_format(
|
||||||
|
output,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("ok")));
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
output = source;
|
||||||
|
boost::find_format(
|
||||||
|
output,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
}
|
||||||
|
|
||||||
|
void find_format_all_test()
|
||||||
|
{
|
||||||
|
const std::string source = "$replace $replace";
|
||||||
|
std::string expected = "ok ok";
|
||||||
|
std::string output(80, '\0');
|
||||||
|
|
||||||
|
std::string::iterator pos =
|
||||||
|
boost::find_format_all_copy(output.begin(),
|
||||||
|
source,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
boost::const_formatter("ok"));
|
||||||
|
BOOST_CHECK(pos == output.begin() + expected.size());
|
||||||
|
output.erase(std::remove(output.begin(), output.end(), '\0'), output.end());
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
|
||||||
|
output =
|
||||||
|
boost::find_format_all_copy(
|
||||||
|
source,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("ok")));
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
|
||||||
|
// now try finding a string that doesn't exist
|
||||||
|
output.resize(80);
|
||||||
|
pos =
|
||||||
|
boost::find_format_all_copy(
|
||||||
|
output.begin(),
|
||||||
|
source,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK(pos == output.begin() + source.size());
|
||||||
|
output.erase(std::remove(output.begin(), output.end(), '\0'), output.end());
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
|
||||||
|
output =
|
||||||
|
boost::find_format_all_copy(
|
||||||
|
source,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
|
||||||
|
// in place version
|
||||||
|
output = source;
|
||||||
|
boost::find_format_all(
|
||||||
|
output,
|
||||||
|
boost::first_finder("$replace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("ok")));
|
||||||
|
BOOST_CHECK_EQUAL(output, expected);
|
||||||
|
output = source;
|
||||||
|
boost::find_format_all(
|
||||||
|
output,
|
||||||
|
boost::first_finder("$noreplace"),
|
||||||
|
make_checked_formatter(boost::const_formatter("bad")));
|
||||||
|
BOOST_CHECK_EQUAL(output, source);
|
||||||
|
}
|
||||||
|
|
||||||
|
int test_main( int, char*[] )
|
||||||
|
{
|
||||||
|
find_format_test();
|
||||||
|
find_format_all_test();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -139,6 +139,7 @@ void iterator_test()
|
|||||||
++siter;
|
++siter;
|
||||||
BOOST_CHECK(equals(*siter, "abb"));
|
BOOST_CHECK(equals(*siter, "abb"));
|
||||||
++siter;
|
++siter;
|
||||||
|
BOOST_CHECK(siter==split_iterator<string::iterator>(siter));
|
||||||
BOOST_CHECK(siter==split_iterator<string::iterator>());
|
BOOST_CHECK(siter==split_iterator<string::iterator>());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user