Compare commits

..

6 Commits

Author SHA1 Message Date
2d10abb411 Fix links to the license text file.
[SVN r43289]
2008-02-17 12:49:59 +00:00
852b7cf9c8 A couple of links that my script missed.
[SVN r43180]
2008-02-08 18:37:20 +00:00
d095459206 Roll back links to the beta site.
[SVN r43163]
2008-02-07 20:47:08 +00:00
75302bb82d Update a couple of links.
[SVN r41656]
2007-12-03 19:54:56 +00:00
260043a486 Fix links to new site.
[SVN r41583]
2007-12-02 14:44:53 +00:00
4e7c6fc938 Create a branch to fix links on.
[SVN r41573]
2007-12-02 10:07:42 +00:00
25 changed files with 162 additions and 297 deletions

View File

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

View File

@ -202,8 +202,8 @@ namespace boost {
BOOST_STRING_TYPENAME range_value<RangeT>::type> BOOST_STRING_TYPENAME range_value<RangeT>::type>
is_any_of( const RangeT& Set ) is_any_of( const RangeT& Set )
{ {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(as_literal(Set)); return detail::is_any_ofF<
return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set); BOOST_STRING_TYPENAME range_value<RangeT>::type>(as_literal(Set));
} }
//! is_from_range predicate //! is_from_range predicate

View File

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

View File

