mirror of
https://github.com/boostorg/algorithm.git
synced 2025-06-25 20:11:50 +02:00
Compare commits
23 Commits
boost-1.82
...
develop
Author | SHA1 | Date | |
---|---|---|---|
6eb48dd863 | |||
1395fe720c | |||
35a55238a7 | |||
7f07838f8b | |||
bbfcdf1322 | |||
5c8e6ce9ba | |||
0c0e84b112 | |||
81e46297b5 | |||
8189606c93 | |||
c63c45a932 | |||
1213b9fd1f | |||
b3b2ff4d0c | |||
14922e71c0 | |||
fcf95e504b | |||
6b1d2fc5ad | |||
dc14b69189 | |||
61fa3e461f | |||
3401f0398f | |||
faac048d59 | |||
d1ecc8b0a8 | |||
1d9706feb7 | |||
3fe40eb999 | |||
e4d4a685da |
11
Jamfile
11
Jamfile
@ -1,11 +0,0 @@
|
||||
# Boost.Algorithm Library Jamfile
|
||||
#
|
||||
# Copyright (c) 2018 James E. King III
|
||||
#
|
||||
# Use, modification, and distribution are 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)
|
||||
|
||||
# please order by name to ease maintenance
|
||||
build-project example ;
|
||||
build-project test ;
|
42
build.jam
Normal file
42
build.jam
Normal file
@ -0,0 +1,42 @@
|
||||
# Copyright René Ferdinand Rivera Morell 2023-2024
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
require-b2 5.2 ;
|
||||
|
||||
constant boost_dependencies :
|
||||
/boost/array//boost_array
|
||||
/boost/assert//boost_assert
|
||||
/boost/bind//boost_bind
|
||||
/boost/concept_check//boost_concept_check
|
||||
/boost/config//boost_config
|
||||
/boost/core//boost_core
|
||||
/boost/exception//boost_exception
|
||||
/boost/function//boost_function
|
||||
/boost/iterator//boost_iterator
|
||||
/boost/mpl//boost_mpl
|
||||
/boost/range//boost_range
|
||||
/boost/regex//boost_regex
|
||||
/boost/static_assert//boost_static_assert
|
||||
/boost/throw_exception//boost_throw_exception
|
||||
/boost/tuple//boost_tuple
|
||||
/boost/type_traits//boost_type_traits
|
||||
/boost/unordered//boost_unordered ;
|
||||
|
||||
project /boost/algorithm
|
||||
: common-requirements
|
||||
<include>include
|
||||
;
|
||||
|
||||
explicit
|
||||
[ alias boost_algorithm : : : : <library>$(boost_dependencies) ]
|
||||
[ alias all : boost_algorithm test
|
||||
example
|
||||
minmax/example minmax/test
|
||||
string/example string/test
|
||||
]
|
||||
;
|
||||
|
||||
call-if : boost-library algorithm
|
||||
;
|
@ -18,11 +18,11 @@ using boostbook ;
|
||||
|
||||
doxygen autodoc
|
||||
:
|
||||
[ glob ../../../boost/algorithm/*.hpp
|
||||
../../../boost/algorithm/searching/*.hpp
|
||||
../../../boost/algorithm/cxx11/*.hpp
|
||||
../../../boost/algorithm/cxx14/*.hpp
|
||||
../../../boost/algorithm/cxx17/*.hpp
|
||||
[ glob ../include/boost/algorithm/*.hpp
|
||||
../include/boost/algorithm/searching/*.hpp
|
||||
../include/boost/algorithm/cxx11/*.hpp
|
||||
../include/boost/algorithm/cxx14/*.hpp
|
||||
../include/boost/algorithm/cxx17/*.hpp
|
||||
]
|
||||
:
|
||||
<doxygen:param>"PREDEFINED=\"BOOST_ALGORITHM_DOXYGEN=1\""
|
||||
|
@ -8,9 +8,9 @@
|
||||
# See http://www.boost.org for updates, documentation, and revision history.
|
||||
|
||||
|
||||
project /boost/algorithm/example
|
||||
project
|
||||
: requirements
|
||||
<include>../../../
|
||||
<library>/boost/algorithm//boost_algorithm
|
||||
<optimization>speed
|
||||
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
|
||||
<toolset>msvc:<define>NOMINMAX
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
Copyright 2008 Adobe Systems Incorporated
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
@ -84,7 +84,7 @@ namespace boost { namespace algorithm {
|
||||
template <
|
||||
typename BidirectionalIterator, // models BidirectionalIterator
|
||||
typename Pred> // models UnaryPredicate
|
||||
std::pair<BidirectionalIterator, BidirectionalIterator> gather
|
||||
std::pair<BidirectionalIterator, BidirectionalIterator> gather
|
||||
( BidirectionalIterator first, BidirectionalIterator last, BidirectionalIterator pivot, Pred pred )
|
||||
{
|
||||
// The first call partitions everything up to (but not including) the pivot element,
|
||||
@ -106,11 +106,11 @@ template <
|
||||
typename BidirectionalRange, //
|
||||
typename Pred> // Pred models UnaryPredicate
|
||||
std::pair<
|
||||
typename boost::range_iterator<const BidirectionalRange>::type,
|
||||
typename boost::range_iterator<const BidirectionalRange>::type>
|
||||
typename boost::range_iterator<BidirectionalRange>::type,
|
||||
typename boost::range_iterator<BidirectionalRange>::type>
|
||||
gather (
|
||||
const BidirectionalRange &range,
|
||||
typename boost::range_iterator<const BidirectionalRange>::type pivot,
|
||||
BidirectionalRange &range,
|
||||
typename boost::range_iterator<BidirectionalRange>::type pivot,
|
||||
Pred pred )
|
||||
{
|
||||
return boost::algorithm::gather ( boost::begin ( range ), boost::end ( range ), pivot, pred );
|
||||
|
@ -85,6 +85,22 @@ namespace boost {
|
||||
return detail::is_classifiedF(std::ctype_base::alpha, Loc);
|
||||
}
|
||||
|
||||
#ifndef BOOST_NO_CXX11
|
||||
//! is_blank predicate
|
||||
/*!
|
||||
Construct the \c is_classified predicate for the \c ctype_base::blank category.
|
||||
|
||||
\param Loc A locale used for classification
|
||||
\return An instance of the \c is_classified predicate
|
||||
\since c++11
|
||||
*/
|
||||
inline detail::is_classifiedF
|
||||
is_blank(const std::locale& Loc=std::locale())
|
||||
{
|
||||
return detail::is_classifiedF(std::ctype_base::blank, Loc);
|
||||
}
|
||||
#endif
|
||||
|
||||
//! is_cntrl predicate
|
||||
/*!
|
||||
Construct the \c is_classified predicate for the \c ctype_base::cntrl category.
|
||||
@ -294,6 +310,9 @@ namespace boost {
|
||||
// pull names to the boost namespace
|
||||
using algorithm::is_classified;
|
||||
using algorithm::is_space;
|
||||
#ifndef BOOST_NO_CXX11
|
||||
using algorithm::is_blank;
|
||||
#endif
|
||||
using algorithm::is_alnum;
|
||||
using algorithm::is_alpha;
|
||||
using algorithm::is_cntrl;
|
||||
|
@ -108,7 +108,6 @@ namespace boost {
|
||||
|
||||
\param Input An input sequence
|
||||
\param Loc A locale used for 'space' classification
|
||||
\return A trimmed copy of the input
|
||||
*/
|
||||
template<typename SequenceT>
|
||||
inline void trim_all(SequenceT& Input, const std::locale& Loc =std::locale())
|
||||
@ -191,7 +190,6 @@ namespace boost {
|
||||
\param Input An input sequence
|
||||
\param Fill A string used to fill the inner spaces
|
||||
\param Loc A locale used for 'space' classification
|
||||
\return A trimmed copy of the input
|
||||
*/
|
||||
template<typename SequenceT, typename RangeT>
|
||||
inline void trim_fill(SequenceT& Input, const RangeT& Fill, const std::locale& Loc =std::locale())
|
||||
|
@ -7,6 +7,11 @@
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
#
|
||||
|
||||
project
|
||||
: requirements
|
||||
<library>/boost/algorithm//boost_algorithm
|
||||
<library>/boost/timer//boost_timer ;
|
||||
|
||||
exe minmax_ex : minmax_ex.cpp ;
|
||||
exe minmax_timer : minmax_timer.cpp ;
|
||||
|
||||
|
@ -9,17 +9,19 @@
|
||||
|
||||
import testing ;
|
||||
|
||||
project : requirements <library>/boost/algorithm//boost_algorithm ;
|
||||
|
||||
alias unit_test_framework
|
||||
: # sources
|
||||
/boost//unit_test_framework
|
||||
;
|
||||
/boost/test//boost_unit_test_framework
|
||||
;
|
||||
|
||||
{
|
||||
test-suite algorithm/minmax
|
||||
: [ run minmax_element_test.cpp unit_test_framework
|
||||
: : : : minmax_element ]
|
||||
[ run minmax_test.cpp unit_test_framework
|
||||
: : : : minmax ]
|
||||
: : : : minmax ]
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -10,40 +10,40 @@
|
||||
import toolset ;
|
||||
toolset.using doxygen ;
|
||||
|
||||
boostbook string_algo : string_algo.xml autodoc
|
||||
boostbook string_algo : string_algo.xml autodoc
|
||||
:
|
||||
<xsl:param>boost.root=../../../../..
|
||||
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
|
||||
;
|
||||
|
||||
doxygen autodoc
|
||||
:
|
||||
[ glob ../../../../boost/algorithm/string.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string_regex.hpp ]
|
||||
:
|
||||
[ glob ../../include/boost/algorithm/string.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string_regex.hpp ]
|
||||
|
||||
[ glob ../../../../boost/algorithm/string/classification.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/iterator_range.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/sequence_traits.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/std_containers_traits.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/concept.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/compare.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/constants.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/case_conv.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/find.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/finder.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/find_iterator.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/trim.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/predicate.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/split.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/iter_find.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/erase.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/join.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/replace.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/find_format.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/formatter.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/regex.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/regex_find_format.hpp ]
|
||||
[ glob ../../../../boost/algorithm/string/trim_all.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/classification.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/iterator_range.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/sequence_traits.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/std_containers_traits.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/concept.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/compare.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/constants.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/case_conv.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/find.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/finder.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/find_iterator.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/trim.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/predicate.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/split.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/iter_find.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/erase.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/join.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/replace.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/find_format.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/formatter.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/regex.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/regex_find_format.hpp ]
|
||||
[ glob ../../include/boost/algorithm/string/trim_all.hpp ]
|
||||
:
|
||||
<doxygen:param>HIDE_UNDOC_MEMBERS=YES
|
||||
<doxygen:param>EXTRACT_PRIVATE=NO
|
||||
@ -53,7 +53,7 @@ doxygen autodoc
|
||||
<doxygen:param>SEARCH_INCLUDES=YES
|
||||
<doxygen:param>PREDEFINED="BOOST_STRING_TYPENAME=typename \"BOOST_STATIC_CONSTANT(type,var)=static const type var;\""
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -667,6 +667,13 @@
|
||||
<functionname>is_space()</functionname>
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>is_blank</entry>
|
||||
<entry>Recognize blanks</entry>
|
||||
<entry>
|
||||
<functionname>is_blank()</functionname>
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>is_alnum</entry>
|
||||
<entry>Recognize alphanumeric characters</entry>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#
|
||||
# See http://www.boost.org for updates, documentation, and revision history.
|
||||
|
||||
project : requirements <library>/boost/algorithm//boost_algorithm ;
|
||||
|
||||
exe conv_example : conv_example.cpp ;
|
||||
exe predicate_example : predicate_example.cpp ;
|
||||
|
@ -9,31 +9,33 @@
|
||||
|
||||
import testing ;
|
||||
|
||||
project : requirements <library>/boost/algorithm//boost_algorithm ;
|
||||
|
||||
alias unit_test_framework
|
||||
: # sources
|
||||
/boost//unit_test_framework
|
||||
;
|
||||
/boost/test//boost_unit_test_framework
|
||||
;
|
||||
|
||||
test-suite algorithm/string
|
||||
: [ run
|
||||
: [ run
|
||||
trim_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
: trim
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
conv_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
: conv
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
predicate_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
: predicate
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
find_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
@ -51,23 +53,23 @@ test-suite algorithm/string
|
||||
:
|
||||
: join
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
replace_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
: replace
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
regex_test.cpp unit_test_framework
|
||||
../../../regex/build//boost_regex
|
||||
: :
|
||||
:
|
||||
:
|
||||
: regex
|
||||
]
|
||||
[ run
|
||||
[ run
|
||||
find_format_test.cpp unit_test_framework
|
||||
: :
|
||||
:
|
||||
:
|
||||
: find_format
|
||||
]
|
||||
;
|
||||
|
@ -138,7 +138,12 @@ void classification_test()
|
||||
TEST_CLASS( is_any_of( string("abc") ), "aaabbcc", "aaxb" );
|
||||
TEST_CLASS( is_any_of( "abc" ), "aaabbcc", "aaxb" );
|
||||
TEST_CLASS( is_from_range( 'a', 'c' ), "aaabbcc", "aaxb" );
|
||||
|
||||
|
||||
#ifndef BOOST_NO_CXX11
|
||||
TEST_CLASS( is_blank(), " \t", "\t \n\r" );
|
||||
TEST_CLASS( !is_blank(), "abc\n\v\f\r", "a x\t" );
|
||||
#endif
|
||||
|
||||
TEST_CLASS( !is_classified(std::ctype_base::space), "...", "..\n\r\t " );
|
||||
TEST_CLASS( ( !is_any_of("abc") && is_from_range('a','e') ) || is_space(), "d e", "abcde" );
|
||||
|
||||
|
@ -9,9 +9,11 @@
|
||||
|
||||
import testing ;
|
||||
|
||||
project : requirements <library>/boost/algorithm//boost_algorithm ;
|
||||
|
||||
alias unit_test_framework
|
||||
: # sources
|
||||
/boost//unit_test_framework
|
||||
/boost/test//boost_unit_test_framework
|
||||
;
|
||||
|
||||
|
||||
@ -85,7 +87,7 @@ alias unit_test_framework
|
||||
|
||||
# Is_partitioned_until tests
|
||||
[ run is_partitioned_until_test.cpp unit_test_framework : : : : is_partitioned_until_test ]
|
||||
|
||||
|
||||
# Apply_permutation tests
|
||||
[ run apply_permutation_test.cpp unit_test_framework : : : : apply_permutation_test ]
|
||||
# Find tests
|
||||
|
@ -28,8 +28,8 @@
|
||||
namespace ba = boost::algorithm;
|
||||
// namespace ba = boost;
|
||||
|
||||
BOOST_CXX14_CONSTEXPR bool is_true ( int v ) { return true; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_false ( int v ) { return false; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_true ( int ) { return true; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_false ( int ) { return false; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_even ( int v ) { return v % 2 == 0; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_odd ( int v ) { return v % 2 == 1; }
|
||||
BOOST_CXX14_CONSTEXPR bool is_zero ( int v ) { return v == 0; }
|
||||
|
@ -25,7 +25,7 @@ void test_short_input1 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
|
||||
catch ( const std::exception &ex ) { return; }
|
||||
catch ( const std::exception & ) { return; }
|
||||
BOOST_TEST_MESSAGE ( "Failed to catch std::exception in test_short_input1" );
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
@ -34,7 +34,7 @@ void test_short_input2 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
|
||||
catch ( const ba::hex_decode_error &ex ) { return; }
|
||||
catch ( const ba::hex_decode_error & ) { return; }
|
||||
BOOST_TEST_MESSAGE ( "Failed to catch ba::hex_decode_error in test_short_input2" );
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
@ -43,7 +43,7 @@ void test_short_input3 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
|
||||
catch ( const ba::not_enough_input &ex ) { return; }
|
||||
catch ( const ba::not_enough_input & ) { return; }
|
||||
BOOST_TEST_MESSAGE ( "Failed to catch ba::not_enough_input in test_short_input3" );
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
@ -53,8 +53,8 @@ void test_short_input4 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
|
||||
catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::not_enough_input &ex ) { return; }
|
||||
catch ( const ba::non_hex_input & ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::not_enough_input & ) { return; }
|
||||
catch ( ... ) { BOOST_CHECK ( false ); }
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
@ -64,8 +64,8 @@ void test_short_input5 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( "A", std::back_inserter(s)); }
|
||||
catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::not_enough_input &ex ) { return; }
|
||||
catch ( const ba::non_hex_input & ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::not_enough_input & ) { return; }
|
||||
catch ( ... ) { BOOST_CHECK ( false ); }
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
@ -125,8 +125,8 @@ void test_nonhex_input4 () {
|
||||
std::string s;
|
||||
|
||||
try { ba::unhex ( "P1234FA1234", std::back_inserter(s)); }
|
||||
catch ( const ba::not_enough_input &ex ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::non_hex_input &ex ) { return; }
|
||||
catch ( const ba::not_enough_input & ) { BOOST_CHECK ( false ); }
|
||||
catch ( const ba::non_hex_input & ) { return; }
|
||||
catch ( ... ) { BOOST_CHECK ( false ); }
|
||||
BOOST_CHECK ( false );
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ void test_sequence1 () {
|
||||
std::vector<int> v, v1;
|
||||
|
||||
v.clear ();
|
||||
for ( std::size_t i = 5; i < 15; ++i )
|
||||
for ( int i = 5; i < 15; ++i )
|
||||
v.push_back ( i );
|
||||
v1 = v;
|
||||
BOOST_CHECK ( ba::is_permutation ( v.begin (), v.end (), v.begin ())); // better be a permutation of itself!
|
||||
|
@ -32,7 +32,7 @@ namespace {
|
||||
|
||||
// Check using iterators
|
||||
template<typename Container>
|
||||
void check_one_iter ( const Container &haystack, const std::string &needle, int expected ) {
|
||||
void check_one_iter ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) {
|
||||
typedef typename Container::const_iterator iter_type;
|
||||
typedef typename std::pair<iter_type, iter_type> ret_type;
|
||||
typedef std::string::const_iterator pattern_type;
|
||||
@ -53,7 +53,7 @@ namespace {
|
||||
// iter_type it1r = ret1r.first;
|
||||
// iter_type it2 = ret2.first;
|
||||
// iter_type it3 = ret3.first;
|
||||
const int dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
|
||||
std::cout << "(Iterators) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
|
||||
try {
|
||||
@ -97,7 +97,7 @@ namespace {
|
||||
// Check using pointers
|
||||
// We're assuming that the container implements contiguous storage here.
|
||||
template<typename Container>
|
||||
void check_one_pointer ( const Container &haystack, const std::string &needle, int expected ) {
|
||||
void check_one_pointer ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) {
|
||||
typedef const typename Container::value_type *ptr_type;
|
||||
typedef typename std::pair<ptr_type, ptr_type> ret_type;
|
||||
|
||||
@ -110,7 +110,7 @@ namespace {
|
||||
ret_type ret1 = ba::boyer_moore_search (hBeg, hEnd, nBeg, nEnd);
|
||||
ret_type ret2 = ba::boyer_moore_horspool_search (hBeg, hEnd, nBeg, nEnd);
|
||||
ret_type ret3 = ba::knuth_morris_pratt_search (hBeg, hEnd, nBeg, nEnd);
|
||||
const int dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
|
||||
std::cout << "(Pointers) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
|
||||
try {
|
||||
@ -147,7 +147,7 @@ namespace {
|
||||
|
||||
// Check using objects
|
||||
template<typename Container>
|
||||
void check_one_object ( const Container &haystack, const std::string &needle, int expected ) {
|
||||
void check_one_object ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) {
|
||||
typedef typename Container::const_iterator iter_type;
|
||||
typedef typename std::pair<iter_type, iter_type> ret_type;
|
||||
typedef std::string::const_iterator pattern_type;
|
||||
@ -169,7 +169,7 @@ namespace {
|
||||
ret_type retr1r = bm_r (haystack);
|
||||
ret_type ret2 = bmh (hBeg, hEnd);
|
||||
ret_type ret3 = kmp (hBeg, hEnd);
|
||||
const int dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first );
|
||||
|
||||
std::cout << "(Objects) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
|
||||
try {
|
||||
@ -224,7 +224,7 @@ namespace {
|
||||
|
||||
|
||||
template<typename Container>
|
||||
void check_one ( const Container &haystack, const std::string &needle, int expected ) {
|
||||
void check_one ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) {
|
||||
check_one_iter ( haystack, needle, expected );
|
||||
check_one_pointer ( haystack, needle, expected );
|
||||
check_one_object ( haystack, needle, expected );
|
||||
|
@ -85,7 +85,7 @@ namespace {
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
void check_one ( const vec &haystack, const vec &needle, int expected ) {
|
||||
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) {
|
||||
std::size_t i;
|
||||
std::clock_t sTime;
|
||||
unsigned long stdDiff;
|
||||
@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE( test_main )
|
||||
std::cout << "---- Middle -----" << std::endl;
|
||||
check_one ( c1, p1f, -2 ); // Don't know answer
|
||||
std::cout << "------ End ------" << std::endl;
|
||||
check_one ( c1, p1e, c1.size() - p1e.size ());
|
||||
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ()));
|
||||
std::cout << "--- Not found ---" << std::endl;
|
||||
check_one ( c1, p1n, -1 ); // Not found
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ namespace {
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
void check_one ( const vec &haystack, const vec &needle, int expected ) {
|
||||
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) {
|
||||
std::size_t i;
|
||||
std::clock_t sTime;
|
||||
unsigned long stdDiff;
|
||||
@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE( test_main )
|
||||
std::cout << "---- Middle -----" << std::endl;
|
||||
check_one ( c1, p1f, -2 ); // Don't know answer
|
||||
std::cout << "------ End ------" << std::endl;
|
||||
check_one ( c1, p1e, c1.size() - p1e.size ());
|
||||
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ()));
|
||||
std::cout << "--- Not found ---" << std::endl;
|
||||
check_one ( c1, p1n, -1 ); // Not found
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ namespace {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
void check_one ( const vec &haystack, const vec &needle, int expected ) {
|
||||
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) {
|
||||
|
||||
std::pair<vec::const_iterator, vec::const_iterator> res;
|
||||
std::pair<vec::const_iterator, vec::const_iterator> exp; // the expected result
|
||||
@ -117,7 +117,7 @@ BOOST_AUTO_TEST_CASE( test_main )
|
||||
std::cout << "---- Middle -----" << std::endl;
|
||||
check_one ( c1, p1f, -2 ); // Don't know answer
|
||||
std::cout << "------ End ------" << std::endl;
|
||||
check_one ( c1, p1e, c1.size() - p1e.size ());
|
||||
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ()));
|
||||
std::cout << "--- Not found ---" << std::endl;
|
||||
check_one ( c1, p1n, -1 ); // Not found
|
||||
}
|
||||
|
Reference in New Issue
Block a user