Compare commits

..

111 Commits

Author SHA1 Message Date
28dd87b90e Merge branch 'develop' 2022-11-09 21:21:12 -08:00
1c5f74ae25 Merge doc fixes to master 2022-07-06 08:22:07 -07:00
1cfd9592f7 New features for the 1.80.0 release 2022-06-29 14:03:25 -07:00
559835eaa5 Merge branch 'develop' 2022-06-23 21:09:11 -07:00
3b3bd8d3db Merge changes from develop for the 1.76.0 release 2021-04-07 09:28:02 -07:00
ca77e55428 Bug fixes for 1/75/0 2020-11-17 15:45:39 -08:00
7f527f3c4d Merge changes from develop for the 1.74.0 release 2020-06-24 09:47:23 -07:00
e59958cc4d Merge include + doc fixes to master for 1.72 release 2019-12-03 16:53:16 -08:00
44527f4c81 Algorithm: Merge example fixes master for 1.72.0 2019-12-03 07:48:39 -08:00
1b65b8de02 Merge bug fixes to master for 1.71 2019-07-10 15:14:08 -07:00
5af3e3b174 Merge bug fixes to master 2018-12-04 09:35:03 -08:00
badf1b3f0c Merge broken links to master. NFC 2018-07-31 22:57:40 -07:00
4f9afb0682 Merge for the 1.68.0 beta 2018-07-04 11:27:27 -07:00
6d0126df8a Catch up with the changes; apply_permutation; constexpr, etc 2018-05-01 08:17:06 -07:00
daef6d41c5 C++17 algorithms 2017-06-28 20:13:38 -07:00
055075aa61 Bug fixes and is_partititioned_XXX for the 1.65.0 release 2017-06-14 18:49:39 -07:00
d029402f05 Add, and update, documentation build targets. 2016-10-10 11:24:26 -05:00
24d2cceb27 Fix a couple of test failures for the 1.62.0 release 2016-08-17 18:11:47 -07:00
c5b41eba46 Merge to master for 1.62.0 release 2016-08-17 13:32:45 -07:00
e5ea93bab1 Revert "Merge pull request #14 from nigels-com/merge-hex_lower"
This reverts commit 5412438df5, reversing
changes made to a09963bf93.
2016-03-07 15:43:55 -08:00
5412438df5 Merge pull request #14 from nigels-com/merge-hex_lower
Implement algorithm::hex_lower (Trac ticket #7064)
2016-03-07 14:57:34 -08:00
baa6eca18c Test coverage for algorithm::hex_lower, adapting existing coverage for algorithm::hex 2016-01-31 20:18:22 +10:00
073eb62f64 Another overload of algorithm::hex_lower as lower-case alternative to algorithm::hex 2016-01-31 20:17:23 +10:00
cc1392cae6 Implement algorithm::hex_lower as lower-case alternative to algorithm::hex 2016-01-31 19:11:11 +10:00
a09963bf93 Merge from develop; new feature 'power'; doc fixes; remove usage of C++11 versions of the algorithms 2015-03-18 21:31:53 -07:00
cf249c090c Merge from develop: clean up is_permutation; fix clamp interface, and merge fix for bug #9335 as well 2014-03-31 12:03:45 -07:00
645be22fa7 Setting merge point for git merges 2014-03-23 14:33:14 -07:00
28b12d7264 Algorithm: Remove obsolete MSVC version checks.
[SVN r86024]
2014-03-23 14:30:10 -07:00
4d28d579e3 Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Process #ifdef...#endif blocks.

[SVN r86243]
2014-03-23 14:27:55 -07:00
5adab54486 Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Process #ifdef...#else...#endif blocks.

[SVN r86246]
2014-03-23 14:27:55 -07:00
685a76f094 Merge a bunch of minor Boost.Algorithm changes to release
[SVN r86757]
2013-11-18 16:52:09 +00:00
5988a55b96 Minor merging; removing tabs from source files
[SVN r86323]
2013-10-15 15:44:55 +00:00
850fc02667 Merge bug fix for #9063 to release
[SVN r86218]
2013-10-09 18:09:40 +00:00
5279c8f061 Merge minor Boost.Algorithm doc fixes to the release branch
[SVN r86200]
2013-10-08 15:31:14 +00:00
8b89b5ba27 Merged changes from trunk.
[SVN r85804]
2013-09-20 17:40:42 +00:00
ca23b6f4f8 Merge bug fix to Release; Fixes #8546
[SVN r85134]
2013-07-23 16:48:27 +00:00
55cb3afefa Merge test fixup to release
[SVN r84825]
2013-06-18 14:48:37 +00:00
beeedadba9 Merge doc changes from trunk
[SVN r84743]
2013-06-11 16:21:22 +00:00
1a70166889 Merge c++14 changes to release
[SVN r84415]
2013-05-22 15:10:49 +00:00
63da6f5713 Merge Algorithm changes to release; hex code cleanups; gather iterator requirements; copy_while and copy_until interface changes
[SVN r83347]
2013-03-07 15:37:08 +00:00
2381d0bdac Merge bug fix to release; Fixes #7989
[SVN r83193]
2013-02-27 23:37:21 +00:00
40b5941652 One more failed merge
[SVN r83192]
2013-02-27 23:36:16 +00:00
00dfda98b2 more merge failures
[SVN r83171]
2013-02-26 22:05:42 +00:00
52eef989da Clean up merge failure
[SVN r83170]
2013-02-26 22:03:44 +00:00
8132864884 Merged boost::algorithm::gather and updated tests for Utility, Algorithm and Utility libraries
[SVN r83154]
2013-02-25 18:43:26 +00:00
6e098b27aa Merge Michael Morin's typo fixes for Boost.Algorithm to release; no functionality change.
[SVN r82240]
2012-12-28 18:19:25 +00:00
60010b4165 Merge bug fix and test to release; Fixes #7784
[SVN r82238]
2012-12-28 17:39:08 +00:00
1660dc9d48 merge bug fix for minmax_element to release; Fixes #7752
[SVN r82049]
2012-12-17 16:02:38 +00:00
5ae4f848b3 Remove tabs from Boost.Algorithm tests.
[SVN r81857]
2012-12-11 16:56:30 +00:00
fe3e0bb9c4 merge K-M-P doc updates to release; Fixes #7656
[SVN r81840]
2012-12-10 21:13:08 +00:00
311e169376 Merge extra tests for Boost.StringAlgo.Split to release
[SVN r81835]
2012-12-10 20:10:12 +00:00
3dddfa1930 Merge from trunk; Fixes #7346
[SVN r81832]
2012-12-10 19:23:54 +00:00
be6d8f9665 Merge URL fix for boyer-moore; Fixes #7781
[SVN r81825]
2012-12-10 15:40:23 +00:00
bced4ed8dd Merge doc fix for minmax; Fixes #7751
[SVN r81823]
2012-12-10 15:28:36 +00:00
1b57e905ab Merge bug fixes to release; Fixes #7339
[SVN r80808]
2012-10-01 15:31:51 +00:00
29bd9f53d9 Merge bug fixes to release; Fixes #7399 Fixes #7400 Fixes #7401
[SVN r80670]
2012-09-23 14:56:41 +00:00
6341cfb1a6 Merge doc typo corrections to release; fixes #6595; fixes #7182
[SVN r80057]
2012-08-16 05:16:42 +00:00
7f4acd6170 Merged typos in comments to release; no functionality; Fixes #7210
[SVN r79929]
2012-08-08 16:30:33 +00:00
314f6dcfe0 Merge changes from [79588] to Release; fixes a unhex bug
[SVN r79604]
2012-07-19 15:12:33 +00:00
167aa6e31c Get rid of tabs in Boost.Algorithm tests
[SVN r79603]
2012-07-19 15:00:27 +00:00
d228e91494 Merge Boost.Algorithm changes to release; Fixes #7104
[SVN r79538]
2012-07-15 16:28:35 +00:00
9cc573fbd0 Fixed errors in the doxygen comments. Fixes #7083.
[SVN r79285]
2012-07-05 15:30:17 +00:00
28a7d3eb4b Merge doc changes to release; fixes #7073
[SVN r79264]
2012-07-04 16:15:35 +00:00
883cce61a8 Merge algorithm's html redirect.
[SVN r78855]
2012-06-07 20:05:17 +00:00
96d4708367 Merge Boost.Algorithm inspection report changes to release. No functionality change
[SVN r78689]
2012-05-27 15:45:18 +00:00
563fe27a59 Merged changes for Boost.Algorithm to release; Fixes #6596; Fixes #6689; Fixes #3215; Fixes #6840
[SVN r78557]
2012-05-23 16:25:48 +00:00
76cd99ed53 Merge Boost.Algorithm to release branch
[SVN r78025]
2012-04-16 18:54:41 +00:00
0f2399fef0 Merge changes to release; fixes #5589
[SVN r76527]
2012-01-15 16:49:25 +00:00
044d667e79 Merge changes to release; fixes #3634
[SVN r76522]
2012-01-15 16:05:55 +00:00
be9da63894 Merge fix for #4937 to release
[SVN r76267]
2012-01-01 21:18:47 +00:00
787c94bc53 Merge Change 68161 to release
[SVN r76266]
2012-01-01 21:17:02 +00:00
e87ce37b34 Merge Change 76213 to release; Fixes #4811
[SVN r76265]
2012-01-01 21:12:58 +00:00
199a89a1e9 merged from trunk
[SVN r72380]
2011-06-03 21:13:37 +00:00
01492a93c6 trunk changes merged
[SVN r67922]
2011-01-10 19:36:38 +00:00
50703b8c97 Merge documentation fixes to release.
[SVN r66285]
2010-10-30 17:34:45 +00:00
0f8d556130 Merge r65004 from trunk
Fix #4551,#4553,#4575 by removing unused parameter.



[SVN r65168]
2010-09-01 16:18:07 +00:00
bbd3220a1e Merging changes from trunk
[SVN r63824]
2010-07-10 20:29:03 +00:00
9068069106 Spirit: merging from trunk upto rev. 61489
[SVN r63640]
2010-07-04 22:38:38 +00:00
a37af3c81e Merge documentation fixes.
* Use `doc/src/*.css` instead of `doc/html/*.css`.
* Remove wiki and people directories.
* Some documentation fixes.
* Left out `minimal.css` changes and boostbook changes because of clashes.


[SVN r63347]
2010-06-26 12:30:09 +00:00
f5885c6fb0 Merge minmax from the trunk
[SVN r62088]
2010-05-18 17:53:36 +00:00
d45bb3545e Merge some link fixes and release notes.
[SVN r61474]
2010-04-21 23:00:35 +00:00
d735b9fa1e rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
62ec675581 Merged changes from trunk
[SVN r56176]
2009-09-13 19:10:55 +00:00
e7cd4da67b Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
6076f5a18e Merge [53520] from the trunk
[SVN r53909]
2009-06-14 22:56:08 +00:00
60cd5a0500 Merge [53062] from the trunk
[SVN r53270]
2009-05-26 01:17:07 +00:00
c33dad924d Fixed almost all tab and min/max issues found by inspect tool
[SVN r53142]
2009-05-20 19:41:20 +00:00
2f2935f07e Merged revisions 45283,48266 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r45283 | danieljames | 2008-05-11 14:49:20 +0100 (Sun, 11 May 2008) | 1 line
  
  Quote href values - our tools don't support unquoted values.
........
  r48266 | danieljames | 2008-08-20 20:32:23 +0100 (Wed, 20 Aug 2008) | 1 line
  
  Fix the link to the limits documentation.
........


[SVN r51902]
2009-03-22 17:30:02 +00:00
3cbaafc27f Merge PDF build changes from Trunk.
[SVN r51417]
2009-02-23 18:39:32 +00:00
c067b348bf Merge [51045] from the trunk
[SVN r51226]
2009-02-12 18:47:06 +00:00
c33935fa1f merge of cmake build files from trunk per beman
[SVN r50756]
2009-01-24 18:57:20 +00:00
98a8b08afb Memory management fixes for is_any_of predicate merged from the trunk
[SVN r49172]
2008-10-07 21:59:57 +00:00
fc0f3dcffc Cummulative merge of updates from the main trunk
[SVN r46505]
2008-06-19 12:07:24 +00:00
822636418b Merged revisions 43211,43214-43219,43222-43225,43227-43238,43242,43244-43245,43249-43250,43257-43259,43261,43263,43265,43267-43268,43270-43271,43273,43275-43279,43284-43289,43291,43295,43297-43298,43304-43305,43307,43313,43315,43324,43326-43327,43331,43333,43339-43343,43345,43348,43350,43352-43353,43355-43356,43358,43360,43366-43367,43369-43370,43372-43376,43378-43389,43394,43396-43398,43400-43401,43403-43404,43406-43408,43413-43415,43417-43418,43420,43422-43423 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r43417 | danieljames | 2008-02-26 22:04:55 +0000 (Tue, 26 Feb 2008) | 2 lines
  
  Fix a link to Boost.Bimap.
........
  r43418 | danieljames | 2008-02-26 22:07:25 +0000 (Tue, 26 Feb 2008) | 2 lines
  
  Change another link that's no longer in the repository to link to the website.
........
  r43422 | danieljames | 2008-02-27 18:51:14 +0000 (Wed, 27 Feb 2008) | 1 line
  
  Fix broken copyright urls. Fixes #1573.
........
  r43423 | danieljames | 2008-02-27 19:22:01 +0000 (Wed, 27 Feb 2008) | 1 line
  
  Fix incorrect links to copyright of the form 'http:#www.boost.org
........


[SVN r43425]
2008-02-27 20:00:24 +00:00
352e16aade Merged revisions 43206,43208-43213 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r43206 | danieljames | 2008-02-10 09:55:03 +0000 (Sun, 10 Feb 2008) | 1 line
  
  Fix some broken links.
........
  r43209 | danieljames | 2008-02-10 14:56:22 +0000 (Sun, 10 Feb 2008) | 1 line
  
  Link to people pages on the website, as they've been removed from the download.
........
  r43210 | danieljames | 2008-02-10 15:02:17 +0000 (Sun, 10 Feb 2008) | 1 line
  
  Point links to the pages that used to be in 'more' to the site.
........
  r43212 | danieljames | 2008-02-10 16:10:16 +0000 (Sun, 10 Feb 2008) | 1 line
  
  Fix links on the home page as well.
........
  r43213 | danieljames | 2008-02-10 16:21:22 +0000 (Sun, 10 Feb 2008) | 1 line
  
  Generated documentation which is no longer generated.
........


[SVN r43214]
2008-02-10 16:39:38 +00:00
89c76ea1bb Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
2007-11-25 18:38:02 +00:00
50b5726a6f Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
d4b95734dd Starting point for releases
[SVN r39706]
2007-10-05 14:25:06 +00:00
05af96f84c This commit was manufactured by cvs2svn to create tag
'Version_1_34_1'.

[SVN r38286]
2007-07-24 19:28:14 +00:00
5bdbb2b308 Documentation for iter_find/iter_split added
[SVN r37842]
2007-06-01 13:50:51 +00:00
1a02969303 release notes - fix the incorrect functionname spelling
[SVN r37533]
2007-04-29 07:04:58 +00:00
6309379618 release notes for 1.34 added
[SVN r37532]
2007-04-29 07:02:21 +00:00
37581bac55 documentation typo fixed
[SVN r36843]
2007-01-30 07:59:28 +00:00
a71a4ed5b1 Merged copyright and license addition
[SVN r35907]
2006-11-07 19:27:00 +00:00
c509c3fbad Remove obsolete Boost.Build v1 files.
[SVN r35880]
2006-11-06 17:10:46 +00:00
d8683f2498 unused parameters removed
[SVN r35753]
2006-10-27 17:37:37 +00:00
7c0101aa51 Copyright added to index.html
unneeded file removed


[SVN r34908]
2006-08-20 20:14:48 +00:00
6f3e85528f License added to the xml documentation files
[SVN r34894]
2006-08-16 07:10:48 +00:00
8af639b7cf missing 'using' directives for join_if and join_if_regex added
missing #include <boost/algorithm/string/join.hpp> added to string_algo.hpp


[SVN r34122]
2006-05-30 19:13:08 +00:00
d9bc7e800b Merged patch from main trunk for borland by Nicola Musatti
[SVN r33723]
2006-04-17 17:16:11 +00:00
b4ed9beb90 This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r33417]
2006-03-21 02:26:31 +00:00
24 changed files with 115 additions and 187 deletions

