- added more character-comparison predicates (is_less, is_not_greater)

- added range version of lexicographical_compare
- Fixed some copyright years


[SVN r32478]
This commit is contained in:
Pavol Droba
2006-01-31 14:57:15 +00:00
parent f50dd248cc
commit ff82e5135c
6 changed files with 202 additions and 8 deletions

View File

@ -307,7 +307,7 @@ namespace boost {
return equals(Input, Test, is_equal());
}
//! 'Equals' predicate ( casa insensitive )
//! 'Equals' predicate ( case insensitive )
/*!
This predicate holds when the test container is equal to the
input container i.e. all elements in both containers are same.
@ -331,6 +331,87 @@ namespace boost {
return equals(Input, Test, is_iequal(Loc));
}
// lexicographical_compare predicate -----------------------------//
//! Lexicographical compare predicate
/*!
This predicate is an overload of std::lexicographical_compare
for range arguments
It check whether the first argument is lexicographically less
then the second one.
If the optional predicate is specified, it is used for character-wise
comparison
\param Arg1 First argument
\param Arg2 Second argument
\param Pred Comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool lexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2,
PredicateT Pred)
{
return std::lexicographical_compare(
begin(Arg1),
end(Arg1),
begin(Arg2),
end(Arg2),
Pred);
}
//! Lexicographical compare predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool lexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2)
{
return std::lexicographical_compare(
begin(Arg1),
end(Arg1),
begin(Arg2),
end(Arg2),
is_less());
}
//! Lexicographical compare predicate (case-insensitive)
/*!
This predicate is an overload of std::lexicographical_compare
for range arguments.
It check whether the first argument is lexicographically less
then the second one.
Elements are compared case insensitively
\param Arg1 First argument
\param Arg2 Second argument
\param Pred Comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool ilexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2)
{
return std::lexicographical_compare(
begin(Arg1),
end(Arg1),
begin(Arg2),
end(Arg2),
is_iless());
}
// all predicate -----------------------------------------------//
//! 'All' predicate
@ -374,6 +455,8 @@ namespace boost {
using algorithm::equals;
using algorithm::iequals;
using algorithm::all;
using algorithm::lexicographical_compare;
using algorithm::ilexicographical_compare;
} // namespace boost