mirror of
https://github.com/boostorg/algorithm.git
synced 2025-06-30 22:41:01 +02:00
Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
This commit is contained in:
12
minmax/example/Jamfile
Normal file
12
minmax/example/Jamfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# 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 ;
|
boostbook string_algo : string_algo.xml autodoc ;
|
||||||
|
|
||||||
doxygen autodoc
|
doxygen autodoc
|
||||||
:
|
:
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
(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,7 +7,6 @@
|
|||||||
(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,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)
|
||||||
|
@ -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)
|
||||||
|
38
string/doc/external_concepts.html
Normal file
38
string/doc/external_concepts.html
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<!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,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)
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
(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.boostbook"/>
|
<xi:include href="autodoc.xml"/>
|
||||||
<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,11 +2,13 @@
|
|||||||
<!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>
|
||||||
|
|
||||||
|
18
string/example/Jamfile
Normal file
18
string/example/Jamfile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# 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,9 +1,3 @@
|
|||||||
|
|
||||||
<!-- 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,6 +122,25 @@ 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