@ -21,11 +21,6 @@ namespace boost {
// case conversion functors -----------------------------------------------// // 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 // a tolower functor
template<typename CharT> template<typename CharT>
struct to_lowerF : public std::unary_function<CharT, CharT> struct to_lowerF : public std::unary_function<CharT, CharT>
@ -66,10 +61,6 @@ namespace boost {
const std::locale& m_Loc; const std::locale& m_Loc;
}; };
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
// algorithm implementation ------------------------------------------------------------------------- // algorithm implementation -------------------------------------------------------------------------
// Transform a range // Transform a range
@ -80,8 +71,8 @@ namespace boost {
FunctorT Functor) FunctorT Functor)
{ {
return std::transform( return std::transform(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
Output, Output,
Functor); Functor);
} }
@ -93,9 +84,9 @@ namespace boost {
FunctorT Functor) FunctorT Functor)
{ {
std::transform( std::transform(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
::boost::begin(Input), begin(Input),
Functor); Functor);
} }
@ -106,10 +97,10 @@ namespace boost {
{ {
return SequenceT( return SequenceT(
make_transform_iterator( make_transform_iterator(
::boost::begin(Input), begin(Input),
Functor), Functor),
make_transform_iterator( make_transform_iterator(
::boost::end(Input), end(Input),
Functor)); Functor));
} }

View File

@ -15,6 +15,7 @@
#include <algorithm> #include <algorithm>
#include <functional> #include <functional>
#include <locale> #include <locale>
#include <set>
#include <boost/range/begin.hpp> #include <boost/range/begin.hpp>
#include <boost/range/end.hpp> #include <boost/range/end.hpp>
@ -28,10 +29,6 @@ namespace boost {
// classification functors -----------------------------------------------// // classification functors -----------------------------------------------//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(push)
#pragma warning(disable:4512) //assignment operator could not be generated
#endif
// is_classified functor // is_classified functor
struct is_classifiedF : struct is_classifiedF :
public predicate_facade<is_classifiedF> public predicate_facade<is_classifiedF>
@ -63,10 +60,6 @@ namespace boost {
const std::locale m_Locale; const std::locale m_Locale;
}; };
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
// is_any_of functor // is_any_of functor
/* /*
returns true if the value is from the specified set returns true if the value is from the specified set
@ -75,132 +68,25 @@ namespace boost {
struct is_any_ofF : struct is_any_ofF :
public predicate_facade<is_any_ofF<CharT> > public predicate_facade<is_any_ofF<CharT> >
{ {
private:
// set cannot operate on const value-type
typedef typename remove_const<CharT>::type set_value_type;
// Size of the static storage (size of pointer*2)
static const ::std::size_t FIXED_STORAGE_SIZE = sizeof(set_value_type*)*2;
public:
// Boost.Lambda support // Boost.Lambda support
template <class Args> struct sig { typedef bool type; }; template <class Args> struct sig { typedef bool type; };
// Constructor // Constructor
template<typename RangeT> template<typename RangeT>
is_any_ofF( const RangeT& Range ) : m_Size(0) is_any_ofF( const RangeT& Range ) :
{ m_Set( begin(Range), end(Range) ) {}
// Prepare storage
m_Storage.m_dynSet=0;
std::size_t Size=::boost::distance(Range);
m_Size=Size;
set_value_type* Storage=0;
if(m_Size<=FIXED_STORAGE_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(m_Size<=FIXED_STORAGE_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(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0)
{
delete m_Storage.m_dynSet;
}
}
// Assignment
is_any_ofF& operator=(const is_any_ofF& Other)
{
// Prepare storage
m_Storage.m_dynSet=0;
m_Size=Other.m_Size;
const set_value_type* SrcStorage=0;
set_value_type* DestStorage=0;
if(m_Size<=FIXED_STORAGE_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);
return *this;
}
// Operation // Operation
template<typename Char2T> template<typename Char2T>
bool operator()( Char2T Ch ) const bool operator()( Char2T Ch ) const
{ {
const set_value_type* Storage= return m_Set.find(Ch)!=m_Set.end();
(m_Size<=FIXED_STORAGE_SIZE)
? &m_Storage.m_fixSet[0]
: m_Storage.m_dynSet;
return ::std::binary_search(Storage, Storage+m_Size, Ch);
} }
private: private:
// storage // set cannot operate on const value-type
// The actual used storage is selected on the type typedef typename remove_const<CharT>::type set_value_type;
union std::set<set_value_type> m_Set;
{
set_value_type* m_dynSet;
set_value_type m_fixSet[FIXED_STORAGE_SIZE];
}
m_Storage;
// storage size
::std::size_t m_Size;
}; };
// is_from_range functor // is_from_range functor

View File

@ -68,17 +68,17 @@ namespace boost {
if ( !M ) if ( !M )
{ {
// Match not found - return original sequence // Match not found - return original sequence
std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); std::copy( begin(Input), end(Input), Output );
return Output; return Output;
} }
// Copy the beginning of the sequence // Copy the beginning of the sequence
std::copy( ::boost::begin(Input), ::boost::begin(M), Output ); std::copy( begin(Input), begin(M), Output );
// Format find result // Format find result
// Copy formated result // Copy formated result
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); std::copy( begin(M.format_result()), end(M.format_result()), Output );
// Copy the rest of the sequence // Copy the rest of the sequence
std::copy( M.end(), ::boost::end(Input), Output ); std::copy( M.end(), end(Input), Output );
return Output; return Output;
} }
@ -129,11 +129,11 @@ namespace boost {
InputT Output; InputT Output;
// Copy the beginning of the sequence // Copy the beginning of the sequence
insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() ); insert( Output, end(Output), begin(Input), M.begin() );
// Copy formated result // Copy formated result
insert( Output, ::boost::end(Output), M.format_result() ); insert( Output, end(Output), M.format_result() );
// Copy the rest of the sequence // Copy the rest of the sequence
insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) ); insert( Output, end(Output), M.end(), end(Input) );
return Output; return Output;
} }

View File

@ -73,7 +73,7 @@ namespace boost {
store_type M( FindResult, FormatResult, Formatter ); store_type M( FindResult, FormatResult, Formatter );
// Initialize last match // Initialize last match
input_iterator_type LastMatch=::boost::begin(Input); input_iterator_type LastMatch=begin(Input);
// Iterate through all matches // Iterate through all matches
while( M ) while( M )
@ -81,15 +81,15 @@ namespace boost {
// Copy the beginning of the sequence // Copy the beginning of the sequence
std::copy( LastMatch, M.begin(), Output ); std::copy( LastMatch, M.begin(), Output );
// Copy formated result // Copy formated result
std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); std::copy( begin(M.format_result()), end(M.format_result()), Output );
// Proceed to the next match // Proceed to the next match
LastMatch=M.end(); LastMatch=M.end();
M=Finder( LastMatch, ::boost::end(Input) ); M=Finder( LastMatch, end(Input) );
} }
// Copy the rest of the sequence // Copy the rest of the sequence
std::copy( LastMatch, ::boost::end(Input), Output ); std::copy( LastMatch, end(Input), Output );
return Output; return Output;
} }
@ -140,7 +140,7 @@ namespace boost {
store_type M( FindResult, FormatResult, Formatter ); store_type M( FindResult, FormatResult, Formatter );
// Initialize last match // Initialize last match
input_iterator_type LastMatch=::boost::begin(Input); input_iterator_type LastMatch=begin(Input);
// Output temporary // Output temporary
InputT Output; InputT Output;
@ -149,17 +149,17 @@ namespace boost {
while( M ) while( M )
{ {
// Copy the beginning of the sequence // Copy the beginning of the sequence
insert( Output, ::boost::end(Output), LastMatch, M.begin() ); insert( Output, end(Output), LastMatch, M.begin() );
// Copy formated result // Copy formated result
insert( Output, ::boost::end(Output), M.format_result() ); insert( Output, end(Output), M.format_result() );
// Proceed to the next match // Proceed to the next match
LastMatch=M.end(); LastMatch=M.end();
M=Finder( LastMatch, ::boost::end(Input) ); M=Finder( LastMatch, end(Input) );
} }
// Copy the rest of the sequence // Copy the rest of the sequence
insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) ); insert( Output, end(Output), LastMatch, end(Input) );
return Output; return Output;
} }
@ -213,8 +213,8 @@ namespace boost {
BOOST_STRING_TYPENAME range_value<InputT>::type> Storage; BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
// Initialize replacement iterators // Initialize replacement iterators
input_iterator_type InsertIt=::boost::begin(Input); input_iterator_type InsertIt=begin(Input);
input_iterator_type SearchIt=::boost::begin(Input); input_iterator_type SearchIt=begin(Input);
while( M ) while( M )
{ {
@ -233,7 +233,7 @@ namespace boost {
copy_to_storage( Storage, M.format_result() ); copy_to_storage( Storage, M.format_result() );
// Find range for a next match // Find range for a next match
M=Finder( SearchIt, ::boost::end(Input) ); M=Finder( SearchIt, end(Input) );
} }
// process the last segment // process the last segment
@ -242,17 +242,17 @@ namespace boost {
Input, Input,
InsertIt, InsertIt,
SearchIt, SearchIt,
::boost::end(Input) ); end(Input) );
if ( Storage.empty() ) if ( Storage.empty() )
{ {
// Truncate input // Truncate input
erase( Input, InsertIt, ::boost::end(Input) ); erase( Input, InsertIt, end(Input) );
} }
else else
{ {
// Copy remaining data to the end of input // Copy remaining data to the end of input
insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() ); insert( Input, end(Input), Storage.begin(), Storage.end() );
} }
} }

View File

@ -20,10 +20,6 @@ namespace boost {
// temporary format and find result storage --------------------------------// // 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< template<
typename ForwardIteratorT, typename ForwardIteratorT,
typename FormatterT, typename FormatterT,
@ -68,9 +64,6 @@ namespace boost {
const formatter_type& m_Formatter; const formatter_type& m_Formatter;
}; };
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
} // namespace detail } // namespace detail
} // namespace algorithm } // namespace algorithm
} // namespace boost } // namespace boost

View File

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

View File

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

View File

@ -46,7 +46,7 @@ namespace boost {
StorageT& Storage, StorageT& Storage,
const WhatT& What ) const WhatT& What )
{ {
Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) ); Storage.insert( Storage.end(), begin(What), end(What) );
} }

View File

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

View File

@ -55,7 +55,7 @@ namespace boost {
{ {
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(as_literal(Input));
return Finder(::boost::begin(lit_input),::boost::end(lit_input)); return Finder(begin(lit_input),end(lit_input));
} }
// find_first -----------------------------------------------// // find_first -----------------------------------------------//

View File

@ -76,7 +76,7 @@ namespace boost {
Output, Output,
lit_input, lit_input,
Formatter, Formatter,
Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) ); Finder( begin(lit_input), end(lit_input) ) );
} }
//! Generic replace algorithm //! Generic replace algorithm
@ -104,7 +104,7 @@ namespace boost {
return detail::find_format_copy_impl( return detail::find_format_copy_impl(
Input, Input,
Formatter, Formatter,
Finder(::boost::begin(Input), ::boost::end(Input))); Finder(begin(Input), end(Input)));
} }
//! Generic replace algorithm //! Generic replace algorithm
@ -137,7 +137,7 @@ namespace boost {
detail::find_format_impl( detail::find_format_impl(
Input, Input,
Formatter, Formatter,
Finder(::boost::begin(Input), ::boost::end(Input))); Finder(begin(Input), end(Input)));
} }
@ -187,7 +187,7 @@ namespace boost {
lit_input, lit_input,
Finder, Finder,
Formatter, Formatter,
Finder(::boost::begin(lit_input), ::boost::end(lit_input))); Finder(begin(lit_input), end(lit_input)));
} }
//! Generic replace all algorithm //! Generic replace all algorithm
@ -216,7 +216,7 @@ namespace boost {
Input, Input,
Finder, Finder,
Formatter, Formatter,
Finder( ::boost::begin(Input), ::boost::end(Input) ) ); Finder( begin(Input), end(Input) ) );
} }
//! Generic replace all algorithm //! Generic replace all algorithm
@ -251,7 +251,7 @@ namespace boost {
Input, Input,
Finder, Finder,
Formatter, Formatter,
Finder(::boost::begin(Input), ::boost::end(Input))); Finder(begin(Input), end(Input)));
} }

View File

@ -24,7 +24,7 @@
#include <boost/algorithm/string/detail/find_iterator.hpp> #include <boost/algorithm/string/detail/find_iterator.hpp>
/*! \file /*! \file
Defines find iterator classes. Find iterator repeatedly applies a Finder Defines find iterator classes. Find iterator repeatly applies a Finder
to the specified input string to search for matches. Dereferencing 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 the iterator yields the current match or a range between the last and the current
match depending on the iterator used. match depending on the iterator used.
@ -58,6 +58,12 @@ namespace boost {
// facade support // facade support
friend class ::boost::iterator_core_access; friend class ::boost::iterator_core_access;
// base type
typedef iterator_facade<
find_iterator<IteratorT>,
const iterator_range<IteratorT>,
forward_traversal_tag> facade_type;
private: private:
// typedefs // typedefs
@ -114,8 +120,8 @@ namespace boost {
detail::find_iterator_base<IteratorT>(Finder,0) detail::find_iterator_base<IteratorT>(Finder,0)
{ {
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col)); iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col)); m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
m_End=::boost::end(lit_col); m_End=end(lit_col);
increment(); increment();
} }
@ -214,6 +220,12 @@ namespace boost {
// facade support // facade support
friend class ::boost::iterator_core_access; friend class ::boost::iterator_core_access;
// base type
typedef iterator_facade<
find_iterator<IteratorT>,
iterator_range<IteratorT>,
forward_traversal_tag> facade_type;
private: private:
// typedefs // typedefs
@ -274,9 +286,9 @@ namespace boost {
m_bEof(false) m_bEof(false)
{ {
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col)); iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col)); m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
m_Next=::boost::begin(lit_col); m_Next=begin(lit_col);
m_End=::boost::end(lit_col); m_End=end(lit_col);
increment(); increment();
} }

View File

@ -88,14 +88,14 @@ namespace boost {
range_value<SequenceSequenceT>::type, range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type; input_iterator_type> copy_range_type;
input_iterator_type InputEnd=::boost::end(lit_input); input_iterator_type InputEnd=end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type> typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type; transform_iter_type;
transform_iter_type itBegin= transform_iter_type itBegin=
make_transform_iterator( make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ), find_iterator_type( begin(lit_input), InputEnd, Finder ),
copy_range_type()); copy_range_type());
transform_iter_type itEnd= transform_iter_type itEnd=
@ -157,14 +157,14 @@ namespace boost {
range_value<SequenceSequenceT>::type, range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type; input_iterator_type> copy_range_type;
input_iterator_type InputEnd=::boost::end(lit_input); input_iterator_type InputEnd=end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type> typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type; transform_iter_type;
transform_iter_type itBegin= transform_iter_type itBegin=
make_transform_iterator( make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ), find_iterator_type( begin(lit_input), InputEnd, Finder ),
copy_range_type() ); copy_range_type() );
transform_iter_type itEnd= transform_iter_type itEnd=

View File

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

View File

@ -67,11 +67,11 @@ namespace boost {
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T; range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=::boost::end(lit_input); Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test); Iterator2T TestEnd=end(lit_test);
Iterator1T it=::boost::begin(lit_input); Iterator1T it=begin(lit_input);
Iterator2T pit=::boost::begin(lit_test); Iterator2T pit=begin(lit_test);
for(; for(;
it!=InputEnd && pit!=TestEnd; it!=InputEnd && pit!=TestEnd;
++it,++pit) ++it,++pit)
@ -151,10 +151,10 @@ namespace boost {
return detail:: return detail::
ends_with_iter_select( ends_with_iter_select(
::boost::begin(lit_input), begin(lit_input),
::boost::end(lit_input), end(lit_input),
::boost::begin(lit_test), begin(lit_test),
::boost::end(lit_test), end(lit_test),
Comp, Comp,
category()); category());
} }
@ -225,7 +225,7 @@ namespace boost {
} }
// Use the temporary variable to make VACPP happy // Use the temporary variable to make VACPP happy
bool bResult=(first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input))); bool bResult=(first_finder(lit_test,Comp)(begin(lit_input), end(lit_input)));
return bResult; return bResult;
} }
@ -294,11 +294,11 @@ namespace boost {
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T; range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=::boost::end(lit_input); Iterator1T InputEnd=end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test); Iterator2T TestEnd=end(lit_test);
Iterator1T it=::boost::begin(lit_input); Iterator1T it=begin(lit_input);
Iterator2T pit=::boost::begin(lit_test); Iterator2T pit=begin(lit_test);
for(; for(;
it!=InputEnd && pit!=TestEnd; it!=InputEnd && pit!=TestEnd;
++it,++pit) ++it,++pit)
@ -376,10 +376,10 @@ namespace boost {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2)); iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
return std::lexicographical_compare( return std::lexicographical_compare(
::boost::begin(lit_arg1), begin(lit_arg1),
::boost::end(lit_arg1), end(lit_arg1),
::boost::begin(lit_arg2), begin(lit_arg2),
::boost::end(lit_arg2), end(lit_arg2),
Pred); Pred);
} }
@ -444,8 +444,8 @@ namespace boost {
typedef BOOST_STRING_TYPENAME typedef BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type Iterator1T; range_const_iterator<RangeT>::type Iterator1T;
Iterator1T InputEnd=::boost::end(lit_input); Iterator1T InputEnd=end(lit_input);
for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It) for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
{ {
if (!Pred(*It)) if (!Pred(*It))
return false; return false;

View File

@ -63,7 +63,7 @@ namespace boost {
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(as_literal(Input));
return regex_finder(Rx,Flags)( return regex_finder(Rx,Flags)(
::boost::begin(lit_input), ::boost::end(lit_input) ); begin(lit_input), end(lit_input) );
} }
// replace_regex --------------------------------------------------------------------// // replace_regex --------------------------------------------------------------------//
@ -515,8 +515,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT; typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input // Parse input
InputIteratorT itBegin=::boost::begin(Input); InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=::boost::end(Input); InputIteratorT itEnd=end(Input);
// Construct container to hold the result // Construct container to hold the result
ResultT Result; ResultT Result;
@ -525,23 +525,23 @@ namespace boost {
// Roll to the first element that will be added // Roll to the first element that will be added
while( while(
itBegin!=itEnd && itBegin!=itEnd &&
!regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin; !regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element // Add this element
if(itBegin!=itEnd) if(itBegin!=itEnd)
{ {
detail::insert(Result, ::boost::end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
++itBegin; ++itBegin;
} }
for(;itBegin!=itEnd; ++itBegin) for(;itBegin!=itEnd; ++itBegin)
{ {
if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
{ {
// Add separator // Add separator
detail::insert(Result, ::boost::end(Result), as_literal(Separator)); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, ::boost::end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }
} }
@ -583,8 +583,8 @@ namespace boost {
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT; typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input // Parse input
InputIteratorT itBegin=::boost::begin(Input); InputIteratorT itBegin=begin(Input);
InputIteratorT itEnd=::boost::end(Input); InputIteratorT itEnd=end(Input);
// Construct container to hold the result // Construct container to hold the result
ResultT Result; ResultT Result;
@ -593,23 +593,23 @@ namespace boost {
// Roll to the first element that will be added // Roll to the first element that will be added
while( while(
itBegin!=itEnd && itBegin!=itEnd &&
!regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin; !regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element // Add this element
if(itBegin!=itEnd) if(itBegin!=itEnd)
{ {
detail::insert(Result, ::boost::end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
++itBegin; ++itBegin;
} }
for(;itBegin!=itEnd; ++itBegin) for(;itBegin!=itEnd; ++itBegin)
{ {
if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
{ {
// Add separator // Add separator
detail::insert(Result, ::boost::end(Result), as_literal(Separator)); detail::insert(Result, end(Result), as_literal(Separator));
// Add element // Add element
detail::insert(Result, ::boost::end(Result), *itBegin); detail::insert(Result, end(Result), *itBegin);
} }
} }

View File

@ -67,10 +67,10 @@ namespace boost {
std::copy( std::copy(
::boost::algorithm::detail::trim_begin( ::boost::algorithm::detail::trim_begin(
::boost::begin(lit_range), begin(lit_range),
::boost::end(lit_range), end(lit_range),
IsSpace ), IsSpace ),
::boost::end(lit_range), end(lit_range),
Output); Output);
return Output; return Output;
@ -85,10 +85,10 @@ namespace boost {
{ {
return SequenceT( return SequenceT(
::boost::algorithm::detail::trim_begin( ::boost::algorithm::detail::trim_begin(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
IsSpace ), IsSpace ),
::boost::end(Input)); end(Input));
} }
//! Left trim - parametric //! Left trim - parametric
@ -124,10 +124,10 @@ namespace boost {
inline void trim_left_if(SequenceT& Input, PredicateT IsSpace) inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
{ {
Input.erase( Input.erase(
::boost::begin(Input), begin(Input),
::boost::algorithm::detail::trim_begin( ::boost::algorithm::detail::trim_begin(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
IsSpace)); IsSpace));
} }
@ -174,10 +174,10 @@ namespace boost {
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input)); iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
std::copy( std::copy(
::boost::begin(lit_range), begin(lit_range),
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
::boost::begin(lit_range), begin(lit_range),
::boost::end(lit_range), end(lit_range),
IsSpace ), IsSpace ),
Output ); Output );
@ -192,10 +192,10 @@ namespace boost {
inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace) inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
{ {
return SequenceT( return SequenceT(
::boost::begin(Input), begin(Input),
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
IsSpace) IsSpace)
); );
} }
@ -235,10 +235,10 @@ namespace boost {
{ {
Input.erase( Input.erase(
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
IsSpace ), IsSpace ),
::boost::end(Input) end(Input)
); );
} }
@ -288,13 +288,13 @@ namespace boost {
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type TrimEnd= range_const_iterator<RangeT>::type TrimEnd=
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
::boost::begin(lit_range), begin(lit_range),
::boost::end(lit_range), end(lit_range),
IsSpace); IsSpace);
std::copy( std::copy(
detail::trim_begin( detail::trim_begin(
::boost::begin(lit_range), TrimEnd, IsSpace), begin(lit_range), TrimEnd, IsSpace),
TrimEnd, TrimEnd,
Output Output
); );
@ -312,13 +312,13 @@ namespace boost {
BOOST_STRING_TYPENAME BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type TrimEnd= range_const_iterator<SequenceT>::type TrimEnd=
::boost::algorithm::detail::trim_end( ::boost::algorithm::detail::trim_end(
::boost::begin(Input), begin(Input),
::boost::end(Input), end(Input),
IsSpace); IsSpace);
return SequenceT( return SequenceT(
detail::trim_begin( detail::trim_begin(
::boost::begin(Input), begin(Input),
TrimEnd, TrimEnd,
IsSpace), IsSpace),
TrimEnd TrimEnd

View File

@ -56,7 +56,7 @@ be enough. The present library solves both problems.</p>
<tt>minmax</tt> <tt>minmax</tt>
as straightforward extensions of the C++ as straightforward extensions of the C++
standard. As it returns a pair of <tt>const&amp;</tt>, we must use the <a 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 pairs. (Please note: the intent is not to fix the known defaults of
<tt>std::min</tt> <tt>std::min</tt>
and <tt>std::max</tt>, but to add one more algorithms that combines both; see the and <tt>std::max</tt>, but to add one more algorithms that combines both; see the

View File

@ -102,7 +102,7 @@
struct simple_finder struct simple_finder
{ {
template&lt;typename ForwardIteratorT&gt; template&lt;typename ForwardIteratorT&gt;
boost::iterator_range&lt;ForwardIteratorT&gt; operator()( boost::iterator_range&lt;ForwardIterator&gt; operator()(
ForwardIteratorT Begin, ForwardIteratorT Begin,
ForwardIteratorT End ) ForwardIteratorT End )
{ {

View File

@ -114,12 +114,9 @@ public:
result_type operator()( const ReplaceT& Replace ) const result_type operator()( const ReplaceT& Replace ) const
{ {
SeqT r; SeqT r;
if(!Replace.empty()) r.push_back( repeat_mark<value_type>() );
{ r.push_back( *(Replace.begin()) );
r.push_back( repeat_mark<value_type>() ); r.push_back( value_type( Replace.size() ) );
r.push_back( *(Replace.begin()) );
r.push_back( value_type( Replace.size() ) );
}
return r; return r;
} }
@ -186,18 +183,14 @@ public:
template< typename ReplaceT > template< typename ReplaceT >
result_type operator()( const ReplaceT& Replace ) const 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; 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; return r;
} }

View File

@ -121,14 +121,6 @@ void classification_test()
TEST_CLASS( !is_classified(std::ctype_base::space), "...", "..\n\r\t " ); 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" ); 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 #undef TEST_CLASS

View File

@ -120,7 +120,6 @@ void replace_all_test()
{ {
// replace all // replace all
TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("YYY"), string("1YYY3YYY2") ); 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( 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("Z"), string("1Z3Z2") );
TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3XXXX2") ); TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3XXXX2") );