11
Jamfile Normal file
View File

@ -0,0 +1,11 @@
# 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 ;

View File

@ -1,42 +0,0 @@
# 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
;

View File

@ -18,11 +18,11 @@ using boostbook ;
doxygen autodoc doxygen autodoc
: :
[ glob ../include/boost/algorithm/*.hpp [ glob ../../../boost/algorithm/*.hpp
../include/boost/algorithm/searching/*.hpp ../../../boost/algorithm/searching/*.hpp
../include/boost/algorithm/cxx11/*.hpp ../../../boost/algorithm/cxx11/*.hpp
../include/boost/algorithm/cxx14/*.hpp ../../../boost/algorithm/cxx14/*.hpp
../include/boost/algorithm/cxx17/*.hpp ../../../boost/algorithm/cxx17/*.hpp
] ]
: :
<doxygen:param>"PREDEFINED=\"BOOST_ALGORITHM_DOXYGEN=1\"" <doxygen:param>"PREDEFINED=\"BOOST_ALGORITHM_DOXYGEN=1\""

View File

@ -8,9 +8,9 @@
# See http://www.boost.org for updates, documentation, and revision history. # See http://www.boost.org for updates, documentation, and revision history.
project project /boost/algorithm/example
: requirements : requirements
<library>/boost/algorithm//boost_algorithm <include>../../../
<optimization>speed <optimization>speed
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
<toolset>msvc:<define>NOMINMAX <toolset>msvc:<define>NOMINMAX

View File

@ -1,4 +1,4 @@
/* /*
Copyright 2008 Adobe Systems Incorporated Copyright 2008 Adobe Systems Incorporated
Distributed under the Boost Software License, Version 1.0. (See accompanying Distributed under the Boost Software License, Version 1.0. (See accompanying
@ -84,7 +84,7 @@ namespace boost { namespace algorithm {
template < template <
typename BidirectionalIterator, // models BidirectionalIterator typename BidirectionalIterator, // models BidirectionalIterator
typename Pred> // models UnaryPredicate typename Pred> // models UnaryPredicate
std::pair<BidirectionalIterator, BidirectionalIterator> gather std::pair<BidirectionalIterator, BidirectionalIterator> gather
( BidirectionalIterator first, BidirectionalIterator last, BidirectionalIterator pivot, Pred pred ) ( BidirectionalIterator first, BidirectionalIterator last, BidirectionalIterator pivot, Pred pred )
{ {
// The first call partitions everything up to (but not including) the pivot element, // The first call partitions everything up to (but not including) the pivot element,
@ -106,11 +106,11 @@ template <
typename BidirectionalRange, // typename BidirectionalRange, //
typename Pred> // Pred models UnaryPredicate typename Pred> // Pred models UnaryPredicate
std::pair< std::pair<
typename boost::range_iterator<BidirectionalRange>::type, typename boost::range_iterator<const BidirectionalRange>::type,
typename boost::range_iterator<BidirectionalRange>::type> typename boost::range_iterator<const BidirectionalRange>::type>
gather ( gather (
BidirectionalRange &range, const BidirectionalRange &range,
typename boost::range_iterator<BidirectionalRange>::type pivot, typename boost::range_iterator<const BidirectionalRange>::type pivot,
Pred pred ) Pred pred )
{ {
return boost::algorithm::gather ( boost::begin ( range ), boost::end ( range ), pivot, pred ); return boost::algorithm::gather ( boost::begin ( range ), boost::end ( range ), pivot, pred );

View File

@ -10,7 +10,6 @@
#ifndef BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP #ifndef BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP
#define BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP #define BOOST_ALGORITHM_BOYER_MOORE_SEARCH_HPP
#include <algorithm> // for std::reverse_copy
#include <iterator> // for std::iterator_traits #include <iterator> // for std::iterator_traits
#include <boost/config.hpp> #include <boost/config.hpp>

View File

@ -85,22 +85,6 @@ namespace boost {
return detail::is_classifiedF(std::ctype_base::alpha, Loc); 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 //! is_cntrl predicate
/*! /*!
Construct the \c is_classified predicate for the \c ctype_base::cntrl category. Construct the \c is_classified predicate for the \c ctype_base::cntrl category.
@ -310,9 +294,6 @@ namespace boost {
// pull names to the boost namespace // pull names to the boost namespace
using algorithm::is_classified; using algorithm::is_classified;
using algorithm::is_space; using algorithm::is_space;
#ifndef BOOST_NO_CXX11
using algorithm::is_blank;
#endif
using algorithm::is_alnum; using algorithm::is_alnum;
using algorithm::is_alpha; using algorithm::is_alpha;
using algorithm::is_cntrl; using algorithm::is_cntrl;

View File

@ -108,6 +108,7 @@ namespace boost {
\param Input An input sequence \param Input An input sequence
\param Loc A locale used for 'space' classification \param Loc A locale used for 'space' classification
\return A trimmed copy of the input
*/ */
template<typename SequenceT> template<typename SequenceT>
inline void trim_all(SequenceT& Input, const std::locale& Loc =std::locale()) inline void trim_all(SequenceT& Input, const std::locale& Loc =std::locale())
@ -190,6 +191,7 @@ namespace boost {
\param Input An input sequence \param Input An input sequence
\param Fill A string used to fill the inner spaces \param Fill A string used to fill the inner spaces
\param Loc A locale used for 'space' classification \param Loc A locale used for 'space' classification
\return A trimmed copy of the input
*/ */
template<typename SequenceT, typename RangeT> template<typename SequenceT, typename RangeT>
inline void trim_fill(SequenceT& Input, const RangeT& Fill, const std::locale& Loc =std::locale()) inline void trim_fill(SequenceT& Input, const RangeT& Fill, const std::locale& Loc =std::locale())

View File

@ -7,11 +7,6 @@
# http://www.boost.org/LICENSE_1_0.txt) # 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_ex : minmax_ex.cpp ;
exe minmax_timer : minmax_timer.cpp ; exe minmax_timer : minmax_timer.cpp ;

View File

@ -15,10 +15,8 @@
// What's the proper BOOST_ flag for <iomanip.h> vs <ios> // What's the proper BOOST_ flag for <iomanip.h> vs <ios>
#include <iomanip> #include <iomanip>
#include <boost/timer.hpp>
#include <boost/algorithm/minmax.hpp> #include <boost/algorithm/minmax.hpp>
#include <boost/algorithm/minmax_element.hpp>
#include <boost/iterator/filter_iterator.hpp>
#include <boost/timer/timer.hpp>
template <class T1, class T2> template <class T1, class T2>
void tie(std::pair<T1, T2> p, T1& min, T2& max) void tie(std::pair<T1, T2> p, T1& min, T2& max)
@ -58,19 +56,17 @@ inline int opt_boost_minmax_count(int n) {
int repeats = 10; int repeats = 10;
#define TIMER( n, cmd , cmdname ) \ #define TIMER( n, cmd , cmdname ) \
t.start(); \ t.restart(); \
for (int i=0; i<n*repeats; ++i) { cmd ; } \ for (int i=0; i<repeats; ++i) { cmd ; } \
t.stop(); \
std::cout << " " << std::setprecision(4) \ std::cout << " " << std::setprecision(4) \
<< 1e3 * (double)(n*repeats) / (double)t.elapsed().wall \ << (double)n*repeats/t.elapsed()/1.0E6 \
<< "M items/sec " << cmdname << "\n" << "M items/sec " << cmdname << "\n"
#define CTIMER( n, cmd , cmdname, count, opt ) \ #define CTIMER( n, cmd , cmdname, count, opt ) \
t.start(); lc.reset(); \ t.restart(); lc.reset(); \
for (int i=0; i<n*repeats; ++i) { cmd ; } \ for (int i=0; i<repeats; ++i) { cmd ; } \
t.stop(); \
std::cout << " " << std::setprecision(4) \ std::cout << " " << std::setprecision(4) \
<< 1e3 * (double)(n*repeats) / (double)t.elapsed().wall \ << (double)n*repeats/t.elapsed()/1.0E6 \
<< "M items/sec " << cmdname \ << "M items/sec " << cmdname \
<< " ("<< (count)/repeats << " vs " << opt << ")\n" << " ("<< (count)/repeats << " vs " << opt << ")\n"
@ -78,7 +74,7 @@ template <class CIterator>
void test_minmax_element(CIterator first, CIterator last, int n, char* name) void test_minmax_element(CIterator first, CIterator last, int n, char* name)
{ {
typedef typename std::iterator_traits<CIterator>::value_type vtype; typedef typename std::iterator_traits<CIterator>::value_type vtype;
boost::timer::cpu_timer t; boost::timer t;
std::cout << " ON " << name << " WITH OPERATOR<()\n"; std::cout << " ON " << name << " WITH OPERATOR<()\n";
TIMER( n, std::min_element(first, last), TIMER( n, std::min_element(first, last),
@ -103,11 +99,15 @@ void test_minmax_element(CIterator first, CIterator last, int n, char* name)
"boost::last_min_last_max_element" << name << " "); "boost::last_min_last_max_element" << name << " ");
#define pred std::bind2nd( std::greater<vtype>(), vtype(10) ) #define pred std::bind2nd( std::greater<vtype>(), vtype(10) )
TIMER( n, std::min_element(boost::make_filter_iterator(pred, first, last), TIMER( n, boost::min_element_if(first, last, pred),
boost::make_filter_iterator(pred, last, last)), "boost::min_element_if" << name << "");
TIMER( n, boost::max_element_if(first, last, pred),
"boost::max_element_if" << name << "");
TIMER( n, std::min_element(boost::make_filter_iterator(first, last, pred),
boost::make_filter_iterator(last, last, pred)),
"std::min_element_with_filter_iterator" << name << ""); "std::min_element_with_filter_iterator" << name << "");
TIMER( n, std::max_element(boost::make_filter_iterator(pred, first, last), TIMER( n, std::max_element(boost::make_filter_iterator(first, last, pred),
boost::make_filter_iterator(pred, last, last)), boost::make_filter_iterator(last, last, pred)),
"std::max_element_if_with_filter_iterator" << name << ""); "std::max_element_if_with_filter_iterator" << name << "");
#undef pred #undef pred
@ -199,9 +199,10 @@ void test(int n)
test_range(first, last, n); test_range(first, last, n);
} }
int main(int argc, char** argv) int
main(char argc, char** argv)
{ {
int n = 1000; int n = 100;
if (argc > 1) n = atoi(argv[1]); if (argc > 1) n = atoi(argv[1]);
if (argc > 2) repeats = atoi(argv[2]); if (argc > 2) repeats = atoi(argv[2]);

View File

@ -9,19 +9,17 @@
import testing ; import testing ;
project : requirements <library>/boost/algorithm//boost_algorithm ;
alias unit_test_framework alias unit_test_framework
: # sources : # sources
/boost/test//boost_unit_test_framework /boost//unit_test_framework
; ;
{ {
test-suite algorithm/minmax test-suite algorithm/minmax
: [ run minmax_element_test.cpp unit_test_framework : [ run minmax_element_test.cpp unit_test_framework
: : : : minmax_element ] : : : : minmax_element ]
[ run minmax_test.cpp unit_test_framework [ run minmax_test.cpp unit_test_framework
: : : : minmax ] : : : : minmax ]
; ;
} }

View File

@ -10,40 +10,40 @@
import toolset ; import toolset ;
toolset.using doxygen ; toolset.using doxygen ;
boostbook string_algo : string_algo.xml autodoc boostbook string_algo : string_algo.xml autodoc
: :
<xsl:param>boost.root=../../../../.. <xsl:param>boost.root=../../../../..
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
; ;
doxygen autodoc doxygen autodoc
: :
[ glob ../../include/boost/algorithm/string.hpp ] [ glob ../../../../boost/algorithm/string.hpp ]
[ glob ../../include/boost/algorithm/string_regex.hpp ] [ glob ../../../../boost/algorithm/string_regex.hpp ]
[ glob ../../include/boost/algorithm/string/classification.hpp ] [ glob ../../../../boost/algorithm/string/classification.hpp ]
[ glob ../../include/boost/algorithm/string/iterator_range.hpp ] [ glob ../../../../boost/algorithm/string/iterator_range.hpp ]
[ glob ../../include/boost/algorithm/string/sequence_traits.hpp ] [ glob ../../../../boost/algorithm/string/sequence_traits.hpp ]
[ glob ../../include/boost/algorithm/string/std_containers_traits.hpp ] [ glob ../../../../boost/algorithm/string/std_containers_traits.hpp ]
[ glob ../../include/boost/algorithm/string/concept.hpp ] [ glob ../../../../boost/algorithm/string/concept.hpp ]
[ glob ../../include/boost/algorithm/string/compare.hpp ] [ glob ../../../../boost/algorithm/string/compare.hpp ]
[ glob ../../include/boost/algorithm/string/constants.hpp ] [ glob ../../../../boost/algorithm/string/constants.hpp ]
[ glob ../../include/boost/algorithm/string/case_conv.hpp ] [ glob ../../../../boost/algorithm/string/case_conv.hpp ]
[ glob ../../include/boost/algorithm/string/find.hpp ] [ glob ../../../../boost/algorithm/string/find.hpp ]
[ glob ../../include/boost/algorithm/string/finder.hpp ] [ glob ../../../../boost/algorithm/string/finder.hpp ]
[ glob ../../include/boost/algorithm/string/find_iterator.hpp ] [ glob ../../../../boost/algorithm/string/find_iterator.hpp ]
[ glob ../../include/boost/algorithm/string/trim.hpp ] [ glob ../../../../boost/algorithm/string/trim.hpp ]
[ glob ../../include/boost/algorithm/string/predicate.hpp ] [ glob ../../../../boost/algorithm/string/predicate.hpp ]
[ glob ../../include/boost/algorithm/string/split.hpp ] [ glob ../../../../boost/algorithm/string/split.hpp ]
[ glob ../../include/boost/algorithm/string/iter_find.hpp ] [ glob ../../../../boost/algorithm/string/iter_find.hpp ]
[ glob ../../include/boost/algorithm/string/erase.hpp ] [ glob ../../../../boost/algorithm/string/erase.hpp ]
[ glob ../../include/boost/algorithm/string/join.hpp ] [ glob ../../../../boost/algorithm/string/join.hpp ]
[ glob ../../include/boost/algorithm/string/replace.hpp ] [ glob ../../../../boost/algorithm/string/replace.hpp ]
[ glob ../../include/boost/algorithm/string/find_format.hpp ] [ glob ../../../../boost/algorithm/string/find_format.hpp ]
[ glob ../../include/boost/algorithm/string/formatter.hpp ] [ glob ../../../../boost/algorithm/string/formatter.hpp ]
[ glob ../../include/boost/algorithm/string/regex.hpp ] [ glob ../../../../boost/algorithm/string/regex.hpp ]
[ glob ../../include/boost/algorithm/string/regex_find_format.hpp ] [ glob ../../../../boost/algorithm/string/regex_find_format.hpp ]
[ glob ../../include/boost/algorithm/string/trim_all.hpp ] [ glob ../../../../boost/algorithm/string/trim_all.hpp ]
: :
<doxygen:param>HIDE_UNDOC_MEMBERS=YES <doxygen:param>HIDE_UNDOC_MEMBERS=YES
<doxygen:param>EXTRACT_PRIVATE=NO <doxygen:param>EXTRACT_PRIVATE=NO
@ -53,7 +53,7 @@ doxygen autodoc
<doxygen:param>SEARCH_INCLUDES=YES <doxygen:param>SEARCH_INCLUDES=YES
<doxygen:param>PREDEFINED="BOOST_STRING_TYPENAME=typename \"BOOST_STATIC_CONSTANT(type,var)=static const type var;\"" <doxygen:param>PREDEFINED="BOOST_STRING_TYPENAME=typename \"BOOST_STATIC_CONSTANT(type,var)=static const type var;\""
; ;

View File

@ -667,13 +667,6 @@
<functionname>is_space()</functionname> <functionname>is_space()</functionname>
</entry> </entry>
</row> </row>
<row>
<entry>is_blank</entry>
<entry>Recognize blanks</entry>
<entry>
<functionname>is_blank()</functionname>
</entry>
</row>
<row> <row>
<entry>is_alnum</entry> <entry>is_alnum</entry>
<entry>Recognize alphanumeric characters</entry> <entry>Recognize alphanumeric characters</entry>

View File

@ -7,7 +7,6 @@
# #
# See http://www.boost.org for updates, documentation, and revision history. # 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 conv_example : conv_example.cpp ;
exe predicate_example : predicate_example.cpp ; exe predicate_example : predicate_example.cpp ;

View File

@ -9,33 +9,31 @@
import testing ; import testing ;
project : requirements <library>/boost/algorithm//boost_algorithm ;
alias unit_test_framework alias unit_test_framework
: # sources : # sources
/boost/test//boost_unit_test_framework /boost//unit_test_framework
; ;
test-suite algorithm/string test-suite algorithm/string
: [ run : [ run
trim_test.cpp unit_test_framework trim_test.cpp unit_test_framework
: : : :
: :
: trim : trim
] ]
[ run [ run
conv_test.cpp unit_test_framework conv_test.cpp unit_test_framework
: : : :
: :
: conv : conv
] ]
[ run [ run
predicate_test.cpp unit_test_framework predicate_test.cpp unit_test_framework
: : : :
: :
: predicate : predicate
] ]
[ run [ run
find_test.cpp unit_test_framework find_test.cpp unit_test_framework
: : : :
: :
@ -53,23 +51,23 @@ test-suite algorithm/string
: :
: join : join
] ]
[ run [ run
replace_test.cpp unit_test_framework replace_test.cpp unit_test_framework
: : : :
: :
: replace : replace
] ]
[ run [ run
regex_test.cpp unit_test_framework regex_test.cpp unit_test_framework
../../../regex/build//boost_regex ../../../regex/build//boost_regex
: : : :
: :
: regex : regex
] ]
[ run [ run
find_format_test.cpp unit_test_framework find_format_test.cpp unit_test_framework
: : : :
: :
: find_format : find_format
] ]
; ;

View File

@ -138,12 +138,7 @@ void classification_test()
TEST_CLASS( is_any_of( string("abc") ), "aaabbcc", "aaxb" ); TEST_CLASS( is_any_of( string("abc") ), "aaabbcc", "aaxb" );
TEST_CLASS( is_any_of( "abc" ), "aaabbcc", "aaxb" ); TEST_CLASS( is_any_of( "abc" ), "aaabbcc", "aaxb" );
TEST_CLASS( is_from_range( 'a', 'c' ), "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_classified(std::ctype_base::space), "...", "..\n\r\t " );
TEST_CLASS( ( !is_any_of("abc") && is_from_range('a','e') ) || is_space(), "d e", "abcde" ); TEST_CLASS( ( !is_any_of("abc") && is_from_range('a','e') ) || is_space(), "d e", "abcde" );

View File

@ -9,11 +9,9 @@
import testing ; import testing ;
project : requirements <library>/boost/algorithm//boost_algorithm ;
alias unit_test_framework alias unit_test_framework
: # sources : # sources
/boost/test//boost_unit_test_framework /boost//unit_test_framework
; ;
@ -87,7 +85,7 @@ alias unit_test_framework
# Is_partitioned_until tests # Is_partitioned_until tests
[ run is_partitioned_until_test.cpp unit_test_framework : : : : is_partitioned_until_test ] [ run is_partitioned_until_test.cpp unit_test_framework : : : : is_partitioned_until_test ]
# Apply_permutation tests # Apply_permutation tests
[ run apply_permutation_test.cpp unit_test_framework : : : : apply_permutation_test ] [ run apply_permutation_test.cpp unit_test_framework : : : : apply_permutation_test ]
# Find tests # Find tests

View File

@ -28,8 +28,8 @@
namespace ba = boost::algorithm; namespace ba = boost::algorithm;
// namespace ba = boost; // namespace ba = boost;
BOOST_CXX14_CONSTEXPR bool is_true ( int ) { return true; } BOOST_CXX14_CONSTEXPR bool is_true ( int v ) { return true; }
BOOST_CXX14_CONSTEXPR bool is_false ( int ) { return false; } BOOST_CXX14_CONSTEXPR bool is_false ( int v ) { return false; }
BOOST_CXX14_CONSTEXPR bool is_even ( int v ) { return v % 2 == 0; } 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_odd ( int v ) { return v % 2 == 1; }
BOOST_CXX14_CONSTEXPR bool is_zero ( int v ) { return v == 0; } BOOST_CXX14_CONSTEXPR bool is_zero ( int v ) { return v == 0; }

View File

@ -25,7 +25,7 @@ void test_short_input1 () {
std::string s; std::string s;
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
catch ( const std::exception & ) { return; } catch ( const std::exception &ex ) { return; }
BOOST_TEST_MESSAGE ( "Failed to catch std::exception in test_short_input1" ); BOOST_TEST_MESSAGE ( "Failed to catch std::exception in test_short_input1" );
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }
@ -34,7 +34,7 @@ void test_short_input2 () {
std::string s; std::string s;
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
catch ( const ba::hex_decode_error & ) { return; } catch ( const ba::hex_decode_error &ex ) { return; }
BOOST_TEST_MESSAGE ( "Failed to catch ba::hex_decode_error in test_short_input2" ); BOOST_TEST_MESSAGE ( "Failed to catch ba::hex_decode_error in test_short_input2" );
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }
@ -43,7 +43,7 @@ void test_short_input3 () {
std::string s; std::string s;
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
catch ( const ba::not_enough_input & ) { return; } catch ( const ba::not_enough_input &ex ) { return; }
BOOST_TEST_MESSAGE ( "Failed to catch ba::not_enough_input in test_short_input3" ); BOOST_TEST_MESSAGE ( "Failed to catch ba::not_enough_input in test_short_input3" );
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }
@ -53,8 +53,8 @@ void test_short_input4 () {
std::string s; std::string s;
try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); }
catch ( const ba::non_hex_input & ) { BOOST_CHECK ( false ); } catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); }
catch ( const ba::not_enough_input & ) { return; } catch ( const ba::not_enough_input &ex ) { return; }
catch ( ... ) { BOOST_CHECK ( false ); } catch ( ... ) { BOOST_CHECK ( false ); }
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }
@ -64,8 +64,8 @@ void test_short_input5 () {
std::string s; std::string s;
try { ba::unhex ( "A", std::back_inserter(s)); } try { ba::unhex ( "A", std::back_inserter(s)); }
catch ( const ba::non_hex_input & ) { BOOST_CHECK ( false ); } catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); }
catch ( const ba::not_enough_input & ) { return; } catch ( const ba::not_enough_input &ex ) { return; }
catch ( ... ) { BOOST_CHECK ( false ); } catch ( ... ) { BOOST_CHECK ( false ); }
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }
@ -125,8 +125,8 @@ void test_nonhex_input4 () {
std::string s; std::string s;
try { ba::unhex ( "P1234FA1234", std::back_inserter(s)); } try { ba::unhex ( "P1234FA1234", std::back_inserter(s)); }
catch ( const ba::not_enough_input & ) { BOOST_CHECK ( false ); } catch ( const ba::not_enough_input &ex ) { BOOST_CHECK ( false ); }
catch ( const ba::non_hex_input & ) { return; } catch ( const ba::non_hex_input &ex ) { return; }
catch ( ... ) { BOOST_CHECK ( false ); } catch ( ... ) { BOOST_CHECK ( false ); }
BOOST_CHECK ( false ); BOOST_CHECK ( false );
} }

