Compare commits

...

33 Commits

Author SHA1 Message Date
39a15ed95d creating branch to fix intrusive for Sun CC (#3339)
[SVN r55764]
2009-08-24 17:08:35 +00:00
6c0f953c01 GCC compilation errors caused be the recent update fixed
[SVN r55434]
2009-08-06 19:52:08 +00:00
e439792494 Merged ADL protection patch from Neil Groves
[SVN r55424]
2009-08-05 20:01:10 +00:00
236b142308 Copyrights on CMakeLists.txt to keep them from clogging up the inspect
reports.  This is essentially the same commit as r55095 on the release
branch.



[SVN r55159]
2009-07-26 00:49:56 +00:00
9bad789175 Fix operator precedence error in documentation. Fixes #2122
[SVN r53520]
2009-06-01 00:47:03 +00:00
d84f81d841 Fixed most tab and min/max issues from trunk inspection report
[SVN r53141]
2009-05-20 19:19:00 +00:00
ce98e8b87e Qualify minmax with boost:: to avoid ambiguity with std::minmax. Fixes #3023
[SVN r53062]
2009-05-17 00:39:22 +00:00
e8a2596637 Add PDF generation options to fix external links to point to the web site.
Added a few more Boostbook based libs that were missed first time around.
Fixed PDF naming issues.

[SVN r51284]
2009-02-17 10:05:58 +00:00
7b2754b937 Fix copy/paste error in minmax docs. Fixes #2500
[SVN r51045]
2009-02-06 03:45:09 +00:00
784402e5c0 Updating dependency information for modularized libraries.
[SVN r49628]
2008-11-07 17:05:27 +00:00
1188575e7b Updating CMake files to latest trunk. Added dependency information for regression tests and a few new macros for internal use.
[SVN r49627]
2008-11-07 17:02:56 +00:00
bff2a1e112 Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor
[SVN r49510]
2008-11-01 13:15:41 +00:00
6d5e7b5a04 self assignment problem in is_any_ofF fixed
[SVN r48281]
2008-08-21 14:46:15 +00:00
760af1798b removed static constant FIXED_STORAGE_SIZE from is_any_of to
make the code compile on borland compilers



[SVN r48218]
2008-08-19 14:32:59 +00:00
1f5542b44c predicate test improvements
[SVN r48199]
2008-08-18 18:33:40 +00:00
baf3dd99e2 fox for allocation bug in is_any_ofF
[SVN r48198]
2008-08-18 18:32:51 +00:00
7299b29bf8 fixind the problems in is_any_ofF spotted by gcc
[SVN r46498]
2008-06-18 22:07:32 +00:00
539c170b9d aditional tests added
[SVN r46497]
2008-06-18 21:55:38 +00:00
c81ee948b7 is_any_ofF performance improvements
tabs removed



[SVN r46496]
2008-06-18 21:54:06 +00:00
ba5e4c30c6 fixed the rle example crash
[SVN r46463]
2008-06-17 21:58:58 +00:00
cd26ed816c patch from ticket #1152 applied
[SVN r46461]
2008-06-17 21:21:33 +00:00
4e15767bed simple_finder example fixed
[SVN r46460]
2008-06-17 21:13:25 +00:00
9fa2f90db4 begin() and end() calls made fully qualified
[SVN r46459]
2008-06-17 21:04:00 +00:00
35f317aeac unnecessary typedefs removed
[SVN r46458]
2008-06-17 20:31:41 +00:00
d0a03fdb4e Added missing include. This was already fixed on the 1.34 branch but never merged to the trunk.
[SVN r45857]
2008-05-28 08:32:12 +00:00
346f032be2 Quote href values - our tools don't support unquoted values.
[SVN r45283]
2008-05-11 13:49:20 +00:00
a389d768c4 Fix broken copyright urls. Fixes #1573.
[SVN r43422]
2008-02-27 18:51:14 +00:00
90fca39906 Point links to the pages that used to be in 'more' to the site.
[SVN r43210]
2008-02-10 15:02:17 +00:00
5b24f31486 merging changes from 1.34
[SVN r40698]
2007-11-02 21:00:08 +00:00
b25d6511b3 merging changes from 1.34
[SVN r40697]
2007-11-02 20:55:26 +00:00
1541a554f5 changed range_result_iterator to range_iterator
[SVN r40518]
2007-10-27 22:52:29 +00:00
7a97b3390e Added missing include.
[SVN r39586]
2007-09-28 07:19:29 +00:00
6e5a7497ae Added missing include.
[SVN r39519]
2007-09-25 08:46:31 +00:00
49 changed files with 1000 additions and 680 deletions

26
CMakeLists.txt Normal file
View File

@ -0,0 +1,26 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
#----------------------------------------------------------------------------
# This file was automatically generated from the original CMakeLists.txt file
# Add a variable to hold the headers for the library
set (lib_headers
algorithm
)
# Add a library target to the build system
boost_library_project(
algorithm
# SRCDIRS
TESTDIRS minmax/test string/test
HEADERS ${lib_headers}
# DOCDIRS
DESCRIPTION "A library of various algorithms."
MODULARIZED
AUTHORS "Pavol Droba <droba -at- topmail.sk>"
"Herve Bronnimann <hbr -at- poly.edu>"
# MAINTAINERS
)

View File

@ -21,6 +21,7 @@
#include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string/find.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/join.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/erase.hpp>
#include <boost/algorithm/string/classification.hpp>

View File

@ -59,7 +59,7 @@ namespace boost {
{
return ::boost::algorithm::detail::transform_range_copy(
Output,
as_literal(Input),
::boost::as_literal(Input),
::boost::algorithm::detail::to_lowerF<
typename range_value<RangeT>::type >(Loc));
}
@ -93,7 +93,7 @@ namespace boost {
const std::locale& Loc=std::locale())
{
::boost::algorithm::detail::transform_range(
as_literal(Input),
::boost::as_literal(Input),
::boost::algorithm::detail::to_lowerF<
typename range_value<WritableRangeT>::type >(Loc));
}
@ -124,7 +124,7 @@ namespace boost {
{
return ::boost::algorithm::detail::transform_range_copy(
Output,
as_literal(Input),
::boost::as_literal(Input),
::boost::algorithm::detail::to_upperF<
typename range_value<RangeT>::type >(Loc));
}
@ -158,7 +158,7 @@ namespace boost {
const std::locale& Loc=std::locale())
{
::boost::algorithm::detail::transform_range(
as_literal(Input),
::boost::as_literal(Input),
::boost::algorithm::detail::to_upperF<
typename range_value<WritableRangeT>::type >(Loc));
}

View File

@ -202,8 +202,8 @@ namespace boost {
BOOST_STRING_TYPENAME range_value<RangeT>::type>
is_any_of( const RangeT& Set )
{
return detail::is_any_ofF<
BOOST_STRING_TYPENAME range_value<RangeT>::type>(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);
}
//! is_from_range predicate

View File

@ -65,8 +65,8 @@ namespace boost {
void constraints()
{
// Operation
begin((*pFo)( (*pF)(i,i) ));
end((*pFo)( (*pF)(i,i) ));
::boost::begin((*pFo)( (*pF)(i,i) ));
::boost::end((*pFo)( (*pF)(i,i) ));
}
private:
IteratorT i;

View File

@ -21,6 +21,11 @@ namespace boost {
// case conversion functors -----------------------------------------------//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(push)
#pragma warning(disable:4512) //assignment operator could not be generated
#endif
// a tolower functor
template<typename CharT>
struct to_lowerF : public std::unary_function<CharT, CharT>
@ -61,6 +66,10 @@ namespace boost {
const std::locale& m_Loc;
};
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
// algorithm implementation -------------------------------------------------------------------------
// Transform a range
@ -71,8 +80,8 @@ namespace boost {
FunctorT Functor)
{
return std::transform(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
Output,
Functor);
}
@ -84,9 +93,9 @@ namespace boost {
FunctorT Functor)
{
std::transform(
begin(Input),
end(Input),
begin(Input),
::boost::begin(Input),
::boost::end(Input),
::boost::begin(Input),
Functor);
}
@ -96,11 +105,11 @@ namespace boost {
FunctorT Functor)
{
return SequenceT(
make_transform_iterator(
begin(Input),
::boost::make_transform_iterator(
::boost::begin(Input),
Functor),
make_transform_iterator(
end(Input),
::boost::make_transform_iterator(
::boost::end(Input),
Functor));
}

View File

@ -15,7 +15,6 @@
#include <algorithm>
#include <functional>
#include <locale>
#include <set>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
@ -29,7 +28,7 @@ namespace boost {
// classification functors -----------------------------------------------//
// is_classified functor
// is_classified functor
struct is_classifiedF :
public predicate_facade<is_classifiedF>
{
@ -39,7 +38,6 @@ namespace boost {
// Constructor from a locale
is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
m_Type(Type), m_Locale(Loc) {}
// Operation
template<typename CharT>
bool operator()( CharT Ch ) const
@ -56,10 +54,11 @@ namespace boost {
#endif
private:
const std::ctype_base::mask m_Type;
const std::locale m_Locale;
std::ctype_base::mask m_Type;
std::locale m_Locale;
};
// is_any_of functor
/*
returns true if the value is from the specified set
@ -68,25 +67,181 @@ namespace boost {
struct is_any_ofF :
public predicate_facade<is_any_ofF<CharT> >
{
private:
// set cannot operate on const value-type
typedef typename ::boost::remove_const<CharT>::type set_value_type;
public:
// Boost.Lambda support
template <class Args> struct sig { typedef bool type; };
// Constructor
template<typename RangeT>
is_any_ofF( const RangeT& Range ) :
m_Set( begin(Range), end(Range) ) {}
is_any_ofF( const RangeT& Range ) : m_Size(0)
{
// Prepare storage
m_Storage.m_dynSet=0;
std::size_t Size=::boost::distance(Range);
m_Size=Size;
set_value_type* Storage=0;
if(use_fixed_storage(m_Size))
{
// Use fixed storage
Storage=&m_Storage.m_fixSet[0];
}
else
{
// Use dynamic storage
m_Storage.m_dynSet=new set_value_type[m_Size];
Storage=m_Storage.m_dynSet;
}
// Use fixed storage
::std::copy(::boost::begin(Range), ::boost::end(Range), Storage);
::std::sort(Storage, Storage+m_Size);
}
// Copy constructor
is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size)
{
// Prepare storage
m_Storage.m_dynSet=0;
const set_value_type* SrcStorage=0;
set_value_type* DestStorage=0;
if(use_fixed_storage(m_Size))
{
// Use fixed storage
DestStorage=&m_Storage.m_fixSet[0];
SrcStorage=&Other.m_Storage.m_fixSet[0];
}
else
{
// Use dynamic storage
m_Storage.m_dynSet=new set_value_type[m_Size];
DestStorage=m_Storage.m_dynSet;
SrcStorage=Other.m_Storage.m_dynSet;
}
// Use fixed storage
::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
}
// Destructor
~is_any_ofF()
{
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
}
// Assignment
is_any_ofF& operator=(const is_any_ofF& Other)
{
// Handle self assignment
if(this==&Other) return *this;
// Prepare storage
const set_value_type* SrcStorage;
set_value_type* DestStorage;
if(use_fixed_storage(Other.m_Size))
{
// Use fixed storage
DestStorage=&m_Storage.m_fixSet[0];
SrcStorage=&Other.m_Storage.m_fixSet[0];
// Delete old storage if was present
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
// Set new size
m_Size=Other.m_Size;
}
else
{
// Other uses dynamic storage
SrcStorage=Other.m_Storage.m_dynSet;
// Check what kind of storage are we using right now
if(use_fixed_storage(m_Size))
{
// Using fixed storage, allocate new
set_value_type* pTemp=new set_value_type[Other.m_Size];
DestStorage=pTemp;
m_Storage.m_dynSet=pTemp;
m_Size=Other.m_Size;
}
else
{
// Using dynamic storage, check if can reuse
if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size<Other.m_Size*2)
{
// Reuse the current storage
DestStorage=m_Storage.m_dynSet;
m_Size=Other.m_Size;
}
else
{
// Allocate the new one
set_value_type* pTemp=new set_value_type[Other.m_Size];
DestStorage=pTemp;
// Delete old storage if necessary
if(m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
// Store the new storage
m_Storage.m_dynSet=pTemp;
// Set new size
m_Size=Other.m_Size;
}
}
}
// Copy the data
::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
return *this;
}
// Operation
template<typename Char2T>
bool operator()( Char2T Ch ) const
{
return m_Set.find(Ch)!=m_Set.end();
const set_value_type* Storage=
(use_fixed_storage(m_Size))
? &m_Storage.m_fixSet[0]
: m_Storage.m_dynSet;
return ::std::binary_search(Storage, Storage+m_Size, Ch);
}
private:
// check if the size is eligible for fixed storage
static bool use_fixed_storage(std::size_t size)
{
return size<=sizeof(set_value_type*)*2;
}
private:
// set cannot operate on const value-type
typedef typename remove_const<CharT>::type set_value_type;
std::set<set_value_type> m_Set;
// storage
// The actual used storage is selected on the type
union
{
set_value_type* m_dynSet;
set_value_type m_fixSet[sizeof(set_value_type*)*2];
}
m_Storage;
// storage size
::std::size_t m_Size;
};
// is_from_range functor

View File

@ -24,26 +24,7 @@ namespace boost {
// find_format_copy (iterator variant) implementation -------------------------------//
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<
template<
typename OutputIteratorT,
typename InputT,
typename FormatterT,
@ -68,40 +49,44 @@ namespace boost {
if ( !M )
{
// Match not found - return original sequence
std::copy( begin(Input), end(Input), Output );
std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
return Output;
}
// Copy the beginning of the sequence
std::copy( begin(Input), begin(M), Output );
std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
// Format find result
// Copy formated result
std::copy( begin(M.format_result()), end(M.format_result()), Output );
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
// Copy the rest of the sequence
std::copy( M.end(), end(Input), Output );
std::copy( M.end(), ::boost::end(Input), Output );
return Output;
}
// find_format_copy implementation --------------------------------------------------//
template<
typename InputT,
typename OutputIteratorT,
typename InputT,
typename FormatterT,
typename FindResultT >
inline InputT find_format_copy_impl(
inline OutputIteratorT find_format_copy_impl(
OutputIteratorT Output,
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult)
{
return find_format_copy_impl2(
const FindResultT& FindResult )
{
return ::boost::algorithm::detail::find_format_copy_impl2(
Output,
Input,
Formatter,
FindResult,
Formatter(FindResult) );
}
template<
// find_format_copy implementation --------------------------------------------------//
template<
typename InputT,
typename FormatterT,
typename FindResultT,
@ -129,33 +114,33 @@ namespace boost {
InputT Output;
// Copy the beginning of the sequence
insert( Output, end(Output), begin(Input), M.begin() );
insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
// Copy formated result
insert( Output, end(Output), M.format_result() );
insert( Output, ::boost::end(Output), M.format_result() );
// Copy the rest of the sequence
insert( Output, end(Output), M.end(), end(Input) );
insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
return Output;
}
// replace implementation ----------------------------------------------------//
template<
typename InputT,
template<
typename InputT,
typename FormatterT,
typename FindResultT >
inline void find_format_impl(
InputT& Input,
inline InputT find_format_copy_impl(
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult)
{
find_format_impl2(
return ::boost::algorithm::detail::find_format_copy_impl2(
Input,
Formatter,
FindResult,
Formatter(FindResult) );
}
// replace implementation ----------------------------------------------------//
template<
typename InputT,
typename FormatterT,
@ -183,7 +168,23 @@ namespace boost {
}
// 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)
{
::boost::algorithm::detail::find_format_impl2(
Input,
Formatter,
FindResult,
Formatter(FindResult) );
}
} // namespace detail

View File

@ -24,29 +24,7 @@ namespace boost {
// find_format_all_copy (iterator variant) implementation ---------------------------//
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<
template<
typename OutputIteratorT,
typename InputT,
typename FinderT,
@ -73,7 +51,7 @@ namespace boost {
store_type M( FindResult, FormatResult, Formatter );
// Initialize last match
input_iterator_type LastMatch=begin(Input);
input_iterator_type LastMatch=::boost::begin(Input);
// Iterate through all matches
while( M )
@ -81,33 +59,34 @@ namespace boost {
// Copy the beginning of the sequence
std::copy( LastMatch, M.begin(), Output );
// Copy formated result
std::copy( begin(M.format_result()), end(M.format_result()), Output );
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
// Proceed to the next match
LastMatch=M.end();
M=Finder( LastMatch, end(Input) );
M=Finder( LastMatch, ::boost::end(Input) );
}
// Copy the rest of the sequence
std::copy( LastMatch, end(Input), Output );
std::copy( LastMatch, ::boost::end(Input), Output );
return Output;
}
// find_format_all_copy implementation ----------------------------------------------//
template<
typename InputT,
typename OutputIteratorT,
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT >
inline InputT find_format_all_copy_impl(
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(
const FindResultT& FindResult )
{
return ::boost::algorithm::detail::find_format_all_copy_impl2(
Output,
Input,
Finder,
Formatter,
@ -115,7 +94,9 @@ namespace boost {
Formatter(FindResult) );
}
template<
// find_format_all_copy implementation ----------------------------------------------//
template<
typename InputT,
typename FinderT,
typename FormatterT,
@ -140,7 +121,7 @@ namespace boost {
store_type M( FindResult, FormatResult, Formatter );
// Initialize last match
input_iterator_type LastMatch=begin(Input);
input_iterator_type LastMatch=::boost::begin(Input);
// Output temporary
InputT Output;
@ -149,35 +130,33 @@ namespace boost {
while( M )
{
// Copy the beginning of the sequence
insert( Output, end(Output), LastMatch, M.begin() );
insert( Output, ::boost::end(Output), LastMatch, M.begin() );
// Copy formated result
insert( Output, end(Output), M.format_result() );
insert( Output, ::boost::end(Output), M.format_result() );
// Proceed to the next match
LastMatch=M.end();
M=Finder( LastMatch, end(Input) );
M=Finder( LastMatch, ::boost::end(Input) );
}
// Copy the rest of the sequence
insert( Output, end(Output), LastMatch, end(Input) );
::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
return Output;
}
// find_format_all implementation ------------------------------------------------//
template<
typename InputT,
template<
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT >
inline void find_format_all_impl(
InputT& Input,
inline InputT find_format_all_copy_impl(
const InputT& Input,
FinderT Finder,
FormatterT Formatter,
FindResultT FindResult)
const FindResultT& FindResult)
{
find_format_all_impl2(
return ::boost::algorithm::detail::find_format_all_copy_impl2(
Input,
Finder,
Formatter,
@ -185,6 +164,8 @@ namespace boost {
Formatter(FindResult) );
}
// find_format_all implementation ------------------------------------------------//
template<
typename InputT,
typename FinderT,
@ -213,8 +194,8 @@ namespace boost {
BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
// Initialize replacement iterators
input_iterator_type InsertIt=begin(Input);
input_iterator_type SearchIt=begin(Input);
input_iterator_type InsertIt=::boost::begin(Input);
input_iterator_type SearchIt=::boost::begin(Input);
while( M )
{
@ -230,32 +211,51 @@ namespace boost {
SearchIt=M.end();
// 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
M=Finder( SearchIt, end(Input) );
M=Finder( SearchIt, ::boost::end(Input) );
}
// process the last segment
InsertIt=process_segment(
InsertIt=::boost::algorithm::detail::process_segment(
Storage,
Input,
InsertIt,
SearchIt,
end(Input) );
::boost::end(Input) );
if ( Storage.empty() )
{
// Truncate input
erase( Input, InsertIt, end(Input) );
::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) );
}
else
{
// Copy remaining data to the end of input
insert( Input, 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)
{
::boost::algorithm::detail::find_format_all_impl2(
Input,
Finder,
Formatter,
FindResult,
Formatter(FindResult) );
}
} // namespace detail
} // namespace algorithm
} // namespace boost

View File

@ -20,6 +20,10 @@ namespace boost {
// temporary format and find result storage --------------------------------//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(push)
#pragma warning(disable:4512) //assignment operator could not be generated
#endif
template<
typename ForwardIteratorT,
typename FormatterT,
@ -64,6 +68,9 @@ namespace boost {
const formatter_type& m_Formatter;
};
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
} // namespace detail
} // namespace algorithm
} // namespace boost

View File

@ -41,7 +41,7 @@ namespace boost {
// Construction
template< typename SearchT >
first_finderF( const SearchT& Search, PredicateT Comp ) :
m_Search(begin(Search), end(Search)), m_Comp(Comp) {}
m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
first_finderF(
search_iterator_type SearchBegin,
search_iterator_type SearchEnd,
@ -108,7 +108,7 @@ namespace boost {
// Construction
template< typename SearchT >
last_finderF( const SearchT& Search, PredicateT Comp ) :
m_Search(begin(Search), end(Search)), m_Comp(Comp) {}
m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
last_finderF(
search_iterator_type SearchBegin,
search_iterator_type SearchEnd,
@ -154,7 +154,7 @@ namespace boost {
while( M )
{
Last=M;
M=first_finder( end(M), End );
M=first_finder( ::boost::end(M), End );
}
return Last;
@ -224,7 +224,7 @@ namespace boost {
const SearchT& Search,
int Nth,
PredicateT Comp) :
m_Search(begin(Search), end(Search)),
m_Search(::boost::begin(Search), ::boost::end(Search)),
m_Nth(Nth),
m_Comp(Comp) {}
nth_finderF(
@ -279,7 +279,7 @@ namespace boost {
for( unsigned int n=0; n<=N; ++n )
{
// find next match
M=first_finder( end(M), End );
M=first_finder( ::boost::end(M), End );
if ( !M )
{
@ -314,7 +314,7 @@ namespace boost {
for( unsigned int n=1; n<=N; ++n )
{
// find next match
M=last_finder( Begin, begin(M) );
M=last_finder( Begin, ::boost::begin(M) );
if ( !M )
{
@ -382,7 +382,7 @@ namespace boost {
typedef BOOST_STRING_TYPENAME boost::detail::
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 >
@ -456,7 +456,7 @@ namespace boost {
typedef BOOST_STRING_TYPENAME boost::detail::
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)
{
return find_head_impl( Begin, End, m_N );
return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N );
}
else
{
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)
{
return find_tail_impl( Begin, End, m_N );
return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N );
}
else
{
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);
}
}

View File

@ -98,7 +98,7 @@ namespace boost {
// instantiate match result
match_results<input_iterator_type> result;
// 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
return result_type( result );

View File

@ -39,7 +39,7 @@ namespace boost {
public:
// Construction
const_formatF(const RangeT& Format) :
m_Format(begin(Format), end(Format)) {}
m_Format(::boost::begin(Format), ::boost::end(Format)) {}
// Operation
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
@ -70,7 +70,7 @@ namespace boost {
template< typename Range2T >
const RangeT& operator()(const Range2T& Replace) const
{
return RangeT(begin(Replace), end(Replace));
return RangeT(::boost::begin(Replace), ::boost::end(Replace));
}
};

View File

@ -63,7 +63,7 @@ namespace boost {
iterator_range<ForwardIterator1T> Result
=last_finder(
make_iterator_range(SubBegin, SubEnd),
::boost::make_iterator_range(SubBegin, SubEnd),
Comp)(Begin, End);
return !Result.empty() && Result.end()==End;

View File

@ -46,7 +46,7 @@ namespace boost {
StorageT& Storage,
const WhatT& What )
{
Storage.insert( Storage.end(), begin(What), end(What) );
Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
}
@ -68,7 +68,7 @@ namespace boost {
ForwardIteratorT SegmentEnd )
{
// 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 :
// a) Storage is empty, It==SegmentBegin
@ -125,7 +125,7 @@ namespace boost {
{
// Call replace to do the job
replace( Input, InsertIt, SegmentBegin, Storage );
::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage );
// Empty the storage
Storage.clear();
// Iterators were not changed, simply return the end of segment

View File

@ -41,7 +41,7 @@ namespace boost {
BOOST_STRING_TYPENAME InputT::iterator At,
const InsertT& Insert )
{
insert( Input, At, begin(Insert), end(Insert) );
::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
}
// erase helper ---------------------------------------------------//
@ -184,11 +184,11 @@ namespace boost {
{
if(From!=To)
{
replace( Input, From, To, begin(Insert), end(Insert) );
::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
}
else
{
insert( Input, From, begin(Insert), end(Insert) );
::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
}
}

View File

@ -20,36 +20,6 @@ namespace boost {
// 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 >
inline ForwardIteratorT trim_end_iter_select(
ForwardIteratorT InBegin,
@ -86,6 +56,36 @@ namespace boost {
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 algorithm

View File

@ -54,11 +54,11 @@ namespace boost {
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type>& SearchRange )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
range_finder(SearchRange),
empty_formatter(Input) );
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase range algorithm
@ -72,10 +72,10 @@ namespace boost {
BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type>& SearchRange )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
range_finder(SearchRange),
empty_formatter(Input) );
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase range algorithm
@ -93,10 +93,10 @@ namespace boost {
BOOST_STRING_TYPENAME
range_iterator<SequenceT>::type>& SearchRange )
{
find_format(
::boost::algorithm::find_format(
Input,
range_finder(SearchRange),
empty_formatter(Input) );
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
// erase_first --------------------------------------------------------//
@ -124,11 +124,11 @@ namespace boost {
const Range1T& Input,
const Range2T& Search )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm
@ -140,10 +140,10 @@ namespace boost {
const SequenceT& Input,
const RangeT& Search )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm
@ -159,10 +159,10 @@ namespace boost {
SequenceT& Input,
const RangeT& Search )
{
find_format(
::boost::algorithm::find_format(
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_first ( case insensitive ) ------------------------------------//
@ -193,11 +193,11 @@ namespace boost {
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm ( case insensitive )
@ -210,10 +210,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm ( case insensitive )
@ -231,10 +231,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_last --------------------------------------------------------//
@ -262,11 +262,11 @@ namespace boost {
const Range1T& Input,
const Range2T& Search )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
last_finder(Search),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm
@ -278,10 +278,10 @@ namespace boost {
const SequenceT& Input,
const RangeT& Search )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
last_finder(Search),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm
@ -297,10 +297,10 @@ namespace boost {
SequenceT& Input,
const RangeT& Search )
{
find_format(
::boost::algorithm::find_format(
Input,
last_finder(Search),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_last ( case insensitive ) ------------------------------------//
@ -331,11 +331,11 @@ namespace boost {
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
last_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm ( case insensitive )
@ -348,10 +348,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
last_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm ( case insensitive )
@ -369,10 +369,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
last_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_nth --------------------------------------------------------------------//
@ -404,11 +404,11 @@ namespace boost {
const Range2T& Search,
int Nth )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
nth_finder(Search, Nth),
empty_formatter(Input) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
@ -421,10 +421,10 @@ namespace boost {
const RangeT& Search,
int Nth )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
nth_finder(Search, Nth),
empty_formatter(Input) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
@ -443,10 +443,10 @@ namespace boost {
const RangeT& Search,
int Nth )
{
find_format(
::boost::algorithm::find_format(
Input,
nth_finder(Search, Nth),
empty_formatter(Input) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
// erase_nth ( case insensitive ) ---------------------------------------------//
@ -480,11 +480,11 @@ namespace boost {
int Nth,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
nth_finder(Search, Nth, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
@ -498,9 +498,9 @@ namespace boost {
int Nth,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
empty_formatter(Input) );
}
@ -522,10 +522,10 @@ namespace boost {
int Nth,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
nth_finder(Search, Nth, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
@ -555,11 +555,11 @@ namespace boost {
const Range1T& Input,
const Range2T& Search )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm
@ -571,10 +571,10 @@ namespace boost {
const SequenceT& Input,
const RangeT& Search )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm
@ -590,10 +590,10 @@ namespace boost {
SequenceT& Input,
const RangeT& Search )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
first_finder(Search),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_all ( case insensitive ) ------------------------------------//
@ -624,11 +624,11 @@ namespace boost {
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm ( case insensitive )
@ -641,10 +641,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm ( case insensitive )
@ -662,10 +662,10 @@ namespace boost {
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
first_finder(Search, is_iequal(Loc)),
empty_formatter(Input) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_head --------------------------------------------------------------------//
@ -696,11 +696,11 @@ namespace boost {
const RangeT& Input,
int N )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
head_finder(N),
empty_formatter( Input ) );
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase head algorithm
@ -712,10 +712,10 @@ namespace boost {
const SequenceT& Input,
int N )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
head_finder(N),
empty_formatter( Input ) );
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase head algorithm
@ -734,10 +734,10 @@ namespace boost {
SequenceT& Input,
int N )
{
find_format(
::boost::algorithm::find_format(
Input,
head_finder(N),
empty_formatter( Input ) );
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
// erase_tail --------------------------------------------------------------------//
@ -768,11 +768,11 @@ namespace boost {
const RangeT& Input,
int N )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
tail_finder(N),
empty_formatter( Input ) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase tail algorithm
@ -784,10 +784,10 @@ namespace boost {
const SequenceT& Input,
int N )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
tail_finder(N),
empty_formatter( Input ) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase tail algorithm
@ -806,10 +806,10 @@ namespace boost {
SequenceT& Input,
int N )
{
find_format(
::boost::algorithm::find_format(
Input,
tail_finder(N),
empty_formatter( Input ) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
} // namespace algorithm

View File

@ -17,8 +17,6 @@
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/result_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/finder.hpp>
@ -50,14 +48,14 @@ namespace boost {
*/
template<typename RangeT, typename FinderT>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find(
RangeT& Input,
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(begin(lit_input),end(lit_input));
return Finder(::boost::begin(lit_input),::boost::end(lit_input));
}
// find_first -----------------------------------------------//
@ -78,12 +76,12 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_first(
Range1T& Input,
const Range2T& Search)
{
return find(Input, first_finder(Search));
return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search));
}
//! Find first algorithm ( case insensitive )
@ -104,13 +102,13 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_first(
Range1T& Input,
const Range2T& Search,
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 -----------------------------------------------//
@ -131,12 +129,12 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_last(
Range1T& Input,
const Range2T& Search)
{
return find(Input, last_finder(Search));
return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search));
}
//! Find last algorithm ( case insensitive )
@ -157,13 +155,13 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_last(
Range1T& Input,
const Range2T& Search,
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 ----------------------------------------------------------------------//
@ -185,13 +183,13 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_nth(
Range1T& Input,
const Range2T& Search,
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 ).
@ -215,14 +213,14 @@ namespace boost {
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<Range1T>::type>
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_nth(
Range1T& Input,
const Range2T& Search,
int Nth,
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 ----------------------------------------------------------------------//
@ -247,12 +245,12 @@ namespace boost {
*/
template<typename RangeT>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_head(
RangeT& Input,
int N)
{
return find(Input, head_finder(N));
return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N));
}
// find_tail ----------------------------------------------------------------------//
@ -278,12 +276,12 @@ namespace boost {
*/
template<typename RangeT>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_tail(
RangeT& Input,
int N)
{
return find(Input, tail_finder(N));
return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N));
}
// find_token --------------------------------------------------------------------//
@ -307,13 +305,13 @@ namespace boost {
*/
template<typename RangeT, typename PredicateT>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_token(
RangeT& Input,
PredicateT Pred,
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

View File

@ -17,6 +17,7 @@
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/concept.hpp>
#include <boost/algorithm/string/detail/find_format.hpp>
@ -61,21 +62,24 @@ namespace boost {
FormatterT Formatter )
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
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(
Output,
lit_input,
Formatter,
Finder( begin(lit_input), end(lit_input) ) );
Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
}
//! Generic replace algorithm
@ -92,18 +96,21 @@ namespace boost {
FormatterT Formatter )
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
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(
Input,
Formatter,
Finder(begin(Input), end(Input)));
Finder(::boost::begin(Input), ::boost::end(Input)));
}
//! Generic replace algorithm
@ -125,18 +132,21 @@ namespace boost {
FormatterT Formatter)
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
detail::find_format_impl(
Input,
Formatter,
Finder(begin(Input), end(Input)));
Finder(::boost::begin(Input), ::boost::end(Input)));
}
@ -171,22 +181,25 @@ namespace boost {
FormatterT Formatter)
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
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(
Output,
lit_input,
Finder,
Formatter,
Finder(begin(lit_input), end(lit_input)));
Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
}
//! Generic replace all algorithm
@ -203,19 +216,22 @@ namespace boost {
FormatterT Formatter )
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
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(
Input,
Finder,
Formatter,
Finder( begin(Input), end(Input) ) );
Finder( ::boost::begin(Input), ::boost::end(Input) ) );
}
//! Generic replace all algorithm
@ -238,19 +254,22 @@ namespace boost {
FormatterT Formatter )
{
// Concept check
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
detail::find_format_all_impl(
Input,
Finder,
Formatter,
Finder(begin(Input), end(Input)));
Finder(::boost::begin(Input), ::boost::end(Input)));
}

View File

@ -18,13 +18,13 @@
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/find_iterator.hpp>
/*! \file
Defines find iterator classes. Find iterator repeatly applies a Finder
Defines find iterator classes. Find iterator repeatedly applies a Finder
to the specified input string to search for matches. Dereferencing
the iterator yields the current match or a range between the last and the current
match depending on the iterator used.
@ -58,12 +58,6 @@ namespace boost {
// facade support
friend class ::boost::iterator_core_access;
// base type
typedef iterator_facade<
find_iterator<IteratorT>,
const iterator_range<IteratorT>,
forward_traversal_tag> facade_type;
private:
// typedefs
@ -119,9 +113,9 @@ namespace boost {
FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0)
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
m_End=end(lit_col);
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
m_Match=::boost::make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
m_End=::boost::end(lit_col);
increment();
}
@ -185,12 +179,12 @@ namespace boost {
*/
template<typename RangeT, typename FinderT>
inline find_iterator<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_find_iterator(
RangeT& Collection,
FinderT Finder)
{
return find_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
return find_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
Collection, Finder);
}
@ -220,12 +214,6 @@ namespace boost {
// facade support
friend class ::boost::iterator_core_access;
// base type
typedef iterator_facade<
find_iterator<IteratorT>,
iterator_range<IteratorT>,
forward_traversal_tag> facade_type;
private:
// typedefs
@ -285,10 +273,10 @@ namespace boost {
detail::find_iterator_base<IteratorT>(Finder,0),
m_bEof(false)
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
m_Next=begin(lit_col);
m_End=end(lit_col);
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_Next=::boost::begin(lit_col);
m_End=::boost::end(lit_col);
increment();
}
@ -363,12 +351,12 @@ namespace boost {
*/
template<typename RangeT, typename FinderT>
inline split_iterator<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_split_iterator(
RangeT& Collection,
FinderT Finder)
{
return split_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
return split_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
Collection, Finder);
}

View File

@ -56,7 +56,7 @@ namespace boost {
detail::first_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( as_literal(Search), is_equal() ) ;
is_equal>( ::boost::as_literal(Search), is_equal() ) ;
}
//! "First" finder
@ -74,7 +74,7 @@ namespace boost {
detail::first_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( as_literal(Search), Comp );
PredicateT>( ::boost::as_literal(Search), Comp );
}
//! "Last" finder
@ -97,7 +97,7 @@ namespace boost {
detail::last_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( as_literal(Search), is_equal() );
is_equal>( ::boost::as_literal(Search), is_equal() );
}
//! "Last" finder
/*!
@ -113,7 +113,7 @@ namespace boost {
detail::last_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( as_literal(Search), Comp ) ;
PredicateT>( ::boost::as_literal(Search), Comp ) ;
}
//! "Nth" finder
@ -139,7 +139,7 @@ namespace boost {
detail::nth_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( as_literal(Search), Nth, is_equal() ) ;
is_equal>( ::boost::as_literal(Search), Nth, is_equal() ) ;
}
//! "Nth" finder
/*!
@ -158,7 +158,7 @@ namespace boost {
detail::nth_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( as_literal(Search), Nth, Comp );
PredicateT>( ::boost::as_literal(Search), Nth, Comp );
}
//! "Head" finder

View File

@ -50,7 +50,7 @@ namespace boost {
{
return detail::const_formatF<
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

View File

@ -19,7 +19,7 @@
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
@ -74,32 +74,34 @@ namespace boost {
RangeT& Input,
FinderT Finder )
{
function_requires<
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
BOOST_CONCEPT_ASSERT((
FinderConcept<
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
range_result_iterator<RangeT>::type input_iterator_type;
range_iterator<RangeT>::type input_iterator_type;
typedef find_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type;
input_iterator_type InputEnd=end(lit_input);
input_iterator_type InputEnd=::boost::end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type;
transform_iter_type itBegin=
make_transform_iterator(
find_iterator_type( begin(lit_input), InputEnd, Finder ),
::boost::make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
copy_range_type());
transform_iter_type itEnd=
make_transform_iterator(
::boost::make_transform_iterator(
find_iterator_type(),
copy_range_type());
@ -143,32 +145,33 @@ namespace boost {
RangeT& Input,
FinderT Finder )
{
function_requires<
BOOST_CONCEPT_ASSERT((
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
));
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
typedef BOOST_STRING_TYPENAME
range_result_iterator<RangeT>::type input_iterator_type;
range_iterator<RangeT>::type input_iterator_type;
typedef split_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type;
input_iterator_type InputEnd=end(lit_input);
input_iterator_type InputEnd=::boost::end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type;
transform_iter_type itBegin=
make_transform_iterator(
find_iterator_type( begin(lit_input), InputEnd, Finder ),
::boost::make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
copy_range_type() );
transform_iter_type itEnd=
make_transform_iterator(
::boost::make_transform_iterator(
find_iterator_type(),
copy_range_type() );

View File

@ -14,7 +14,7 @@
#include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/detail/sequence.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
/*! \file
Defines join algorithm.
@ -52,8 +52,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=end(Input);
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
@ -61,16 +61,16 @@ namespace boost {
// Append first element
if(itBegin!=itEnd)
{
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
// Add separator
detail::insert(Result, end(Result), as_literal(Separator));
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
}
return Result;
@ -103,8 +103,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=end(Input);
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
@ -114,7 +114,7 @@ namespace boost {
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
@ -123,9 +123,9 @@ namespace boost {
if(Pred(*itBegin))
{
// Add separator
detail::insert(Result, end(Result), as_literal(Separator));
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}

View File

@ -59,19 +59,19 @@ namespace boost {
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
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(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=end(lit_test);
Iterator1T InputEnd=::boost::end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test);
Iterator1T it=begin(lit_input);
Iterator2T pit=begin(lit_test);
Iterator1T it=::boost::begin(lit_input);
Iterator2T pit=::boost::begin(lit_test);
for(;
it!=InputEnd && pit!=TestEnd;
++it,++pit)
@ -92,7 +92,7 @@ namespace boost {
const Range1T& Input,
const Range2T& Test)
{
return starts_with(Input, Test, is_equal());
return ::boost::algorithm::starts_with(Input, Test, is_equal());
}
//! 'Starts with' predicate ( case insensitive )
@ -114,7 +114,7 @@ namespace boost {
const Range2T& Test,
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,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
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(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
@ -151,10 +151,10 @@ namespace boost {
return detail::
ends_with_iter_select(
begin(lit_input),
end(lit_input),
begin(lit_test),
end(lit_test),
::boost::begin(lit_input),
::boost::end(lit_input),
::boost::begin(lit_test),
::boost::end(lit_test),
Comp,
category());
}
@ -169,7 +169,7 @@ namespace boost {
const Range1T& Input,
const Range2T& Test)
{
return ends_with(Input, Test, is_equal());
return ::boost::algorithm::ends_with(Input, Test, is_equal());
}
//! 'Ends with' predicate ( case insensitive )
@ -191,7 +191,7 @@ namespace boost {
const Range2T& Test,
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 -----------------------------------------------//
@ -215,17 +215,17 @@ namespace boost {
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
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(::boost::as_literal(Test));
if (empty(lit_test))
if (::boost::empty(lit_test))
{
// Empty range is contained always
return true;
}
// Use the temporary variable to make VACPP happy
bool bResult=(first_finder(lit_test,Comp)(begin(lit_input), end(lit_input)));
bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
return bResult;
}
@ -238,7 +238,7 @@ namespace boost {
const Range1T& Input,
const Range2T& Test)
{
return contains(Input, Test, is_equal());
return ::boost::algorithm::contains(Input, Test, is_equal());
}
//! 'Contains' predicate ( case insensitive )
@ -259,7 +259,7 @@ namespace boost {
const Range2T& Test,
const std::locale& Loc=std::locale())
{
return contains(Input, Test, is_iequal(Loc));
return ::boost::algorithm::contains(Input, Test, is_iequal(Loc));
}
// equals predicate -----------------------------------------------//
@ -286,19 +286,19 @@ namespace boost {
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
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(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=end(lit_test);
Iterator1T InputEnd=::boost::end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test);
Iterator1T it=begin(lit_input);
Iterator2T pit=begin(lit_test);
Iterator1T it=::boost::begin(lit_input);
Iterator2T pit=::boost::begin(lit_test);
for(;
it!=InputEnd && pit!=TestEnd;
++it,++pit)
@ -319,7 +319,7 @@ namespace boost {
const Range1T& Input,
const Range2T& Test)
{
return equals(Input, Test, is_equal());
return ::boost::algorithm::equals(Input, Test, is_equal());
}
//! 'Equals' predicate ( case insensitive )
@ -343,7 +343,7 @@ namespace boost {
const Range2T& Test,
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 -----------------------------//
@ -372,14 +372,14 @@ namespace boost {
const Range2T& Arg2,
PredicateT Pred)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_arg1(as_literal(Arg1));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
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(::boost::as_literal(Arg2));
return std::lexicographical_compare(
begin(lit_arg1),
end(lit_arg1),
begin(lit_arg2),
end(lit_arg2),
::boost::begin(lit_arg1),
::boost::end(lit_arg1),
::boost::begin(lit_arg2),
::boost::end(lit_arg2),
Pred);
}
@ -392,7 +392,7 @@ namespace boost {
const Range1T& Arg1,
const Range2T& Arg2)
{
return lexicographical_compare(Arg1, Arg2, is_less());
return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less());
}
//! Lexicographical compare predicate (case-insensitive)
@ -417,7 +417,7 @@ namespace boost {
const Range2T& Arg2,
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,13 +439,13 @@ namespace boost {
const RangeT& Input,
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
range_const_iterator<RangeT>::type Iterator1T;
Iterator1T InputEnd=end(lit_input);
for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
Iterator1T InputEnd=::boost::end(lit_input);
for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It)
{
if (!Pred(*It))
return false;

View File

@ -17,7 +17,7 @@
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/result_iterator.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/find_format.hpp>
@ -54,16 +54,16 @@ namespace boost {
typename CharT,
typename RegexTraitsT>
inline iterator_range<
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type >
BOOST_STRING_TYPENAME range_iterator<RangeT>::type >
find_regex(
RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
return regex_finder(Rx,Flags)(
begin(lit_input), end(lit_input) );
return ::boost::algorithm::regex_finder(Rx,Flags)(
::boost::begin(lit_input), ::boost::end(lit_input) );
}
// replace_regex --------------------------------------------------------------------//
@ -98,11 +98,11 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace regex algorithm
@ -120,10 +120,10 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace regex algorithm
@ -147,10 +147,10 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
find_format(
::boost::algorithm::find_format(
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
// replace_all_regex --------------------------------------------------------------------//
@ -184,11 +184,11 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace all regex algorithm
@ -206,10 +206,10 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace all regex algorithm
@ -233,10 +233,10 @@ namespace boost {
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
regex_finder( Rx, Flags ),
regex_formatter( Format, Flags ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
// erase_regex --------------------------------------------------------------------//
@ -267,11 +267,11 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase regex algorithm
@ -287,10 +287,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase regex algorithm
@ -311,10 +311,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
find_format(
::boost::algorithm::find_format(
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
// erase_all_regex --------------------------------------------------------------------//
@ -346,11 +346,11 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase all regex algorithm
@ -366,10 +366,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase all regex algorithm
@ -390,10 +390,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
regex_finder( Rx, Flags ),
empty_formatter( Input ) );
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
// find_all_regex ------------------------------------------------------------------//
@ -431,10 +431,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return iter_find(
return ::boost::algorithm::iter_find(
Result,
Input,
regex_finder(Rx,Flags) );
::boost::algorithm::regex_finder(Rx,Flags) );
}
// split_regex ------------------------------------------------------------------//
@ -472,10 +472,10 @@ namespace boost {
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return iter_split(
return ::boost::algorithm::iter_split(
Result,
Input,
regex_finder(Rx,Flags) );
::boost::algorithm::regex_finder(Rx,Flags) );
}
// join_if ------------------------------------------------------------------//
@ -515,8 +515,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=end(Input);
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
@ -525,23 +525,23 @@ namespace boost {
// Roll to the first element that will be added
while(
itBegin!=itEnd &&
!regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
{
// Add separator
detail::insert(Result, end(Result), as_literal(Separator));
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}
@ -583,8 +583,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=end(Input);
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
@ -593,23 +593,23 @@ namespace boost {
// Roll to the first element that will be added
while(
itBegin!=itEnd &&
!regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
{
// Add separator
detail::insert(Result, end(Result), as_literal(Separator));
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, end(Result), *itBegin);
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}
@ -634,6 +634,12 @@ namespace boost {
using algorithm::find_all_regex;
using algorithm::split_regex;
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if;
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if_regex;
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
} // namespace boost

View File

@ -61,11 +61,11 @@ namespace boost {
range_const_iterator<Range1T>::type>& SearchRange,
const Range2T& Format)
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
range_finder(SearchRange),
const_formatter(Format));
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
//! Replace range algorithm
@ -80,10 +80,10 @@ namespace boost {
range_const_iterator<SequenceT>::type>& SearchRange,
const RangeT& Format)
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
range_finder(SearchRange),
const_formatter(Format));
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
//! Replace range algorithm
@ -103,10 +103,10 @@ namespace boost {
range_iterator<SequenceT>::type>& SearchRange,
const RangeT& Format)
{
find_format(
::boost::algorithm::find_format(
Input,
range_finder(SearchRange),
const_formatter(Format));
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
// replace_first --------------------------------------------------------------------//
@ -138,11 +138,11 @@ namespace boost {
const Range2T& Search,
const Range3T& Format)
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm
@ -155,10 +155,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm
@ -176,10 +176,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
find_format(
::boost::algorithm::find_format(
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_first ( case insensitive ) ---------------------------------------------//
@ -214,11 +214,11 @@ namespace boost {
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm ( case insensitive )
@ -232,10 +232,10 @@ namespace boost {
const Range1T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm ( case insensitive )
@ -256,10 +256,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_last --------------------------------------------------------------------//
@ -291,11 +291,11 @@ namespace boost {
const Range2T& Search,
const Range3T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
last_finder(Search),
const_formatter(Format) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm
@ -308,10 +308,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
last_finder(Search),
const_formatter(Format) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm
@ -329,10 +329,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
find_format(
::boost::algorithm::find_format(
Input,
last_finder(Search),
const_formatter(Format) );
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_last ( case insensitive ) -----------------------------------------------//
@ -367,11 +367,11 @@ namespace boost {
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
last_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm ( case insensitive )
@ -385,10 +385,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
last_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm ( case insensitive )
@ -410,10 +410,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
last_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_nth --------------------------------------------------------------------//
@ -448,11 +448,11 @@ namespace boost {
int Nth,
const Range3T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
nth_finder(Search, Nth),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm
@ -466,10 +466,10 @@ namespace boost {
int Nth,
const Range2T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
nth_finder(Search, Nth),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm
@ -490,10 +490,10 @@ namespace boost {
int Nth,
const Range2T& Format )
{
find_format(
::boost::algorithm::find_format(
Input,
nth_finder(Search, Nth),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
// replace_nth ( case insensitive ) -----------------------------------------------//
@ -531,11 +531,11 @@ namespace boost {
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
nth_finder(Search, Nth, is_iequal(Loc) ),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm ( case insensitive )
@ -550,10 +550,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
nth_finder(Search, Nth, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm ( case insensitive )
@ -577,10 +577,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
find_format(
::boost::algorithm::find_format(
Input,
nth_finder(Search, Nth, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_all --------------------------------------------------------------------//
@ -612,11 +612,11 @@ namespace boost {
const Range2T& Search,
const Range3T& Format )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm
@ -629,10 +629,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm
@ -651,10 +651,10 @@ namespace boost {
const Range1T& Search,
const Range2T& Format )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
first_finder(Search),
const_formatter(Format) );
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_all ( case insensitive ) -----------------------------------------------//
@ -689,11 +689,11 @@ namespace boost {
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm ( case insensitive )
@ -707,10 +707,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return find_format_all_copy(
return ::boost::algorithm::find_format_all_copy(
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm ( case insensitive )
@ -731,10 +731,10 @@ namespace boost {
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
find_format_all(
::boost::algorithm::find_format_all(
Input,
first_finder(Search, is_iequal(Loc)),
const_formatter(Format) );
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_head --------------------------------------------------------------------//
@ -769,11 +769,11 @@ namespace boost {
int N,
const Range2T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
head_finder(N),
const_formatter(Format) );
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace head algorithm
@ -786,10 +786,10 @@ namespace boost {
int N,
const RangeT& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
head_finder(N),
const_formatter(Format) );
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace head algorithm
@ -811,10 +811,10 @@ namespace boost {
int N,
const RangeT& Format )
{
find_format(
::boost::algorithm::find_format(
Input,
head_finder(N),
const_formatter(Format) );
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
// replace_tail --------------------------------------------------------------------//
@ -849,11 +849,11 @@ namespace boost {
int N,
const Range2T& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Output,
Input,
tail_finder(N),
const_formatter(Format) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace tail algorithm
@ -866,10 +866,10 @@ namespace boost {
int N,
const RangeT& Format )
{
return find_format_copy(
return ::boost::algorithm::find_format_copy(
Input,
tail_finder(N),
const_formatter(Format) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace tail algorithm
@ -891,10 +891,10 @@ namespace boost {
int N,
const RangeT& Format )
{
find_format(
::boost::algorithm::find_format(
Input,
tail_finder(N),
const_formatter(Format) );
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
} // namespace algorithm

View File

@ -64,10 +64,10 @@ namespace boost {
Range1T& Input,
const Range2T& Search)
{
return iter_find(
return ::boost::algorithm::iter_find(
Result,
Input,
first_finder(Search) );
::boost::algorithm::first_finder(Search) );
}
//! Find all algorithm ( case insensitive )
@ -100,10 +100,10 @@ namespace boost {
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return iter_find(
return ::boost::algorithm::iter_find(
Result,
Input,
first_finder(Search, is_iequal(Loc) ) );
::boost::algorithm::first_finder(Search, is_iequal(Loc) ) );
}
@ -143,10 +143,10 @@ namespace boost {
PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off )
{
return iter_split(
return ::boost::algorithm::iter_split(
Result,
Input,
token_finder( Pred, eCompress ) );
::boost::algorithm::token_finder( Pred, eCompress ) );
}
} // namespace algorithm

View File

@ -63,14 +63,14 @@ namespace boost {
const RangeT& Input,
PredicateT IsSpace)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
std::copy(
::boost::algorithm::detail::trim_begin(
begin(lit_range),
end(lit_range),
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace ),
end(lit_range),
::boost::end(lit_range),
Output);
return Output;
@ -85,10 +85,10 @@ namespace boost {
{
return SequenceT(
::boost::algorithm::detail::trim_begin(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
IsSpace ),
end(Input));
::boost::end(Input));
}
//! Left trim - parametric
@ -106,7 +106,7 @@ namespace boost {
inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
{
return
trim_left_copy_if(
::boost::algorithm::trim_left_copy_if(
Input,
is_space(Loc));
}
@ -124,10 +124,10 @@ namespace boost {
inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
{
Input.erase(
begin(Input),
::boost::begin(Input),
::boost::algorithm::detail::trim_begin(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
IsSpace));
}
@ -142,7 +142,7 @@ namespace boost {
template<typename SequenceT>
inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
{
trim_left_if(
::boost::algorithm::trim_left_if(
Input,
is_space(Loc));
}
@ -171,13 +171,13 @@ namespace boost {
const RangeT& Input,
PredicateT IsSpace )
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
std::copy(
begin(lit_range),
::boost::begin(lit_range),
::boost::algorithm::detail::trim_end(
begin(lit_range),
end(lit_range),
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace ),
Output );
@ -192,10 +192,10 @@ namespace boost {
inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
{
return SequenceT(
begin(Input),
::boost::begin(Input),
::boost::algorithm::detail::trim_end(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
IsSpace)
);
}
@ -215,7 +215,7 @@ namespace boost {
inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
{
return
trim_right_copy_if(
::boost::algorithm::trim_right_copy_if(
Input,
is_space(Loc));
}
@ -235,10 +235,10 @@ namespace boost {
{
Input.erase(
::boost::algorithm::detail::trim_end(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
IsSpace ),
end(Input)
::boost::end(Input)
);
}
@ -254,7 +254,7 @@ namespace boost {
template<typename SequenceT>
inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
{
trim_right_if(
::boost::algorithm::trim_right_if(
Input,
is_space(Loc) );
}
@ -283,18 +283,18 @@ namespace boost {
const RangeT& Input,
PredicateT IsSpace)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type TrimEnd=
::boost::algorithm::detail::trim_end(
begin(lit_range),
end(lit_range),
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace);
std::copy(
detail::trim_begin(
begin(lit_range), TrimEnd, IsSpace),
::boost::begin(lit_range), TrimEnd, IsSpace),
TrimEnd,
Output
);
@ -312,13 +312,13 @@ namespace boost {
BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type TrimEnd=
::boost::algorithm::detail::trim_end(
begin(Input),
end(Input),
::boost::begin(Input),
::boost::end(Input),
IsSpace);
return SequenceT(
detail::trim_begin(
begin(Input),
::boost::begin(Input),
TrimEnd,
IsSpace),
TrimEnd
@ -340,7 +340,7 @@ namespace boost {
inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
{
return
trim_copy_if(
::boost::algorithm::trim_copy_if(
Input,
is_space(Loc) );
}
@ -357,8 +357,8 @@ namespace boost {
template<typename SequenceT, typename PredicateT>
inline void trim_if(SequenceT& Input, PredicateT IsSpace)
{
trim_right_if( Input, IsSpace );
trim_left_if( Input, IsSpace );
::boost::algorithm::trim_right_if( Input, IsSpace );
::boost::algorithm::trim_left_if( Input, IsSpace );
}
//! Trim
@ -372,7 +372,7 @@ namespace boost {
template<typename SequenceT>
inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
{
trim_if(
::boost::algorithm::trim_if(
Input,
is_space( Loc ) );
}

View File

@ -56,7 +56,7 @@ be enough. The present library solves both problems.</p>
<tt>minmax</tt>
as straightforward extensions of the C++
standard. As it returns a pair of <tt>const&amp;</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
<tt>std::min</tt>
and <tt>std::max</tt>, but to add one more algorithms that combines both; see the
@ -158,9 +158,9 @@ identical to
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).
<p>The family of algorithms comprising <tt>first_min_first_max_element</tt>,
<tt>first_min_first_max_element</tt>,
<tt>first_min_first_max_element</tt>,
and <tt>first_min_first_max_element</tt> can be described generically as
<tt>first_min_last_max_element</tt>,
<tt>last_min_first_max_element</tt>,
and <tt>last_min_last_max_element</tt> can be described generically as
follows (using <i><tt>which</tt></i> and
<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

View File

@ -0,0 +1,10 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
boost_additional_test_dependencies(algorithm BOOST_DEPENDS test)
boost_test_run(minmax_element_test)
boost_test_run(minmax_test)

View File

@ -54,23 +54,23 @@ void test(BOOST_EXPLICIT_TEMPLATE_TYPE(Value))
less_count<Value> lc(counter);
// 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<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<1>(result2), one );
// Test functionality and number of comparisons
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<1>(result3), one );
BOOST_CHECK_EQUAL( counter, 1 );
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<1>(result4), one );
BOOST_CHECK_EQUAL( counter, 1);

4
module.cmake Normal file
View File

@ -0,0 +1,4 @@
boost_module(algorithm DEPENDS regex concept_check range)

View File

@ -10,7 +10,10 @@
import toolset ;
toolset.using doxygen ;
boostbook string_algo : string_algo.xml autodoc ;
boostbook string_algo : string_algo.xml autodoc
:
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
;
doxygen autodoc
:
@ -31,6 +34,7 @@ doxygen autodoc
[ glob ../../../../boost/algorithm/string/trim.hpp ]
[ glob ../../../../boost/algorithm/string/predicate.hpp ]
[ glob ../../../../boost/algorithm/string/split.hpp ]
[ glob ../../../../boost/algorithm/string/iter_find.hpp ]
[ glob ../../../../boost/algorithm/string/erase.hpp ]
[ glob ../../../../boost/algorithm/string/join.hpp ]
[ glob ../../../../boost/algorithm/string/replace.hpp ]

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.concept" last-revision="$Date$">
@ -102,7 +102,7 @@
struct simple_finder
{
template&lt;typename ForwardIteratorT&gt;
boost::iterator_range&lt;ForwardIterator&gt; operator()(
boost::iterator_range&lt;ForwardIteratorT&gt; operator()(
ForwardIteratorT Begin,
ForwardIteratorT End )
{

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.credits" last-revision="$Date$">

View File

@ -5,7 +5,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.design" last-revision="$Date$">
@ -217,7 +217,7 @@
</para>
<para>
For more information about the exception safety topics, follow this
<ulink url="../../more/generic_exception_safety.html">link</ulink>
<ulink url="http://www.boost.org/more/generic_exception_safety.html">link</ulink>
</para>
</section>
</section>

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.env" last-revision="$Date$">

View File

@ -5,7 +5,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.intro" last-revision="$Date$">

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.quickref" last-revision="$Date$">
@ -151,7 +151,7 @@
</row>
<row>
<entry><code>lexicographical_compare</code></entry>
<entry>Check if a string is lexicographicaly less then another one</entry>
<entry>Check if a string is lexicographically less then another one</entry>
<entry>
<functionname>lexicographical_compare()</functionname>
<sbr/>
@ -434,7 +434,7 @@
<functionname>find_all_regex()</functionname>
</entry>
</row>
<row>
<row>
<entry>split</entry>
<entry>Split input into parts</entry>
<entry>
@ -442,7 +442,21 @@
<sbr/>
<functionname>split_regex()</functionname>
</entry>
</row>
</row>
<row>
<entry>iter_find</entry>
<entry>Iteratively apply the finder to the input to find all matching substrings</entry>
<entry>
<functionname>iter_find()</functionname>
</entry>
</row>
<row>
<entry>iter_split</entry>
<entry>Use the finder to find matching substrings in the input and use them as separators to split the input into parts</entry>
<entry>
<functionname>iter_split()</functionname>
</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.rationale" last-revision="$Date$">

View File

@ -4,10 +4,14 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<section id="string_algo.release_notes" last-revision="$Date$">
<using-namespace name="boost"/>
<using-namespace name="boost::algorithm"/>
<title>Release Notes</title>
<itemizedlist>
@ -19,5 +23,23 @@
<para><emphasis role="bold">1.33</emphasis></para>
<para>Internal version of collection traits removed, library adapted to Boost.Range</para>
</listitem>
<listitem>
<para><emphasis role="bold">1.34</emphasis></para>
<itemizedlist>
<listitem>
<functionname>lexicographical_compare()</functionname>
</listitem>
<listitem>
<functionname>join()</functionname> and <functionname>join_if()</functionname>
</listitem>
<listitem>
New comparison predicates <code>is_less</code>, <code>is_not_greater</code>
</listitem>
<listitem>
Negative indexes support (like Perl) in various algorihtms
(<code>*_head/tail</code>, <code>*_nth</code>).
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</section>

View File

@ -4,7 +4,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
<library name="String Algorithms" dirname="algorithm/string" xmlns:xi="http://www.w3.org/2001/XInclude"

View File

@ -5,7 +5,7 @@
<!-- Copyright (c) 2002-2006 Pavol Droba.
Subject to the Boost Software License, Version 1.0.
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-->
@ -130,7 +130,7 @@
string str1("command.com");
cout
&lt;&lt; str1
&lt;&lt; is_executable("command.com")? "is": "is not"
&lt;&lt; (is_executable("command.com")? "is": "is not")
&lt;&lt; "an executable"
&lt;&lt; endl; // prints "command.com is an executable"
@ -138,7 +138,7 @@
char text1[]="hello world!";
cout
&lt;&lt; text1
&lt;&lt; all( text1, is_lower() )? "is": "is not"
&lt;&lt; (all( text1, is_lower() )? "is": "is not")
&lt;&lt; " written in the lower case"
&lt;&lt; endl; // prints "hello world! is written in the lower case"
</programlisting>

View File

@ -114,10 +114,13 @@ public:
result_type operator()( const ReplaceT& Replace ) const
{
SeqT r;
r.push_back( repeat_mark<value_type>() );
r.push_back( *(Replace.begin()) );
r.push_back( value_type( Replace.size() ) );
if(!Replace.empty())
{
r.push_back( repeat_mark<value_type>() );
r.push_back( *(Replace.begin()) );
r.push_back( value_type( Replace.size() ) );
}
return r;
}
};
@ -183,14 +186,18 @@ public:
template< typename ReplaceT >
result_type operator()( const ReplaceT& Replace ) const
{
// extract info
typename ReplaceT::const_iterator It=Replace.begin();
value_type Value=*(++It);
value_type Repeat=*(++It);
SeqT r;
for( value_type Index=0; Index<Repeat; Index++ ) r.push_back( Value );
if(!Replace.empty())
{
// extract info
typename ReplaceT::const_iterator It=Replace.begin();
value_type Value=*(++It);
value_type Repeat=*(++It);
for( value_type Index=0; Index<Repeat; Index++ ) r.push_back( Value );
}
return r;
}

View File

@ -0,0 +1,18 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
boost_additional_test_dependencies(algorithm BOOST_DEPENDS test)
boost_test_run(trim_test)
boost_test_run(conv_test)
boost_test_run(predicate_test)
boost_test_run(find_test)
boost_test_run(split_test)
boost_test_run(join_test)
boost_test_run(replace_test)
boost_test_run(regex_test DEPENDS boost_regex SHARED)

View File

@ -96,10 +96,29 @@ void predicate_test()
}
template<typename Pred, typename Input>
void test_pred(const Pred& pred, const Input& input, bool bYes)
{
// test assignment operator
Pred pred1=pred;
pred1=pred;
pred1=pred1;
if(bYes)
{
BOOST_CHECK( all( input, pred ) );
BOOST_CHECK( all( input, pred1 ) );
}
else
{
BOOST_CHECK( !all( input, pred ) );
BOOST_CHECK( !all( input, pred1 ) );
}
}
#define TEST_CLASS( Pred, YesInput, NoInput )\
{\
BOOST_CHECK( all( string(YesInput), Pred ) );\
BOOST_CHECK( !all( string(NoInput), Pred ) );\
test_pred(Pred, YesInput, true); \
test_pred(Pred, NoInput, false); \
}
void classification_test()
@ -121,6 +140,14 @@ void classification_test()
TEST_CLASS( !is_classified(std::ctype_base::space), "...", "..\n\r\t " );
TEST_CLASS( ( !is_any_of("abc") && is_from_range('a','e') ) || is_space(), "d e", "abcde" );
// is_any_of test
// TEST_CLASS( !is_any_of(""), "", "aaa" )
TEST_CLASS( is_any_of("a"), "a", "ab" )
TEST_CLASS( is_any_of("ba"), "ab", "abc" )
TEST_CLASS( is_any_of("cba"), "abc", "abcd" )
TEST_CLASS( is_any_of("hgfedcba"), "abcdefgh", "abcdefghi" )
TEST_CLASS( is_any_of("qponmlkjihgfedcba"), "abcdefghijklmnopq", "zzz" )
}
#undef TEST_CLASS

View File

@ -120,6 +120,7 @@ void replace_all_test()
{
// replace all
TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("YYY"), string("1YYY3YYY2") );
TEST_ALGO( replace_all, string("1abc3abc2"), "/" C_ "\\", string("1abc3abc2") );
TEST_ALGO( ireplace_all, "1aBc3AbC2", "abC" C_ "YYY", string("1YYY3YYY2") );
TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("Z"), string("1Z3Z2") );
TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3XXXX2") );