mirror of
https://github.com/boostorg/algorithm.git
synced 2025-06-26 12:31:44 +02:00
Compare commits
10 Commits
svn-branch
...
boost-1.34
Author | SHA1 | Date | |
---|---|---|---|
37caf8dadd | |||
37581bac55 | |||
a71a4ed5b1 | |||
c509c3fbad | |||
d8683f2498 | |||
7c0101aa51 | |||
6f3e85528f | |||
8af639b7cf | |||
d9bc7e800b | |||
b4ed9beb90 |
@ -1,7 +1,7 @@
|
|||||||
// (C) Copyright Herve Bronnimann 2004.
|
// (C) Copyright Herve Bronnimann 2004.
|
||||||
//
|
// Use, modification and distribution are subject to the
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Boost Software License, Version 1.0. (See accompanying file
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Revision history:
|
Revision history:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// (C) Copyright Herve Bronnimann 2004.
|
// (C) Copyright Herve Bronnimann 2004.
|
||||||
//
|
// Use, modification and distribution are subject to the
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Boost Software License, Version 1.0. (See accompanying file
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Revision history:
|
Revision history:
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library string_algo.hpp header file ---------------------------//
|
// Boost string_algo library string_algo.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2004.
|
// Copyright Pavol Droba 2002-2004. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_ALGO_HPP
|
#ifndef BOOST_STRING_ALGO_HPP
|
||||||
#define BOOST_STRING_ALGO_HPP
|
#define BOOST_STRING_ALGO_HPP
|
||||||
@ -21,6 +20,7 @@
|
|||||||
#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>
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library case_conv.hpp header file ---------------------------//
|
// Boost string_algo library case_conv.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CASE_CONV_HPP
|
#ifndef BOOST_STRING_CASE_CONV_HPP
|
||||||
#define BOOST_STRING_CASE_CONV_HPP
|
#define BOOST_STRING_CASE_CONV_HPP
|
||||||
@ -16,7 +15,6 @@
|
|||||||
#include <locale>
|
#include <locale>
|
||||||
#include <boost/iterator/transform_iterator.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
|
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
@ -57,10 +55,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy(
|
return std::transform(
|
||||||
Output,
|
begin(Input),
|
||||||
as_literal(Input),
|
end(Input),
|
||||||
::boost::algorithm::detail::to_lowerF<
|
Output,
|
||||||
|
::boost::algorithm::detail::to_lowerF<
|
||||||
typename range_value<RangeT>::type >(Loc));
|
typename range_value<RangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,10 +72,15 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
|
return SequenceT(
|
||||||
Input,
|
make_transform_iterator(
|
||||||
::boost::algorithm::detail::to_lowerF<
|
begin(Input),
|
||||||
typename range_value<SequenceT>::type >(Loc));
|
::boost::algorithm::detail::to_lowerF<
|
||||||
|
typename range_value<SequenceT>::type >(Loc)),
|
||||||
|
make_transform_iterator(
|
||||||
|
end(Input),
|
||||||
|
::boost::algorithm::detail::to_lowerF<
|
||||||
|
typename range_value<SequenceT>::type >(Loc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Convert to lower case
|
//! Convert to lower case
|
||||||
@ -92,8 +96,10 @@ namespace boost {
|
|||||||
WritableRangeT& Input,
|
WritableRangeT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
::boost::algorithm::detail::transform_range(
|
std::transform(
|
||||||
as_literal(Input),
|
begin(Input),
|
||||||
|
end(Input),
|
||||||
|
begin(Input),
|
||||||
::boost::algorithm::detail::to_lowerF<
|
::boost::algorithm::detail::to_lowerF<
|
||||||
typename range_value<WritableRangeT>::type >(Loc));
|
typename range_value<WritableRangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
@ -122,10 +128,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy(
|
return std::transform(
|
||||||
Output,
|
begin(Input),
|
||||||
as_literal(Input),
|
end(Input),
|
||||||
::boost::algorithm::detail::to_upperF<
|
Output,
|
||||||
|
::boost::algorithm::detail::to_upperF<
|
||||||
typename range_value<RangeT>::type >(Loc));
|
typename range_value<RangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,10 +145,16 @@ namespace boost {
|
|||||||
const SequenceT& Input,
|
const SequenceT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
|
return SequenceT(
|
||||||
Input,
|
make_transform_iterator(
|
||||||
::boost::algorithm::detail::to_upperF<
|
begin(Input),
|
||||||
typename range_value<SequenceT>::type >(Loc));
|
::boost::algorithm::detail::to_upperF<
|
||||||
|
typename range_value<SequenceT>::type >(Loc)),
|
||||||
|
make_transform_iterator(
|
||||||
|
end(Input),
|
||||||
|
::boost::algorithm::detail::to_upperF<
|
||||||
|
typename range_value<SequenceT>::type >(Loc)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Convert to upper case
|
//! Convert to upper case
|
||||||
@ -157,8 +170,10 @@ namespace boost {
|
|||||||
WritableRangeT& Input,
|
WritableRangeT& Input,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
::boost::algorithm::detail::transform_range(
|
std::transform(
|
||||||
as_literal(Input),
|
begin(Input),
|
||||||
|
end(Input),
|
||||||
|
begin(Input),
|
||||||
::boost::algorithm::detail::to_upperF<
|
::boost::algorithm::detail::to_upperF<
|
||||||
typename range_value<WritableRangeT>::type >(Loc));
|
typename range_value<WritableRangeT>::type >(Loc));
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library classification.hpp header file ---------------------------//
|
// Boost string_algo library classification.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CLASSIFICATION_HPP
|
#ifndef BOOST_STRING_CLASSIFICATION_HPP
|
||||||
#define BOOST_STRING_CLASSIFICATION_HPP
|
#define BOOST_STRING_CLASSIFICATION_HPP
|
||||||
@ -14,11 +13,9 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
#include <boost/algorithm/string/detail/classification.hpp>
|
#include <boost/algorithm/string/detail/classification.hpp>
|
||||||
#include <boost/algorithm/string/predicate_facade.hpp>
|
#include <boost/algorithm/string/predicate_facade.hpp>
|
||||||
|
|
||||||
|
|
||||||
/*! \file
|
/*! \file
|
||||||
Classification predicates are included in the library to give
|
Classification predicates are included in the library to give
|
||||||
some more convenience when using algorithms like \c trim() and \c all().
|
some more convenience when using algorithms like \c trim() and \c all().
|
||||||
@ -203,7 +200,7 @@ namespace boost {
|
|||||||
is_any_of( const RangeT& Set )
|
is_any_of( const RangeT& Set )
|
||||||
{
|
{
|
||||||
return detail::is_any_ofF<
|
return detail::is_any_ofF<
|
||||||
BOOST_STRING_TYPENAME range_value<RangeT>::type>(as_literal(Set));
|
BOOST_STRING_TYPENAME range_value<RangeT>::type>(Set);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! is_from_range predicate
|
//! is_from_range predicate
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library compare.hpp header file -------------------------//
|
// Boost string_algo library compare.hpp header file -------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_COMPARE_HPP
|
#ifndef BOOST_STRING_COMPARE_HPP
|
||||||
#define BOOST_STRING_COMPARE_HPP
|
#define BOOST_STRING_COMPARE_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library concept.hpp header file ---------------------------//
|
// Boost string_algo library concept.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CONCEPT_HPP
|
#ifndef BOOST_STRING_CONCEPT_HPP
|
||||||
#define BOOST_STRING_CONCEPT_HPP
|
#define BOOST_STRING_CONCEPT_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library config.hpp header file ---------------------------//
|
// Boost string_algo library config.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CONFIG_HPP
|
#ifndef BOOST_STRING_CONFIG_HPP
|
||||||
#define BOOST_STRING_CONFIG_HPP
|
#define BOOST_STRING_CONFIG_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library constants.hpp header file ---------------------------//
|
// Boost string_algo library constants.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CONSTANTS_HPP
|
#ifndef BOOST_STRING_CONSTANTS_HPP
|
||||||
#define BOOST_STRING_CONSTANTS_HPP
|
#define BOOST_STRING_CONSTANTS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library string_funct.hpp header file ---------------------------//
|
// Boost string_algo library string_funct.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
|
#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
|
||||||
#define BOOST_STRING_CASE_CONV_DETAIL_HPP
|
#define BOOST_STRING_CASE_CONV_DETAIL_HPP
|
||||||
@ -61,49 +60,6 @@ namespace boost {
|
|||||||
const std::locale& m_Loc;
|
const std::locale& m_Loc;
|
||||||
};
|
};
|
||||||
|
|
||||||
// algorithm implementation -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Transform a range
|
|
||||||
template<typename OutputIteratorT, typename RangeT, typename FunctorT>
|
|
||||||
OutputIteratorT transform_range_copy(
|
|
||||||
OutputIteratorT Output,
|
|
||||||
const RangeT& Input,
|
|
||||||
FunctorT Functor)
|
|
||||||
{
|
|
||||||
return std::transform(
|
|
||||||
begin(Input),
|
|
||||||
end(Input),
|
|
||||||
Output,
|
|
||||||
Functor);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transform a range (in-place)
|
|
||||||
template<typename RangeT, typename FunctorT>
|
|
||||||
void transform_range(
|
|
||||||
const RangeT& Input,
|
|
||||||
FunctorT Functor)
|
|
||||||
{
|
|
||||||
std::transform(
|
|
||||||
begin(Input),
|
|
||||||
end(Input),
|
|
||||||
begin(Input),
|
|
||||||
Functor);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename SequenceT, typename RangeT, typename FunctorT>
|
|
||||||
inline SequenceT transform_range_copy(
|
|
||||||
const RangeT& Input,
|
|
||||||
FunctorT Functor)
|
|
||||||
{
|
|
||||||
return SequenceT(
|
|
||||||
make_transform_iterator(
|
|
||||||
begin(Input),
|
|
||||||
Functor),
|
|
||||||
make_transform_iterator(
|
|
||||||
end(Input),
|
|
||||||
Functor));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library classification.hpp header file ---------------------------//
|
// Boost string_algo library classification.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP
|
#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP
|
||||||
#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
|
#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_format.hpp header file ---------------------------//
|
// Boost string_algo library find_format.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
|
#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
|
||||||
#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
|
#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_format_all.hpp header file ---------------------------//
|
// Boost string_algo library find_format_all.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
|
#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
|
||||||
#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
|
#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_format_store.hpp header file ---------------------------//
|
// Boost string_algo library find_format_store.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
|
#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
|
||||||
#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
|
#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_iterator.hpp header file ---------------------------//
|
// Boost string_algo library find_iterator.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
|
#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
|
||||||
#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
|
#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library finder.hpp header file ---------------------------//
|
// Boost string_algo library finder.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FINDER_DETAIL_HPP
|
#ifndef BOOST_STRING_FINDER_DETAIL_HPP
|
||||||
#define BOOST_STRING_FINDER_DETAIL_HPP
|
#define BOOST_STRING_FINDER_DETAIL_HPP
|
||||||
@ -19,7 +18,6 @@
|
|||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/empty.hpp>
|
#include <boost/range/empty.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace algorithm {
|
namespace algorithm {
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_regex.hpp header file ---------------------------//
|
// Boost string_algo library find_regex.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP
|
#ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP
|
||||||
#define BOOST_STRING_FINDER_REGEX_DETAIL_HPP
|
#define BOOST_STRING_FINDER_REGEX_DETAIL_HPP
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
// Boost string_algo library formatter.hpp header file ---------------------------//
|
// Boost string_algo library formatter.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library formatter_regex.hpp header file ---------------------------//
|
// Boost string_algo library formatter_regex.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
|
#ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
|
||||||
#define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
|
#define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library predicate.hpp header file ---------------------------//
|
// Boost string_algo library predicate.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP
|
#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP
|
||||||
#define BOOST_STRING_PREDICATE_DETAIL_HPP
|
#define BOOST_STRING_PREDICATE_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library replace_storage.hpp header file ---------------------------//
|
// Boost string_algo library replace_storage.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
|
#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
|
||||||
#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
|
#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library sequence.hpp header file ---------------------------//
|
// Boost string_algo library sequence.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
|
#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
|
||||||
#define BOOST_STRING_DETAIL_SEQUENCE_HPP
|
#define BOOST_STRING_DETAIL_SEQUENCE_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library trim.hpp header file ---------------------------//
|
// Boost string_algo library trim.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_TRIM_DETAIL_HPP
|
#ifndef BOOST_STRING_TRIM_DETAIL_HPP
|
||||||
#define BOOST_STRING_TRIM_DETAIL_HPP
|
#define BOOST_STRING_TRIM_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library util.hpp header file ---------------------------//
|
// Boost string_algo library util.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_UTIL_DETAIL_HPP
|
#ifndef BOOST_STRING_UTIL_DETAIL_HPP
|
||||||
#define BOOST_STRING_UTIL_DETAIL_HPP
|
#define BOOST_STRING_UTIL_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library erase.hpp header file ---------------------------//
|
// Boost string_algo library erase.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_ERASE_HPP
|
#ifndef BOOST_STRING_ERASE_HPP
|
||||||
#define BOOST_STRING_ERASE_HPP
|
#define BOOST_STRING_ERASE_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find.hpp header file ---------------------------//
|
// Boost string_algo library find.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_HPP
|
#ifndef BOOST_STRING_FIND_HPP
|
||||||
#define BOOST_STRING_FIND_HPP
|
#define BOOST_STRING_FIND_HPP
|
||||||
@ -19,7 +18,6 @@
|
|||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/range/const_iterator.hpp>
|
#include <boost/range/const_iterator.hpp>
|
||||||
#include <boost/range/result_iterator.hpp>
|
#include <boost/range/result_iterator.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/finder.hpp>
|
#include <boost/algorithm/string/finder.hpp>
|
||||||
#include <boost/algorithm/string/compare.hpp>
|
#include <boost/algorithm/string/compare.hpp>
|
||||||
@ -53,18 +51,16 @@ namespace boost {
|
|||||||
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
|
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>
|
||||||
find(
|
find(
|
||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
const FinderT& Finder)
|
FinderT Finder)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
return Finder(begin(Input),end(Input));
|
||||||
|
|
||||||
return Finder(begin(lit_input),end(lit_input));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_first -----------------------------------------------//
|
// find_first -----------------------------------------------//
|
||||||
|
|
||||||
//! Find first algorithm
|
//! Find first algorithm
|
||||||
/*!
|
/*!
|
||||||
Search for the first occurrence of the substring in the input.
|
Search for the first occurence of the substring in the input.
|
||||||
|
|
||||||
\param Input A string which will be searched.
|
\param Input A string which will be searched.
|
||||||
\param Search A substring to be searched for.
|
\param Search A substring to be searched for.
|
||||||
@ -83,7 +79,8 @@ namespace boost {
|
|||||||
Range1T& Input,
|
Range1T& Input,
|
||||||
const Range2T& Search)
|
const Range2T& Search)
|
||||||
{
|
{
|
||||||
return find(Input, first_finder(Search));
|
return first_finder(Search)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find first algorithm ( case insensitive )
|
//! Find first algorithm ( case insensitive )
|
||||||
@ -110,14 +107,15 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, first_finder(Search,is_iequal(Loc)));
|
return first_finder(Search,is_iequal(Loc))(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_last -----------------------------------------------//
|
// find_last -----------------------------------------------//
|
||||||
|
|
||||||
//! Find last algorithm
|
//! Find last algorithm
|
||||||
/*!
|
/*!
|
||||||
Search for the last occurrence of the substring in the input.
|
Search for the last occurence of the substring in the input.
|
||||||
|
|
||||||
\param Input A string which will be searched.
|
\param Input A string which will be searched.
|
||||||
\param Search A substring to be searched for.
|
\param Search A substring to be searched for.
|
||||||
@ -136,7 +134,8 @@ namespace boost {
|
|||||||
Range1T& Input,
|
Range1T& Input,
|
||||||
const Range2T& Search)
|
const Range2T& Search)
|
||||||
{
|
{
|
||||||
return find(Input, last_finder(Search));
|
return last_finder(Search)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find last algorithm ( case insensitive )
|
//! Find last algorithm ( case insensitive )
|
||||||
@ -163,14 +162,15 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, last_finder(Search, is_iequal(Loc)));
|
return last_finder(Search, is_iequal(Loc))(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_nth ----------------------------------------------------------------------//
|
// find_nth ----------------------------------------------------------------------//
|
||||||
|
|
||||||
//! Find n-th algorithm
|
//! Find n-th algorithm
|
||||||
/*!
|
/*!
|
||||||
Search for the n-th (zero-indexed) occurrence of the substring in the
|
Search for the n-th (zero-indexed) occurence of the substring in the
|
||||||
input.
|
input.
|
||||||
|
|
||||||
\param Input A string which will be searched.
|
\param Input A string which will be searched.
|
||||||
@ -191,7 +191,8 @@ namespace boost {
|
|||||||
const Range2T& Search,
|
const Range2T& Search,
|
||||||
int Nth)
|
int Nth)
|
||||||
{
|
{
|
||||||
return find(Input, nth_finder(Search,Nth));
|
return nth_finder(Search,Nth)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Find n-th algorithm ( case insensitive ).
|
//! Find n-th algorithm ( case insensitive ).
|
||||||
@ -222,7 +223,8 @@ namespace boost {
|
|||||||
int Nth,
|
int Nth,
|
||||||
const std::locale& Loc=std::locale())
|
const std::locale& Loc=std::locale())
|
||||||
{
|
{
|
||||||
return find(Input, nth_finder(Search,Nth,is_iequal(Loc)));
|
return nth_finder(Search,Nth,is_iequal(Loc))(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_head ----------------------------------------------------------------------//
|
// find_head ----------------------------------------------------------------------//
|
||||||
@ -252,7 +254,8 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
int N)
|
int N)
|
||||||
{
|
{
|
||||||
return find(Input, head_finder(N));
|
return head_finder(N)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_tail ----------------------------------------------------------------------//
|
// find_tail ----------------------------------------------------------------------//
|
||||||
@ -283,7 +286,8 @@ namespace boost {
|
|||||||
RangeT& Input,
|
RangeT& Input,
|
||||||
int N)
|
int N)
|
||||||
{
|
{
|
||||||
return find(Input, tail_finder(N));
|
return tail_finder(N)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_token --------------------------------------------------------------------//
|
// find_token --------------------------------------------------------------------//
|
||||||
@ -313,7 +317,8 @@ namespace boost {
|
|||||||
PredicateT Pred,
|
PredicateT Pred,
|
||||||
token_compress_mode_type eCompress=token_compress_off)
|
token_compress_mode_type eCompress=token_compress_off)
|
||||||
{
|
{
|
||||||
return find(Input, token_finder(Pred, eCompress));
|
return token_finder(Pred, eCompress)(
|
||||||
|
begin(Input),end(Input));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace algorithm
|
} // namespace algorithm
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library find_format.hpp header file ---------------------------//
|
// Boost string_algo library find_format.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_FORMAT_HPP
|
#ifndef BOOST_STRING_FIND_FORMAT_HPP
|
||||||
#define BOOST_STRING_FIND_FORMAT_HPP
|
#define BOOST_STRING_FIND_FORMAT_HPP
|
||||||
@ -69,13 +68,11 @@ namespace boost {
|
|||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
return detail::find_format_copy_impl(
|
return detail::find_format_copy_impl(
|
||||||
Output,
|
Output,
|
||||||
lit_input,
|
Input,
|
||||||
Formatter,
|
Formatter,
|
||||||
Finder( begin(lit_input), end(lit_input) ) );
|
Finder( begin(Input), end(Input) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Generic replace algorithm
|
//! Generic replace algorithm
|
||||||
@ -179,14 +176,12 @@ namespace boost {
|
|||||||
FormatterT,
|
FormatterT,
|
||||||
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
return detail::find_format_all_copy_impl(
|
return detail::find_format_all_copy_impl(
|
||||||
Output,
|
Output,
|
||||||
lit_input,
|
Input,
|
||||||
Finder,
|
Finder,
|
||||||
Formatter,
|
Formatter,
|
||||||
Finder(begin(lit_input), end(lit_input)));
|
Finder(begin(Input), end(Input)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Generic replace all algorithm
|
//! Generic replace all algorithm
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
// Boost string_algo library find_iterator.hpp header file ---------------------------//
|
// Boost string_algo library find_iterator.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2004.
|
// Copyright Pavol Droba 2002-2004. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FIND_ITERATOR_HPP
|
#ifndef BOOST_STRING_FIND_ITERATOR_HPP
|
||||||
#define BOOST_STRING_FIND_ITERATOR_HPP
|
#define BOOST_STRING_FIND_ITERATOR_HPP
|
||||||
@ -19,7 +17,6 @@
|
|||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/result_iterator.hpp>
|
#include <boost/range/result_iterator.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/detail/find_iterator.hpp>
|
#include <boost/algorithm/string/detail/find_iterator.hpp>
|
||||||
|
|
||||||
@ -117,12 +114,10 @@ namespace boost {
|
|||||||
find_iterator(
|
find_iterator(
|
||||||
RangeT& Col,
|
RangeT& Col,
|
||||||
FinderT Finder ) :
|
FinderT Finder ) :
|
||||||
detail::find_iterator_base<IteratorT>(Finder,0)
|
detail::find_iterator_base<IteratorT>(Finder,0),
|
||||||
|
m_Match(begin(Col),begin(Col)),
|
||||||
|
m_End(end(Col))
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
|
|
||||||
m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
|
|
||||||
m_End=end(lit_col);
|
|
||||||
|
|
||||||
increment();
|
increment();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +186,7 @@ namespace boost {
|
|||||||
FinderT Finder)
|
FinderT Finder)
|
||||||
{
|
{
|
||||||
return find_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
|
return find_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
|
||||||
Collection, Finder);
|
begin(Collection), end(Collection), Finder);
|
||||||
}
|
}
|
||||||
|
|
||||||
// split iterator -----------------------------------------------//
|
// split iterator -----------------------------------------------//
|
||||||
@ -283,13 +278,11 @@ namespace boost {
|
|||||||
RangeT& Col,
|
RangeT& Col,
|
||||||
FinderT Finder ) :
|
FinderT Finder ) :
|
||||||
detail::find_iterator_base<IteratorT>(Finder,0),
|
detail::find_iterator_base<IteratorT>(Finder,0),
|
||||||
|
m_Match(begin(Col),begin(Col)),
|
||||||
|
m_Next(begin(Col)),
|
||||||
|
m_End(end(Col)),
|
||||||
m_bEof(false)
|
m_bEof(false)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
|
|
||||||
m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
|
|
||||||
m_Next=begin(lit_col);
|
|
||||||
m_End=end(lit_col);
|
|
||||||
|
|
||||||
increment();
|
increment();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,7 +362,7 @@ namespace boost {
|
|||||||
FinderT Finder)
|
FinderT Finder)
|
||||||
{
|
{
|
||||||
return split_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
|
return split_iterator<BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type>(
|
||||||
Collection, Finder);
|
begin(Collection), end(Collection), Finder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library finder.hpp header file ---------------------------//
|
// Boost string_algo library finder.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FINDER_HPP
|
#ifndef BOOST_STRING_FINDER_HPP
|
||||||
#define BOOST_STRING_FINDER_HPP
|
#define BOOST_STRING_FINDER_HPP
|
||||||
@ -46,35 +45,35 @@ namespace boost {
|
|||||||
\param Comp An element comparison predicate
|
\param Comp An element comparison predicate
|
||||||
\return An instance of the \c first_finder object
|
\return An instance of the \c first_finder object
|
||||||
*/
|
*/
|
||||||
template<typename RangeT>
|
template<typename ContainerT>
|
||||||
inline detail::first_finderF<
|
inline detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
is_equal>
|
is_equal>
|
||||||
first_finder( const RangeT& Search )
|
first_finder( const ContainerT& Search )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::first_finderF<
|
detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
is_equal>( as_literal(Search), is_equal() ) ;
|
is_equal>( Search, is_equal() ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "First" finder
|
//! "First" finder
|
||||||
/*!
|
/*!
|
||||||
\overload
|
\overload
|
||||||
*/
|
*/
|
||||||
template<typename RangeT,typename PredicateT>
|
template<typename ContainerT,typename PredicateT>
|
||||||
inline detail::first_finderF<
|
inline detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>
|
PredicateT>
|
||||||
first_finder(
|
first_finder(
|
||||||
const RangeT& Search, PredicateT Comp )
|
const ContainerT& Search, PredicateT Comp )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::first_finderF<
|
detail::first_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>( as_literal(Search), Comp );
|
PredicateT>( Search, Comp );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Last" finder
|
//! "Last" finder
|
||||||
@ -87,33 +86,33 @@ namespace boost {
|
|||||||
\param Comp An element comparison predicate
|
\param Comp An element comparison predicate
|
||||||
\return An instance of the \c last_finder object
|
\return An instance of the \c last_finder object
|
||||||
*/
|
*/
|
||||||
template<typename RangeT>
|
template<typename ContainerT>
|
||||||
inline detail::last_finderF<
|
inline detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
is_equal>
|
is_equal>
|
||||||
last_finder( const RangeT& Search )
|
last_finder( const ContainerT& Search )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::last_finderF<
|
detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
is_equal>( as_literal(Search), is_equal() );
|
is_equal>( Search, is_equal() );
|
||||||
}
|
}
|
||||||
//! "Last" finder
|
//! "Last" finder
|
||||||
/*!
|
/*!
|
||||||
\overload
|
\overload
|
||||||
*/
|
*/
|
||||||
template<typename RangeT, typename PredicateT>
|
template<typename ContainerT, typename PredicateT>
|
||||||
inline detail::last_finderF<
|
inline detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>
|
PredicateT>
|
||||||
last_finder( const RangeT& Search, PredicateT Comp )
|
last_finder( const ContainerT& Search, PredicateT Comp )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::last_finderF<
|
detail::last_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>( as_literal(Search), Comp ) ;
|
PredicateT>( Search, Comp ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Nth" finder
|
//! "Nth" finder
|
||||||
@ -127,38 +126,38 @@ namespace boost {
|
|||||||
\param Comp An element comparison predicate
|
\param Comp An element comparison predicate
|
||||||
\return An instance of the \c nth_finder object
|
\return An instance of the \c nth_finder object
|
||||||
*/
|
*/
|
||||||
template<typename RangeT>
|
template<typename ContainerT>
|
||||||
inline detail::nth_finderF<
|
inline detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
is_equal>
|
is_equal>
|
||||||
nth_finder(
|
nth_finder(
|
||||||
const RangeT& Search,
|
const ContainerT& Search,
|
||||||
int Nth)
|
int Nth)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::nth_finderF<
|
detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
is_equal>( as_literal(Search), Nth, is_equal() ) ;
|
is_equal>( Search, Nth, is_equal() ) ;
|
||||||
}
|
}
|
||||||
//! "Nth" finder
|
//! "Nth" finder
|
||||||
/*!
|
/*!
|
||||||
\overload
|
\overload
|
||||||
*/
|
*/
|
||||||
template<typename RangeT, typename PredicateT>
|
template<typename ContainerT, typename PredicateT>
|
||||||
inline detail::nth_finderF<
|
inline detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
|
BOOST_STRING_TYPENAME range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>
|
PredicateT>
|
||||||
nth_finder(
|
nth_finder(
|
||||||
const RangeT& Search,
|
const ContainerT& Search,
|
||||||
int Nth,
|
int Nth,
|
||||||
PredicateT Comp )
|
PredicateT Comp )
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
detail::nth_finderF<
|
detail::nth_finderF<
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type,
|
range_const_iterator<ContainerT>::type,
|
||||||
PredicateT>( as_literal(Search), Nth, Comp );
|
PredicateT>( Search, Nth, Comp );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! "Head" finder
|
//! "Head" finder
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library formatter.hpp header file ---------------------------//
|
// Boost string_algo library formatter.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_FORMATTER_HPP
|
#ifndef BOOST_STRING_FORMATTER_HPP
|
||||||
#define BOOST_STRING_FORMATTER_HPP
|
#define BOOST_STRING_FORMATTER_HPP
|
||||||
@ -14,7 +13,6 @@
|
|||||||
#include <boost/detail/iterator.hpp>
|
#include <boost/detail/iterator.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
#include <boost/range/iterator_range.hpp>
|
#include <boost/range/iterator_range.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/detail/formatter.hpp>
|
#include <boost/algorithm/string/detail/formatter.hpp>
|
||||||
|
|
||||||
@ -43,14 +41,10 @@ namespace boost {
|
|||||||
\return An instance of the \c const_formatter object.
|
\return An instance of the \c const_formatter object.
|
||||||
*/
|
*/
|
||||||
template<typename RangeT>
|
template<typename RangeT>
|
||||||
inline detail::const_formatF<
|
inline detail::const_formatF<RangeT>
|
||||||
iterator_range<
|
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
|
|
||||||
const_formatter(const RangeT& Format)
|
const_formatter(const RangeT& Format)
|
||||||
{
|
{
|
||||||
return detail::const_formatF<
|
return detail::const_formatF<RangeT>(Format);
|
||||||
iterator_range<
|
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(as_literal(Format));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Identity formatter
|
//! Identity formatter
|
||||||
@ -61,14 +55,10 @@ namespace boost {
|
|||||||
\return An instance of the \c identity_formatter object.
|
\return An instance of the \c identity_formatter object.
|
||||||
*/
|
*/
|
||||||
template<typename RangeT>
|
template<typename RangeT>
|
||||||
inline detail::identity_formatF<
|
inline detail::identity_formatF<RangeT>
|
||||||
iterator_range<
|
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
|
|
||||||
identity_formatter()
|
identity_formatter()
|
||||||
{
|
{
|
||||||
return detail::identity_formatF<
|
return detail::identity_formatF<RangeT>();
|
||||||
iterator_range<
|
|
||||||
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Empty formatter
|
//! Empty formatter
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library iter_find.hpp header file ---------------------------//
|
// Boost string_algo library iter_find.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_ITER_FIND_HPP
|
#ifndef BOOST_STRING_ITER_FIND_HPP
|
||||||
#define BOOST_STRING_ITER_FIND_HPP
|
#define BOOST_STRING_ITER_FIND_HPP
|
||||||
@ -21,7 +20,6 @@
|
|||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/result_iterator.hpp>
|
#include <boost/range/result_iterator.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/concept.hpp>
|
#include <boost/algorithm/string/concept.hpp>
|
||||||
#include <boost/algorithm/string/find_iterator.hpp>
|
#include <boost/algorithm/string/find_iterator.hpp>
|
||||||
@ -78,8 +76,6 @@ namespace boost {
|
|||||||
FinderConcept<FinderT,
|
FinderConcept<FinderT,
|
||||||
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
|
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_result_iterator<RangeT>::type input_iterator_type;
|
range_result_iterator<RangeT>::type input_iterator_type;
|
||||||
typedef find_iterator<input_iterator_type> find_iterator_type;
|
typedef find_iterator<input_iterator_type> find_iterator_type;
|
||||||
@ -88,14 +84,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=end(lit_input);
|
input_iterator_type InputEnd=end(Input);
|
||||||
|
|
||||||
typedef transform_iterator<copy_range_type, find_iterator_type>
|
typedef transform_iterator<copy_range_type, find_iterator_type>
|
||||||
transform_iter_type;
|
transform_iter_type;
|
||||||
|
|
||||||
transform_iter_type itBegin=
|
transform_iter_type itBegin=
|
||||||
make_transform_iterator(
|
make_transform_iterator(
|
||||||
find_iterator_type( begin(lit_input), InputEnd, Finder ),
|
find_iterator_type( begin(Input), InputEnd, Finder ),
|
||||||
copy_range_type());
|
copy_range_type());
|
||||||
|
|
||||||
transform_iter_type itEnd=
|
transform_iter_type itEnd=
|
||||||
@ -147,8 +143,6 @@ namespace boost {
|
|||||||
FinderConcept<FinderT,
|
FinderConcept<FinderT,
|
||||||
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
|
BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> >();
|
||||||
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_result_iterator<RangeT>::type input_iterator_type;
|
range_result_iterator<RangeT>::type input_iterator_type;
|
||||||
typedef split_iterator<input_iterator_type> find_iterator_type;
|
typedef split_iterator<input_iterator_type> find_iterator_type;
|
||||||
@ -157,14 +151,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=end(lit_input);
|
input_iterator_type InputEnd=end(Input);
|
||||||
|
|
||||||
typedef transform_iterator<copy_range_type, find_iterator_type>
|
typedef transform_iterator<copy_range_type, find_iterator_type>
|
||||||
transform_iter_type;
|
transform_iter_type;
|
||||||
|
|
||||||
transform_iter_type itBegin=
|
transform_iter_type itBegin=
|
||||||
make_transform_iterator(
|
make_transform_iterator(
|
||||||
find_iterator_type( begin(lit_input), InputEnd, Finder ),
|
find_iterator_type( begin(Input), InputEnd, Finder ),
|
||||||
copy_range_type() );
|
copy_range_type() );
|
||||||
|
|
||||||
transform_iter_type itEnd=
|
transform_iter_type itEnd=
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library join.hpp header file ---------------------------//
|
// Boost string_algo library join.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_JOIN_HPP
|
#ifndef BOOST_STRING_JOIN_HPP
|
||||||
#define BOOST_STRING_JOIN_HPP
|
#define BOOST_STRING_JOIN_HPP
|
||||||
@ -45,7 +44,7 @@ namespace boost {
|
|||||||
inline typename range_value<SequenceSequenceT>::type
|
inline typename range_value<SequenceSequenceT>::type
|
||||||
join(
|
join(
|
||||||
const SequenceSequenceT& Input,
|
const SequenceSequenceT& Input,
|
||||||
const Range1T& Separator)
|
Range1T& Separator)
|
||||||
{
|
{
|
||||||
// Define working types
|
// Define working types
|
||||||
typedef typename range_value<SequenceSequenceT>::type ResultT;
|
typedef typename range_value<SequenceSequenceT>::type ResultT;
|
||||||
@ -68,7 +67,7 @@ namespace boost {
|
|||||||
for(;itBegin!=itEnd; ++itBegin)
|
for(;itBegin!=itEnd; ++itBegin)
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, end(Result), as_literal(Separator));
|
detail::insert(Result, end(Result), Separator);
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, end(Result), *itBegin);
|
detail::insert(Result, end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
@ -95,7 +94,7 @@ namespace boost {
|
|||||||
inline typename range_value<SequenceSequenceT>::type
|
inline typename range_value<SequenceSequenceT>::type
|
||||||
join_if(
|
join_if(
|
||||||
const SequenceSequenceT& Input,
|
const SequenceSequenceT& Input,
|
||||||
const Range1T& Separator,
|
Range1T& Separator,
|
||||||
PredicateT Pred)
|
PredicateT Pred)
|
||||||
{
|
{
|
||||||
// Define working types
|
// Define working types
|
||||||
@ -123,7 +122,7 @@ namespace boost {
|
|||||||
if(Pred(*itBegin))
|
if(Pred(*itBegin))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, end(Result), as_literal(Separator));
|
detail::insert(Result, end(Result), Separator);
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, end(Result), *itBegin);
|
detail::insert(Result, end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library predicate.hpp header file ---------------------------//
|
// Boost string_algo library predicate.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_PREDICATE_HPP
|
#ifndef BOOST_STRING_PREDICATE_HPP
|
||||||
#define BOOST_STRING_PREDICATE_HPP
|
#define BOOST_STRING_PREDICATE_HPP
|
||||||
@ -16,8 +15,6 @@
|
|||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/iterator.hpp>
|
#include <boost/range/iterator.hpp>
|
||||||
#include <boost/range/const_iterator.hpp>
|
#include <boost/range/const_iterator.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
#include <boost/range/iterator_range.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/compare.hpp>
|
#include <boost/algorithm/string/compare.hpp>
|
||||||
#include <boost/algorithm/string/find.hpp>
|
#include <boost/algorithm/string/find.hpp>
|
||||||
@ -59,19 +56,16 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
PredicateT Comp)
|
PredicateT Comp)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range2T>::type Iterator2T;
|
range_const_iterator<Range2T>::type Iterator2T;
|
||||||
|
|
||||||
Iterator1T InputEnd=end(lit_input);
|
Iterator1T InputEnd=end(Input);
|
||||||
Iterator2T TestEnd=end(lit_test);
|
Iterator2T TestEnd=end(Test);
|
||||||
|
|
||||||
Iterator1T it=begin(lit_input);
|
Iterator1T it=begin(Input);
|
||||||
Iterator2T pit=begin(lit_test);
|
Iterator2T pit=begin(Test);
|
||||||
for(;
|
for(;
|
||||||
it!=InputEnd && pit!=TestEnd;
|
it!=InputEnd && pit!=TestEnd;
|
||||||
++it,++pit)
|
++it,++pit)
|
||||||
@ -141,9 +135,6 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
PredicateT Comp)
|
PredicateT Comp)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
typedef BOOST_STRING_TYPENAME boost::detail::
|
typedef BOOST_STRING_TYPENAME boost::detail::
|
||||||
@ -151,10 +142,10 @@ namespace boost {
|
|||||||
|
|
||||||
return detail::
|
return detail::
|
||||||
ends_with_iter_select(
|
ends_with_iter_select(
|
||||||
begin(lit_input),
|
begin(Input),
|
||||||
end(lit_input),
|
end(Input),
|
||||||
begin(lit_test),
|
begin(Test),
|
||||||
end(lit_test),
|
end(Test),
|
||||||
Comp,
|
Comp,
|
||||||
category());
|
category());
|
||||||
}
|
}
|
||||||
@ -215,17 +206,14 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
PredicateT Comp)
|
PredicateT Comp)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
|
if (empty(Test))
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
|
||||||
|
|
||||||
if (empty(lit_test))
|
|
||||||
{
|
{
|
||||||
// Empty range is contained always
|
// Empty range is contained always
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the temporary variable to make VACPP happy
|
// Use the temporary variable to make VACPP happy
|
||||||
bool bResult=(first_finder(lit_test,Comp)(begin(lit_input), end(lit_input)));
|
bool bResult=(first_finder(Test,Comp)(begin(Input), end(Input)));
|
||||||
return bResult;
|
return bResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,19 +274,16 @@ namespace boost {
|
|||||||
const Range2T& Test,
|
const Range2T& Test,
|
||||||
PredicateT Comp)
|
PredicateT Comp)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range1T>::type Iterator1T;
|
range_const_iterator<Range1T>::type Iterator1T;
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<Range2T>::type Iterator2T;
|
range_const_iterator<Range2T>::type Iterator2T;
|
||||||
|
|
||||||
Iterator1T InputEnd=end(lit_input);
|
Iterator1T InputEnd=end(Input);
|
||||||
Iterator2T TestEnd=end(lit_test);
|
Iterator2T TestEnd=end(Test);
|
||||||
|
|
||||||
Iterator1T it=begin(lit_input);
|
Iterator1T it=begin(Input);
|
||||||
Iterator2T pit=begin(lit_test);
|
Iterator2T pit=begin(Test);
|
||||||
for(;
|
for(;
|
||||||
it!=InputEnd && pit!=TestEnd;
|
it!=InputEnd && pit!=TestEnd;
|
||||||
++it,++pit)
|
++it,++pit)
|
||||||
@ -372,14 +357,11 @@ namespace boost {
|
|||||||
const Range2T& Arg2,
|
const Range2T& Arg2,
|
||||||
PredicateT Pred)
|
PredicateT Pred)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_arg1(as_literal(Arg1));
|
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
|
|
||||||
|
|
||||||
return std::lexicographical_compare(
|
return std::lexicographical_compare(
|
||||||
begin(lit_arg1),
|
begin(Arg1),
|
||||||
end(lit_arg1),
|
end(Arg1),
|
||||||
begin(lit_arg2),
|
begin(Arg2),
|
||||||
end(lit_arg2),
|
end(Arg2),
|
||||||
Pred);
|
Pred);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,7 +374,12 @@ namespace boost {
|
|||||||
const Range1T& Arg1,
|
const Range1T& Arg1,
|
||||||
const Range2T& Arg2)
|
const Range2T& Arg2)
|
||||||
{
|
{
|
||||||
return lexicographical_compare(Arg1, Arg2, is_less());
|
return std::lexicographical_compare(
|
||||||
|
begin(Arg1),
|
||||||
|
end(Arg1),
|
||||||
|
begin(Arg2),
|
||||||
|
end(Arg2),
|
||||||
|
is_less());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Lexicographical compare predicate (case-insensitive)
|
//! Lexicographical compare predicate (case-insensitive)
|
||||||
@ -406,7 +393,6 @@ namespace boost {
|
|||||||
|
|
||||||
\param Arg1 First argument
|
\param Arg1 First argument
|
||||||
\param Arg2 Second argument
|
\param Arg2 Second argument
|
||||||
\param Loc A locale used for case insensitive comparison
|
|
||||||
\return The result of the test
|
\return The result of the test
|
||||||
|
|
||||||
\note This function provides the strong exception-safety guarantee
|
\note This function provides the strong exception-safety guarantee
|
||||||
@ -414,10 +400,14 @@ namespace boost {
|
|||||||
template<typename Range1T, typename Range2T>
|
template<typename Range1T, typename Range2T>
|
||||||
inline bool ilexicographical_compare(
|
inline bool ilexicographical_compare(
|
||||||
const Range1T& Arg1,
|
const Range1T& Arg1,
|
||||||
const Range2T& Arg2,
|
const Range2T& Arg2)
|
||||||
const std::locale& Loc=std::locale())
|
|
||||||
{
|
{
|
||||||
return lexicographical_compare(Arg1, Arg2, is_iless(Loc));
|
return std::lexicographical_compare(
|
||||||
|
begin(Arg1),
|
||||||
|
end(Arg1),
|
||||||
|
begin(Arg2),
|
||||||
|
end(Arg2),
|
||||||
|
is_iless());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -439,13 +429,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
PredicateT Pred)
|
PredicateT Pred)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type Iterator1T;
|
range_const_iterator<RangeT>::type Iterator1T;
|
||||||
|
|
||||||
Iterator1T InputEnd=end(lit_input);
|
Iterator1T InputEnd=end(Input);
|
||||||
for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
|
for( Iterator1T It=begin(Input); It!=InputEnd; ++It)
|
||||||
{
|
{
|
||||||
if (!Pred(*It))
|
if (!Pred(*It))
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library predicate_facade.hpp header file ---------------------------//
|
// Boost string_algo library predicate_facade.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_PREDICATE_FACADE_HPP
|
#ifndef BOOST_STRING_PREDICATE_FACADE_HPP
|
||||||
#define BOOST_STRING_PREDICATE_FACADE_HPP
|
#define BOOST_STRING_PREDICATE_FACADE_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library regex.hpp header file ---------------------------//
|
// Boost string_algo library regex.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_REGEX_HPP
|
#ifndef BOOST_STRING_REGEX_HPP
|
||||||
#define BOOST_STRING_REGEX_HPP
|
#define BOOST_STRING_REGEX_HPP
|
||||||
@ -18,7 +17,6 @@
|
|||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/result_iterator.hpp>
|
#include <boost/range/result_iterator.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/find_format.hpp>
|
#include <boost/algorithm/string/find_format.hpp>
|
||||||
#include <boost/algorithm/string/regex_find_format.hpp>
|
#include <boost/algorithm/string/regex_find_format.hpp>
|
||||||
@ -60,10 +58,8 @@ namespace boost {
|
|||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
|
|
||||||
|
|
||||||
return regex_finder(Rx,Flags)(
|
return regex_finder(Rx,Flags)(
|
||||||
begin(lit_input), end(lit_input) );
|
begin(Input), end(Input) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace_regex --------------------------------------------------------------------//
|
// replace_regex --------------------------------------------------------------------//
|
||||||
@ -506,7 +502,7 @@ namespace boost {
|
|||||||
inline typename range_value<SequenceSequenceT>::type
|
inline typename range_value<SequenceSequenceT>::type
|
||||||
join_if(
|
join_if(
|
||||||
const SequenceSequenceT& Input,
|
const SequenceSequenceT& Input,
|
||||||
const Range1T& Separator,
|
Range1T& Separator,
|
||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
@ -539,7 +535,7 @@ namespace boost {
|
|||||||
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
|
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, end(Result), as_literal(Separator));
|
detail::insert(Result, end(Result), Separator);
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, end(Result), *itBegin);
|
detail::insert(Result, end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
@ -574,7 +570,7 @@ namespace boost {
|
|||||||
inline typename range_value<SequenceSequenceT>::type
|
inline typename range_value<SequenceSequenceT>::type
|
||||||
join_if_regex(
|
join_if_regex(
|
||||||
const SequenceSequenceT& Input,
|
const SequenceSequenceT& Input,
|
||||||
const Range1T& Separator,
|
Range1T& Separator,
|
||||||
const basic_regex<CharT, RegexTraitsT>& Rx,
|
const basic_regex<CharT, RegexTraitsT>& Rx,
|
||||||
match_flag_type Flags=match_default )
|
match_flag_type Flags=match_default )
|
||||||
{
|
{
|
||||||
@ -607,7 +603,7 @@ namespace boost {
|
|||||||
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
|
if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
|
||||||
{
|
{
|
||||||
// Add separator
|
// Add separator
|
||||||
detail::insert(Result, end(Result), as_literal(Separator));
|
detail::insert(Result, end(Result), Separator);
|
||||||
// Add element
|
// Add element
|
||||||
detail::insert(Result, end(Result), *itBegin);
|
detail::insert(Result, end(Result), *itBegin);
|
||||||
}
|
}
|
||||||
@ -634,6 +630,14 @@ namespace boost {
|
|||||||
using algorithm::find_all_regex;
|
using algorithm::find_all_regex;
|
||||||
using algorithm::split_regex;
|
using algorithm::split_regex;
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
using algorithm::join_if;
|
||||||
|
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
using algorithm::join_if_regex;
|
||||||
|
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library regex_find_format.hpp header file ---------------------------//
|
// Boost string_algo library regex_find_format.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP
|
#ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP
|
||||||
#define BOOST_STRING_REGEX_FIND_FORMAT_HPP
|
#define BOOST_STRING_REGEX_FIND_FORMAT_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library replace.hpp header file ---------------------------//
|
// Boost string_algo library replace.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_REPLACE_HPP
|
#ifndef BOOST_STRING_REPLACE_HPP
|
||||||
#define BOOST_STRING_REPLACE_HPP
|
#define BOOST_STRING_REPLACE_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library sequence_traits.hpp header file ---------------------------//
|
// Boost string_algo library sequence_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
|
#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
|
||||||
#define BOOST_STRING_SEQUENCE_TRAITS_HPP
|
#define BOOST_STRING_SEQUENCE_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library split.hpp header file ---------------------------//
|
// Boost string_algo library split.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2006.
|
// Copyright Pavol Droba 2002-2006. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_SPLIT_HPP
|
#ifndef BOOST_STRING_SPLIT_HPP
|
||||||
#define BOOST_STRING_SPLIT_HPP
|
#define BOOST_STRING_SPLIT_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library list_traits.hpp header file ---------------------------//
|
// Boost string_algo library list_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP
|
#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP
|
||||||
#define BOOST_STRING_STD_LIST_TRAITS_HPP
|
#define BOOST_STRING_STD_LIST_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library string_traits.hpp header file ---------------------------//
|
// Boost string_algo library string_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP
|
#ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP
|
||||||
#define BOOST_STRING_STD_ROPE_TRAITS_HPP
|
#define BOOST_STRING_STD_ROPE_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library slist_traits.hpp header file ---------------------------//
|
// Boost string_algo library slist_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP
|
#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP
|
||||||
#define BOOST_STRING_STD_SLIST_TRAITS_HPP
|
#define BOOST_STRING_STD_SLIST_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library string_traits.hpp header file ---------------------------//
|
// Boost string_algo library string_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP
|
#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP
|
||||||
#define BOOST_STRING_STD_STRING_TRAITS_HPP
|
#define BOOST_STRING_STD_STRING_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library std_containers_traits.hpp header file ---------------------------//
|
// Boost string_algo library std_containers_traits.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
|
#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
|
||||||
#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
|
#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library trim.hpp header file ---------------------------//
|
// Boost string_algo library trim.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_TRIM_HPP
|
#ifndef BOOST_STRING_TRIM_HPP
|
||||||
#define BOOST_STRING_TRIM_HPP
|
#define BOOST_STRING_TRIM_HPP
|
||||||
@ -16,8 +15,6 @@
|
|||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/range/const_iterator.hpp>
|
#include <boost/range/const_iterator.hpp>
|
||||||
#include <boost/range/as_literal.hpp>
|
|
||||||
#include <boost/range/iterator_range.hpp>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string/detail/trim.hpp>
|
#include <boost/algorithm/string/detail/trim.hpp>
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
#include <boost/algorithm/string/classification.hpp>
|
||||||
@ -63,14 +60,12 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
PredicateT IsSpace)
|
PredicateT IsSpace)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
|
|
||||||
|
|
||||||
std::copy(
|
std::copy(
|
||||||
::boost::algorithm::detail::trim_begin(
|
::boost::algorithm::detail::trim_begin(
|
||||||
begin(lit_range),
|
begin(Input),
|
||||||
end(lit_range),
|
end(Input),
|
||||||
IsSpace ),
|
IsSpace ),
|
||||||
end(lit_range),
|
end(Input),
|
||||||
Output);
|
Output);
|
||||||
|
|
||||||
return Output;
|
return Output;
|
||||||
@ -171,13 +166,11 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
PredicateT IsSpace )
|
PredicateT IsSpace )
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
|
|
||||||
|
|
||||||
std::copy(
|
std::copy(
|
||||||
begin(lit_range),
|
begin(Input),
|
||||||
::boost::algorithm::detail::trim_end(
|
::boost::algorithm::detail::trim_end(
|
||||||
begin(lit_range),
|
begin(Input),
|
||||||
end(lit_range),
|
end(Input),
|
||||||
IsSpace ),
|
IsSpace ),
|
||||||
Output );
|
Output );
|
||||||
|
|
||||||
@ -283,18 +276,16 @@ namespace boost {
|
|||||||
const RangeT& Input,
|
const RangeT& Input,
|
||||||
PredicateT IsSpace)
|
PredicateT IsSpace)
|
||||||
{
|
{
|
||||||
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
|
|
||||||
|
|
||||||
BOOST_STRING_TYPENAME
|
BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<RangeT>::type TrimEnd=
|
range_const_iterator<RangeT>::type TrimEnd=
|
||||||
::boost::algorithm::detail::trim_end(
|
::boost::algorithm::detail::trim_end(
|
||||||
begin(lit_range),
|
begin(Input),
|
||||||
end(lit_range),
|
end(Input),
|
||||||
IsSpace);
|
IsSpace);
|
||||||
|
|
||||||
std::copy(
|
std::copy(
|
||||||
detail::trim_begin(
|
detail::trim_begin(
|
||||||
begin(lit_range), TrimEnd, IsSpace),
|
begin(Input), TrimEnd, IsSpace),
|
||||||
TrimEnd,
|
TrimEnd,
|
||||||
Output
|
Output
|
||||||
);
|
);
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library yes_no_type.hpp header file ---------------------------//
|
// Boost string_algo library yes_no_type.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2003.
|
// Copyright Pavol Droba 2002-2003. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
|
#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
|
||||||
#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
|
#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Boost string_algo library string_regex.hpp header file ---------------------------//
|
// Boost string_algo library string_regex.hpp header file ---------------------------//
|
||||||
|
|
||||||
// Copyright Pavol Droba 2002-2004.
|
// Copyright Pavol Droba 2002-2004. Use, modification and
|
||||||
//
|
// distribution is subject to the Boost Software License, Version
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
// See http://www.boost.org/ for updates, documentation, and revision history.
|
// See http://www.boost.org for updates, documentation, and revision history.
|
||||||
|
|
||||||
#ifndef BOOST_STRING_ALGO_REGEX_HPP
|
#ifndef BOOST_STRING_ALGO_REGEX_HPP
|
||||||
#define BOOST_STRING_ALGO_REGEX_HPP
|
#define BOOST_STRING_ALGO_REGEX_HPP
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
# Boost.Minmax Library Example Jamfile
|
|
||||||
#
|
|
||||||
# Copyright (C) 2002--2004, Herve Bronnimann
|
|
||||||
#
|
|
||||||
# Use, modification, and distribution is subject to the Boost Software
|
|
||||||
# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
# http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
#
|
|
||||||
|
|
||||||
exe minmax_ex : minmax_ex.cpp ;
|
|
||||||
exe minmax_timer : minmax_timer.cpp ;
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
|||||||
import toolset ;
|
import toolset ;
|
||||||
toolset.using doxygen ;
|
toolset.using doxygen ;
|
||||||
|
|
||||||
boostbook string_algo : string_algo.xml autodoc ;
|
boostbook string_algo : string_algo.xml ;
|
||||||
|
|
||||||
doxygen autodoc
|
doxygen autodoc
|
||||||
:
|
:
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<section id="string_algo.concept" last-revision="$Date$">
|
<section id="string_algo.concept" last-revision="$Date$">
|
||||||
<title>Concepts</title>
|
<title>Concepts</title>
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<section id="string_algo.credits" last-revision="$Date$">
|
<section id="string_algo.credits" last-revision="$Date$">
|
||||||
<title>Credits</title>
|
<title>Credits</title>
|
||||||
<section id="string_algo.ack">
|
<section id="string_algo.ack">
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
||||||
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
||||||
|
|
||||||
|
|
||||||
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
||||||
Subject to the Boost Software License, Version 1.0.
|
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 or http://www.boost.org/LICENSE-1.0)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
||||||
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
||||||
|
|
||||||
|
|
||||||
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
||||||
Subject to the Boost Software License, Version 1.0.
|
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 or http://www.boost.org/LICENSE-1.0)
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title> Concepts and External Concepts </title><meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1"></head> <body><table ><tr ><td ><img src="../../../../boost.png" width="100%" border="0"></td><td ><h1 >Concepts and External Concepts</h1></td></tr></table><p >Generic programming in C++ is characterized by the use of function and class templates where
|
|
||||||
the template parameter(s) must satisfy certain requirements.Often these
|
|
||||||
requirements are so important that we give them a name: we call
|
|
||||||
such a set of type requirements a <b>concept</b>. We say that a type <i>
|
|
||||||
conforms to a concept</i> or that it <i>is a model of a concept</i> if it
|
|
||||||
satisfies all of those requirements. The concept can be specified as a set
|
|
||||||
of member functions with well-defined semantics
|
|
||||||
and a set of nested typedefs with well-defined properties.</p><p >Often it much more flexible to provide free-standing functions and typedefs
|
|
||||||
which provides the exact same semantics (but a different syntax) as
|
|
||||||
specified
|
|
||||||
by the concept. This allows generic code to treat different types <i> as if
|
|
||||||
</i> they fulfilled the concept. In this case we say that the concept has
|
|
||||||
been <b> externalized </b> or that the new requirements constitutes an <b>external
|
|
||||||
concept </b>. We say that a type <i> conforms to an external concept </i>
|
|
||||||
or that it <i> is a model of an external concept </i>. A concept may exist
|
|
||||||
without a corresponding external concept and conversely.</p><p >Whenever a concept specifies a member function, the corresponding external
|
|
||||||
concept
|
|
||||||
must specify a free-standing function of the same name, same return type and
|
|
||||||
the same argument list except there is an extra first argument which must
|
|
||||||
be of the type (or a reference to that type) that is to fulfill the external
|
|
||||||
concept. If the corresonding member function has any cv-qulifiers, the
|
|
||||||
first argument must have the same cv-qualifiers. Whenever a concept
|
|
||||||
specifies a nested typedef, the corresponding external concept
|
|
||||||
specifies a <b>type-generator</b>, that is, a type with a nested typedef
|
|
||||||
named <code>type</code>. The type-generator has the name as the nested typedef with
|
|
||||||
<code>_of</code> appended.
|
|
||||||
The converse relationship of an external concept and its corresponding concept
|
|
||||||
also holds.</p><p ><b ><i >Example:</i></b></p><p >A type <code>T</code> fulfills the FooConcept if it
|
|
||||||
has the follwing public members:</p><code> void T::foo( int ) const; <br>
|
|
||||||
int T::bar(); <br>
|
|
||||||
typedef <i>implementation defined </i> foo_type;</code><p >The corresponding external concept is the ExternalFooConcept.</p><p >A type <code>T</code> fullfills the ExternalFooConcept if these
|
|
||||||
free-standing functions and type-generators exists:</p><code>void foo( const T&, int ); <br>
|
|
||||||
int bar( T& ); <br>
|
|
||||||
foo_type_of< T >::type;</code> <br> <br><hr size="1" ><h3 >Literature</h3><ul ><li > <a href="http://www.boost.org/more/generic_programming.html#type_generator" target="_self" >Type Generators</a> </li><li > <a href="http://www.boost.org/more/generic_programming.html#concept" target="_self" >Concepts</a> </li><li > <a href="http://www.sgi.com/tech/stl/stl_introduction.html" target="_self" >Concepts and SGI STL</a> </li></ul><hr size="1" ><p >© Thorsten Ottosen 2003-2004 (nesotto_AT_cs.auc.dk).
|
|
||||||
Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears
|
|
||||||
in all copies. This software is provided "as is" without express or implied warranty, and with no
|
|
||||||
claim as to its suitability for any purpose.</p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></body></html>
|
|
||||||
<!-- Copyright Dezide Aps 2003-2004 -->
|
|
@ -2,7 +2,6 @@
|
|||||||
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
||||||
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
||||||
|
|
||||||
|
|
||||||
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
||||||
Subject to the Boost Software License, Version 1.0.
|
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 or http://www.boost.org/LICENSE-1.0)
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
(See accompanying file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<section id="string_algo.rationale" last-revision="$Date$">
|
<section id="string_algo.rationale" last-revision="$Date$">
|
||||||
<title>Rationale</title>
|
<title>Rationale</title>
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
<xi:include href="quickref.xml"/>
|
<xi:include href="quickref.xml"/>
|
||||||
<xi:include href="design.xml"/>
|
<xi:include href="design.xml"/>
|
||||||
<xi:include href="concept.xml"/>
|
<xi:include href="concept.xml"/>
|
||||||
<xi:include href="autodoc.xml"/>
|
<xi:include href="autodoc.boostbook"/>
|
||||||
<xi:include href="rationale.xml"/>
|
<xi:include href="rationale.xml"/>
|
||||||
<xi:include href="environment.xml"/>
|
<xi:include href="environment.xml"/>
|
||||||
<xi:include href="credits.xml"/>
|
<xi:include href="credits.xml"/>
|
||||||
|
@ -2,13 +2,11 @@
|
|||||||
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
||||||
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
||||||
|
|
||||||
|
|
||||||
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
<!-- Copyright (c) 2002-2006 Pavol Droba.
|
||||||
Subject to the Boost Software License, Version 1.0.
|
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 or http://www.boost.org/LICENSE-1.0)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<section id="string_algo.usage" last-revision="$Date$">
|
<section id="string_algo.usage" last-revision="$Date$">
|
||||||
<title>Usage</title>
|
<title>Usage</title>
|
||||||
|
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
# Boost string_algo library examples Jamfile ---------------------------------
|
|
||||||
#
|
|
||||||
# Copyright Pavol Droba 2002-2003. Use, modification and
|
|
||||||
# distribution is subject to the Boost Software License, Version
|
|
||||||
# 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
# http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
#
|
|
||||||
# See http://www.boost.org for updates, documentation, and revision history.
|
|
||||||
|
|
||||||
|
|
||||||
exe conv_example : conv_example.cpp ;
|
|
||||||
exe predicate_example : predicate_example.cpp ;
|
|
||||||
exe find_example : find_example.cpp ;
|
|
||||||
exe replace_example : replace_example.cpp ;
|
|
||||||
exe rle_example : rle_example.cpp ;
|
|
||||||
exe trim_example : trim_example.cpp ;
|
|
||||||
exe regex_example : regex_example.cpp /boost/regex//boost_regex ;
|
|
||||||
exe split_example : split_example.cpp ;
|
|
@ -1,3 +1,9 @@
|
|||||||
|
|
||||||
|
<!-- 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)
|
||||||
|
-->
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="refresh" content="0; URL=../../../doc/html/string_algo.html">
|
<meta http-equiv="refresh" content="0; URL=../../../doc/html/string_algo.html">
|
||||||
|
@ -122,25 +122,6 @@ void iterator_test()
|
|||||||
BOOST_CHECK( tokens[2]==string("") );
|
BOOST_CHECK( tokens[2]==string("") );
|
||||||
BOOST_CHECK( tokens[3]==string("xx") );
|
BOOST_CHECK( tokens[3]==string("xx") );
|
||||||
BOOST_CHECK( tokens[4]==string("abb") );
|
BOOST_CHECK( tokens[4]==string("abb") );
|
||||||
|
|
||||||
find_iterator<string::iterator> fiter=make_find_iterator(str1, first_finder("xx"));
|
|
||||||
BOOST_CHECK(equals(*fiter, "xx"));
|
|
||||||
++fiter;
|
|
||||||
BOOST_CHECK(equals(*fiter, "xx"));
|
|
||||||
++fiter;
|
|
||||||
BOOST_CHECK(fiter==find_iterator<string::iterator>());
|
|
||||||
|
|
||||||
split_iterator<string::iterator> siter=make_split_iterator(str1, token_finder(is_any_of("-"), token_compress_on));
|
|
||||||
BOOST_CHECK(equals(*siter, "xx"));
|
|
||||||
++siter;
|
|
||||||
BOOST_CHECK(equals(*siter, "abc"));
|
|
||||||
++siter;
|
|
||||||
BOOST_CHECK(equals(*siter, "xx"));
|
|
||||||
++siter;
|
|
||||||
BOOST_CHECK(equals(*siter, "abb"));
|
|
||||||
++siter;
|
|
||||||
BOOST_CHECK(siter==split_iterator<string::iterator>());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// test main
|
// test main
|
||||||
|
Reference in New Issue
Block a user