View File

@ -112,7 +112,7 @@ void test_sequence1 () {
std::vector<int> v, v1; std::vector<int> v, v1;
v.clear (); v.clear ();
for ( int i = 5; i < 15; ++i ) for ( std::size_t i = 5; i < 15; ++i )
v.push_back ( i ); v.push_back ( i );
v1 = v; v1 = v;
BOOST_CHECK ( ba::is_permutation ( v.begin (), v.end (), v.begin ())); // better be a permutation of itself! BOOST_CHECK ( ba::is_permutation ( v.begin (), v.end (), v.begin ())); // better be a permutation of itself!

View File

@ -32,7 +32,7 @@ namespace {
// Check using iterators // Check using iterators
template<typename Container> template<typename Container>
void check_one_iter ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) { void check_one_iter ( const Container &haystack, const std::string &needle, int expected ) {
typedef typename Container::const_iterator iter_type; typedef typename Container::const_iterator iter_type;
typedef typename std::pair<iter_type, iter_type> ret_type; typedef typename std::pair<iter_type, iter_type> ret_type;
typedef std::string::const_iterator pattern_type; typedef std::string::const_iterator pattern_type;
@ -53,7 +53,7 @@ namespace {
// iter_type it1r = ret1r.first; // iter_type it1r = ret1r.first;
// iter_type it2 = ret2.first; // iter_type it2 = ret2.first;
// iter_type it3 = ret3.first; // iter_type it3 = ret3.first;
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first ); const int 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; std::cout << "(Iterators) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
try { try {
@ -97,7 +97,7 @@ namespace {
// Check using pointers // Check using pointers
// We're assuming that the container implements contiguous storage here. // We're assuming that the container implements contiguous storage here.
template<typename Container> template<typename Container>
void check_one_pointer ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) { void check_one_pointer ( const Container &haystack, const std::string &needle, int expected ) {
typedef const typename Container::value_type *ptr_type; typedef const typename Container::value_type *ptr_type;
typedef typename std::pair<ptr_type, ptr_type> ret_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 ret1 = ba::boyer_moore_search (hBeg, hEnd, nBeg, nEnd);
ret_type ret2 = ba::boyer_moore_horspool_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); ret_type ret3 = ba::knuth_morris_pratt_search (hBeg, hEnd, nBeg, nEnd);
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first ); const int 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; std::cout << "(Pointers) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
try { try {
@ -147,7 +147,7 @@ namespace {
// Check using objects // Check using objects
template<typename Container> template<typename Container>
void check_one_object ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) { void check_one_object ( const Container &haystack, const std::string &needle, int expected ) {
typedef typename Container::const_iterator iter_type; typedef typename Container::const_iterator iter_type;
typedef typename std::pair<iter_type, iter_type> ret_type; typedef typename std::pair<iter_type, iter_type> ret_type;
typedef std::string::const_iterator pattern_type; typedef std::string::const_iterator pattern_type;
@ -169,7 +169,7 @@ namespace {
ret_type retr1r = bm_r (haystack); ret_type retr1r = bm_r (haystack);
ret_type ret2 = bmh (hBeg, hEnd); ret_type ret2 = bmh (hBeg, hEnd);
ret_type ret3 = kmp (hBeg, hEnd); ret_type ret3 = kmp (hBeg, hEnd);
const std::ptrdiff_t dist = ret1.first == hEnd ? -1 : std::distance ( hBeg, ret1.first ); const int 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; std::cout << "(Objects) Pattern is " << needle.length () << ", haysstack is " << haystack.length () << " chars long; " << std::endl;
try { try {
@ -224,7 +224,7 @@ namespace {
template<typename Container> template<typename Container>
void check_one ( const Container &haystack, const std::string &needle, std::ptrdiff_t expected ) { void check_one ( const Container &haystack, const std::string &needle, int expected ) {
check_one_iter ( haystack, needle, expected ); check_one_iter ( haystack, needle, expected );
check_one_pointer ( haystack, needle, expected ); check_one_pointer ( haystack, needle, expected );
check_one_object ( haystack, needle, expected ); check_one_object ( haystack, needle, expected );

View File

@ -85,7 +85,7 @@ namespace {
std::cout << std::endl; std::cout << std::endl;
} }
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) { void check_one ( const vec &haystack, const vec &needle, int expected ) {
std::size_t i; std::size_t i;
std::clock_t sTime; std::clock_t sTime;
unsigned long stdDiff; unsigned long stdDiff;
@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE( test_main )
std::cout << "---- Middle -----" << std::endl; std::cout << "---- Middle -----" << std::endl;
check_one ( c1, p1f, -2 ); // Don't know answer check_one ( c1, p1f, -2 ); // Don't know answer
std::cout << "------ End ------" << std::endl; std::cout << "------ End ------" << std::endl;
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ())); check_one ( c1, p1e, c1.size() - p1e.size ());
std::cout << "--- Not found ---" << std::endl; std::cout << "--- Not found ---" << std::endl;
check_one ( c1, p1n, -1 ); // Not found check_one ( c1, p1n, -1 ); // Not found
} }

View File

@ -85,7 +85,7 @@ namespace {
std::cout << std::endl; std::cout << std::endl;
} }
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) { void check_one ( const vec &haystack, const vec &needle, int expected ) {
std::size_t i; std::size_t i;
std::clock_t sTime; std::clock_t sTime;
unsigned long stdDiff; unsigned long stdDiff;
@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE( test_main )
std::cout << "---- Middle -----" << std::endl; std::cout << "---- Middle -----" << std::endl;
check_one ( c1, p1f, -2 ); // Don't know answer check_one ( c1, p1f, -2 ); // Don't know answer
std::cout << "------ End ------" << std::endl; std::cout << "------ End ------" << std::endl;
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ())); check_one ( c1, p1e, c1.size() - p1e.size ());
std::cout << "--- Not found ---" << std::endl; std::cout << "--- Not found ---" << std::endl;
check_one ( c1, p1n, -1 ); // Not found check_one ( c1, p1n, -1 ); // Not found
} }

View File

@ -62,7 +62,7 @@ namespace {
return retVal; return retVal;
} }
void check_one ( const vec &haystack, const vec &needle, std::ptrdiff_t expected ) { void check_one ( const vec &haystack, const vec &needle, int expected ) {
std::pair<vec::const_iterator, vec::const_iterator> res; std::pair<vec::const_iterator, vec::const_iterator> res;
std::pair<vec::const_iterator, vec::const_iterator> exp; // the expected result 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; std::cout << "---- Middle -----" << std::endl;
check_one ( c1, p1f, -2 ); // Don't know answer check_one ( c1, p1f, -2 ); // Don't know answer
std::cout << "------ End ------" << std::endl; std::cout << "------ End ------" << std::endl;
check_one ( c1, p1e, static_cast<std::ptrdiff_t>(c1.size() - p1e.size ())); check_one ( c1, p1e, c1.size() - p1e.size ());
std::cout << "--- Not found ---" << std::endl; std::cout << "--- Not found ---" << std::endl;
check_one ( c1, p1n, -1 ); // Not found check_one ( c1, p1n, -1 ); // Not found
} }