Compare commits

..

40 Commits

Author SHA1 Message Date
1ad2d60382 v2, v3, integration branch
[SVN r62649]
2010-06-09 11:34:33 +00:00
528cf2abb9 Some lookbehind assertions were accepted when they should not have been.
Fixes #4309.

[SVN r62563]
2010-06-08 12:41:41 +00:00
eaaf00a924 Fix bug in branch reset code.
[SVN r62478]
2010-06-06 12:38:26 +00:00
2e41f13526 Change regex to make use of new Boost.Config macros.
[SVN r62331]
2010-05-30 17:24:45 +00:00
e3dfbd0953 Fix allocator concept to match C++03 requirements in table 32.
[SVN r62120]
2010-05-21 16:20:15 +00:00
132c39a42c Update regex_match requirements.
Fixes #4215.

[SVN r61976]
2010-05-15 09:15:20 +00:00
05636b5c89 Fix numerous VC-10 compiler warnings.
Rewrite ICU configuration to use the new Boost.Build configuration logic.

[SVN r61893]
2010-05-10 12:13:49 +00:00
fa96f4edf1 Change "id" to "idx" to be Objective C++ compatible.
Fixes #2306.
Fixes #4132.
Fixes #4191.

[SVN r61789]
2010-05-05 17:40:07 +00:00
87d5fd1421 Fixed various issues in docs (mostly duplicate bookmarks and broken links) found by inspect tool
[SVN r61437]
2010-04-20 18:49:18 +00:00
a2142edcd3 Disambiguate between boost::ref and std:ref etc.
Suppress some new warnings from VC-10.
Fix singular iterator logic (fixes VC-10 failures).
Fixes #4114.
Fixes #3632

[SVN r61430]
2010-04-20 16:03:14 +00:00
67f5369cae Add support for Boost.Ref in match_results::format.
Update docs accordingly.
Fixes #4020.

[SVN r60678]
2010-03-17 18:20:09 +00:00
446604c734 Highlight the differences between \Z in Boost and Perl.
Regenerate docs.
Fixes #3899.

[SVN r59512]
2010-02-05 17:05:04 +00:00
f9db065c61 Fix typos in docs.
Fixes #3890.

[SVN r59425]
2010-02-02 12:44:32 +00:00
50892585d3 Remove dead code.
[SVN r59415]
2010-02-01 13:12:50 +00:00
d686c89333 Improve regex performance on msvc by removing statically allocated recursion stack, and using a std::vector instead.
[SVN r59414]
2010-02-01 13:10:28 +00:00
c8e56504d9 Suppress a few warnings.
[SVN r59275]
2010-01-27 13:17:51 +00:00
e1bd7c7a9b Change name of extern "C" function so it's prefixed with "boost_"
[SVN r58812]
2010-01-08 11:59:23 +00:00
4a826c1ade Speed up the code a little, and stop swapping stream buffers around in case that's the cause of some test failures.
[SVN r58789]
2010-01-07 16:47:02 +00:00
0e1e9804da Fix bug that effects recursive expressions combined with repeats.
[SVN r58722]
2010-01-05 18:04:08 +00:00
f7e16093de Update version history.
[SVN r58540]
2009-12-28 12:57:20 +00:00
c6f3a072e3 Update version numbers in makefiles.
[SVN r58539]
2009-12-28 11:54:52 +00:00
6f8773362e Improve recursion branch-prediction.
[SVN r58466]
2009-12-20 12:56:35 +00:00
ff4eaacbc4 Symbian patches.
Fixes #3764.
Fixes #3763.

[SVN r58342]
2009-12-13 11:40:28 +00:00
35c63fc141 Fix -Wshadow gcc warnings.
Update and regenerate docs.
Fixes #3718.

[SVN r58154]
2009-12-05 12:15:20 +00:00
a83329dd28 Allow std::locale's to not have a messages facet installed (fixes some STLPort issues).
Allow match_results to handle singular iterators.
Update docs to match.

[SVN r57860]
2009-11-23 10:45:44 +00:00
1f38675c1c Suppress MSVC warning message.
[SVN r57787]
2009-11-19 18:33:12 +00:00
97005c2017 Suppress external templates with Mingw32 - it seems to cause issues with dll's.
Fix match_results.swap.
Add missing namespace qualifiers to ICU code: fixes #3631.

[SVN r57739]
2009-11-18 09:59:42 +00:00
6e1f3dcceb Improved error messages generated for thrown exceptions.
Suppressed "gcc -Wall -Wextra -pedantic" and "msvc /W4" warnings.
Updated and rebuilt docs.


[SVN r57451]
2009-11-07 15:32:45 +00:00
898b49fa89 Fixes #3389.
Updated and regenerated docs.

[SVN r57254]
2009-10-30 18:45:41 +00:00
603e98d186 Fixes #3425.
[SVN r57252]
2009-10-30 18:15:55 +00:00
308c336700 Added support for function objects as well as strings when formatting.
Updated and regenerated docs.

[SVN r57250]
2009-10-30 17:25:12 +00:00
9188464e39 Tighten up error handling and checking.
[SVN r57133]
2009-10-24 15:51:57 +00:00
17ad2e9302 rm cmake from trunk. I'm not entirely sure this is necessary to satisfy the inspect script, but I'm not taking any chances, and it is easy to put back
[SVN r56942]
2009-10-17 02:07:38 +00:00
efd3e2e05c Changes relating to issue #3408.
Add hooks for the dcdflib to the incomplete gamma tests.
Add hooks for the dcdflib to the igamma performance tests.
Some small performance enhancements.

[SVN r56370]
2009-09-24 11:23:52 +00:00
6b4d144be9 Fix for old GCC versions with BOOST_REGEX_BUGGY_CTYPE_FACET defined.
[SVN r55837]
2009-08-28 16:07:13 +00:00
9f9ce59d57 Treat ICU_PATH relatively to current dir.
Also, fix another leading "/" bug.


[SVN r55756]
2009-08-24 09:34:08 +00:00
2686ab22a2 Don't add leading slash to every path.
[SVN r55731]
2009-08-23 15:50:50 +00:00
75b99d3a37 Suppress GCC warnings.
[SVN r55688]
2009-08-20 17:27:24 +00:00
bae1c80992 Force shared runtime if using ICU.
[SVN r55685]
2009-08-20 12:05:55 +00:00
e3ca2987e4 Apply patch from issue #3354.
Fixes #3354.

[SVN r55683]
2009-08-20 10:43:44 +00:00
78 changed files with 925 additions and 752 deletions

View File

@ -3,10 +3,6 @@
# (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.
project boost/regex
: source-location ../src
;
# #
# ICU configuration: # ICU configuration:
# #
@ -14,240 +10,35 @@ if [ modules.peek : ICU_PATH ]
{ {
ICU_PATH = [ modules.peek : ICU_PATH ] ; ICU_PATH = [ modules.peek : ICU_PATH ] ;
} }
if [ modules.peek : ICU_LINK ]
rule check-icu-config ( ) {
{ ICU_LINK = [ modules.peek : ICU_LINK ] ;
local HAVE_ICU = [ modules.peek : HAVE_ICU ] ;
local ICU_LINK = [ modules.peek : ICU_LINK ] ;
if ! $(gICU_CONFIG_CHECKED)
{
if $(HAVE_ICU) && ! $(ICU_PATH)
{
gHAS_ICU = true ;
gICU_CORE_LIB = icuuc ;
gICU_IN_LIB = icui18n ;
gICU_DATA_LIB = icudata ;
gICU_CONFIG_CHECKED = true ;
}
else if $(ICU_PATH)
{
dir = $(ICU_PATH) ;
if [ GLOB $(dir)/include/unicode : utypes.h ]
{
gHAS_ICU = true ;
# try and find ICU libraries, look for NT versions first:
if $(ICU_LINK)
{
gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib64 : icuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(dir)/lib : icuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(dir)/lib : libicuuc.* ]
{
gICU_CORE_LIB = icuuc ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicuuc*.dll ]
{
gICU_CORE_LIB = cygicuuc.dll ;
gICU_CYGWIN = true ;
}
else
{
ECHO warning: ICU shared common library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicuuc ... ;
gICU_CORE_LIB = icuuc ;
}
if $(ICU_LINK)
{
# nothing to do, it's already been done!
# gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib : icuin.* ]
{
gICU_IN_LIB = icuin ;
}
else if [ GLOB $(dir)/lib : icui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(dir)/lib64 : libicui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(dir)/lib : libicui18n.* ]
{
gICU_IN_LIB = icui18n ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicuin*.dll ]
{
gICU_IN_LIB = cygicuin.dll ;
gICU_CYGWIN = true ;
}
else
{
ECHO warning: ICU shared i18n library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicui18n ... ;
gICU_IN_LIB = icui18n ;
}
#Added by Tommy Nordgren - libicudata muct be linked against on Mac OS X
if $(ICU_LINK)
{
# nothing to do, it's already been done!
# gICU_LIBS += <linkflags>$(ICU_LINK) ;
}
else if [ GLOB $(dir)/lib64 : icudt.* ]
{
gICU_DATA_LIB = icudt ;
}
else if [ GLOB $(dir)/lib : icudt.* ]
{
gICU_DATA_LIB = icudt ;
}
else if [ GLOB $(dir)/lib : libicudata.* ]
{
gICU_DATA_LIB = icudata ;
}
else if [ GLOB $(ICU_PATH)/lib : cygicudt*.dll ]
{
gICU_DATA_LIB = cygicudt.dll ;
gICU_CYGWIN = true ;
}
else
{
local os = [ modules.peek : OS ] ;
echo $(os) ;
if $(os) != "DARWIN"
{
ECHO warning: ICU shared data library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
}
else
{
ECHO warning: ICU shared data library not found in path. ;
ECHO hint: If the regex library fails to link then try again ;
ECHO with the environment variable ICU_LINK set to contain ;
ECHO the linker options required to link to ICU. ;
ECHO Defaulting to look for libicudata ... ;
gICU_DATA_LIB = icudata ;
}
}
#End of addition by Tommy Nordgren
}
}
gICU_CONFIG_CHECKED = true ;
}
if $(gHAS_ICU)
{
message icu_config ;
message icu_config2
: Note: Building Boost.Regex with Unicode/ICU support enabled
: " Using ICU in " $(ICU_PATH:J=" ")/include ;
return true ;
}
else
{
message icu_config
: "warning: Building Boost.Regex with the optional Unicode/ICU support disabled."
: "note: Please refer to the Boost.Regex documentation for more information"
: "note: this is a strictly optional feature." ;
if $(ICU_PATH)
{
message icu_config2
: warning! ICU configuration failed
: " Couldn't find utypes.h in " $(ICU_PATH:J=" ")/include/unicode ;
}
else
{
message icu_config2 ;
}
}
} }
explicit icu_config ; if $(ICU_LINK)
explicit icu_config2 ;
if [ check-icu-config ]
{ {
if $(gHAS_ICU) ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
{
BOOST_REGEX_ICU_OPTS = "<target-os>freebsd:<include>/usr/local/include" ;
ICU_SEARCH_OPTS = "<target-os>freebsd:<search>$(ICU_PATH)/lib" ;
BOOST_REGEX_ICU_OPTS += "<define>BOOST_HAS_ICU=1" ;
BOOST_REGEX_ICU_OPTS += "$(gICU_LIBS)" ;
if $(ICU_PATH)
{
# If ICU_PATH is specified on the command line, then it's
# relative to the current directory, while paths specified
# in a Jamfile are relative to that Jamfile. So, to
# avoid confusing the user if he's not running from
# libs/regex/build, explicitly root this.
ICU_PATH = [ path.native
[ path.root [ path.make $(ICU_PATH) ] [ path.pwd ] ] ] ;
if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local"
{
BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ;
ICU_SEARCH_OPTS = <search>$(ICU_PATH)/lib ;
}
}
if $(gICU_CYGWIN)
{
if $(gICU_CORE_LIB)
{
BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_CORE_LIB) ;
}
if $(gICU_IN_LIB)
{
BOOST_REGEX_ICU_OPTS += "<linkflags>$(gICU_IN_LIB) ;
}
}
else
{
if $(gICU_CORE_LIB)
{
lib icucore : : <name>$(gICU_CORE_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE = icucore ;
explicit icucore ;
}
if $(gICU_IN_LIB)
{
lib icuin : : <name>$(gICU_IN_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE += icuin ;
explicit icuin ;
}
#Added by Tommy Nordgren libicudata must be linked against on Mac OS X
if $(gICU_DATA_LIB)
{
lib icudata : : <name>$(gICU_DATA_LIB) $(ICU_SEARCH_OPTS) <link>shared ;
ICU_EXTRA_SOURCE += icudata ;
explicit icudata ;
}
#End of addition by Tommy Nordgren
}
}
} }
else
{
lib icuuc : : <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuuc : : <toolset>msvc <variant>debug <name>icuucd <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuuc : : <name>this_is_an_invalid_library_name ;
lib icudt : : <search>$(ICU_PATH)/lib <name>icudata <link>shared <runtime-link>shared ;
lib icudt : : <search>$(ICU_PATH)/lib <name>icudt <toolset>msvc <link>shared <runtime-link>shared ;
lib icudt : : <name>this_is_an_invalid_library_name ;
lib icuin : : <search>$(ICU_PATH)/lib <name>icui18n <link>shared <runtime-link>shared ;
lib icuin : : <toolset>msvc <variant>debug <name>icuind <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuin : : <toolset>msvc <variant>release <name>icuin <search>$(ICU_PATH)/lib <link>shared <runtime-link>shared ;
lib icuin : : <name>this_is_an_invalid_library_name ;
ICU_OPTS = <include>$(ICU_PATH)/include <library>icuuc/<link>shared/<runtime-link>shared <library>icudt/<link>shared/<runtime-link>shared <library>icuin/<link>shared/<runtime-link>shared <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
}
exe has_icu : ./has_icu_test.cpp : $(ICU_OPTS) ;
explicit has_icu ;
alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;
SOURCES = SOURCES =
c_regex_traits.cpp c_regex_traits.cpp
@ -269,59 +60,13 @@ SOURCES =
usinstances.cpp ; usinstances.cpp ;
lib boost_regex : ../src/$(SOURCES) $(ICU_EXTRA_SOURCE) icu_config2 icu_config lib boost_regex : ../src/$(SOURCES) icu_options
: :
#<link>static:<define>BOOST_REGEX_NO_LIB=1
#<link>static:<define>BOOST_REGEX_STATIC_LINK=1
<link>shared:<define>BOOST_REGEX_DYN_LINK=1 <link>shared:<define>BOOST_REGEX_DYN_LINK=1
<toolset>gcc-mw:<link>static <toolset>gcc-mw:<link>static
<toolset>gcc-mingw:<link>static <toolset>gcc-mingw:<link>static
<toolset>gcc-cygwin:<link>static <toolset>gcc-cygwin:<link>static
$(BOOST_REGEX_ICU_OPTS)
<conditional>@force-shared-linking
; ;
shared-linking-warning-emitted = ;
# The ICU is shipped as shared libraries with dynamic runtime.
# If Boost.Regex is built against static runtime, the combination
# will not work. The below rule forces shared runtime, and
# prints an explanation.
rule force-shared-linking ( properties * )
{
if $(gHAS_ICU)
{
if <runtime-link>static in $(properties)
{
if ! $(shared-linking-warning-emitted)
{
shared-linking-warning-emitted = 1 ;
ECHO "warning: forcing runtime-link=shared for Boost.Regex" ;
ECHO "warning: this is required when using the ICU library" ;
}
}
return <runtime-link>shared ;
}
}
alias icu_options : $(ICU_EXTRA_SOURCE) : : : $(BOOST_REGEX_ICU_OPTS) ;
explicit icu_options ;
boost-install boost_regex ; boost-install boost_regex ;

26
build/has_icu_test.cpp Normal file
View File

@ -0,0 +1,26 @@
/*
*
* Copyright (c) 2010
* John Maddock
*
* 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)
*
*/
#include <unicode/uversion.h>
#include <unicode/utypes.h>
#include <unicode/uchar.h>
#include <unicode/coll.h>
#if defined(_MSC_VER) && !defined(_DLL)
#error "Mixing ICU with a static runtime doesn't work"
#endif
int main()
{
UErrorCode err = U_ZERO_ERROR;
UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
return err;
}

View File

@ -15,6 +15,21 @@ Currently open issues can be viewed [@https://svn.boost.org/trac/boost/query?sta
All issues including closed ones can be viewed [@https://svn.boost.org/trac/boost/query?status=assigned&status=closed&status=new&status=reopened&component=regex&order=priority&col=id&col=summary&col=status&col=type&col=milestone&col=component here]. All issues including closed ones can be viewed [@https://svn.boost.org/trac/boost/query?status=assigned&status=closed&status=new&status=reopened&component=regex&order=priority&col=id&col=summary&col=status&col=type&col=milestone&col=component here].
[h4 Boost 1.44]
Fixed issues:
[@https://svn.boost.org/trac/boost/ticket/4215 #4215],
[@https://svn.boost.org/trac/boost/ticket/4212 #4212],
[@https://svn.boost.org/trac/boost/ticket/4191 #4191],
[@https://svn.boost.org/trac/boost/ticket/4132 #4132],
[@https://svn.boost.org/trac/boost/ticket/4123 #4123],
[@https://svn.boost.org/trac/boost/ticket/4114 #4114],
[@https://svn.boost.org/trac/boost/ticket/4036 #4036],
[@https://svn.boost.org/trac/boost/ticket/4020 #4020],
[@https://svn.boost.org/trac/boost/ticket/3941 #3941],
[@https://svn.boost.org/trac/boost/ticket/3902 #3902],
[@https://svn.boost.org/trac/boost/ticket/3890 #3890]
[h4 Boost 1.42] [h4 Boost 1.42]
* Added support for Functors rather than strings as format expressions. * Added support for Functors rather than strings as format expressions.

View File

@ -28,7 +28,7 @@
Example Programs</a> Example Programs</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.background_information.examples.test_programs"></a><h5> <a name="boost_regex.background_information.examples.test_programs"></a><h5>
<a name="id939918"></a> <a name="id829899"></a>
<a class="link" href="examples.html#boost_regex.background_information.examples.test_programs">Test <a class="link" href="examples.html#boost_regex.background_information.examples.test_programs">Test
Programs</a> Programs</a>
</h5> </h5>
@ -107,7 +107,7 @@
Files: <a href="../../../../test/captures/captures_test.cpp" target="_top">captures_test.cpp</a>. Files: <a href="../../../../test/captures/captures_test.cpp" target="_top">captures_test.cpp</a>.
</p> </p>
<a name="boost_regex.background_information.examples.example_programs"></a><h5> <a name="boost_regex.background_information.examples.example_programs"></a><h5>
<a name="id940222"></a> <a name="id830203"></a>
<a class="link" href="examples.html#boost_regex.background_information.examples.example_programs">Example <a class="link" href="examples.html#boost_regex.background_information.examples.example_programs">Example
programs</a> programs</a>
</h5> </h5>
@ -133,7 +133,7 @@
Files: <a href="../../../../example/timer/regex_timer.cpp" target="_top">regex_timer.cpp</a>. Files: <a href="../../../../example/timer/regex_timer.cpp" target="_top">regex_timer.cpp</a>.
</p> </p>
<a name="boost_regex.background_information.examples.code_snippets"></a><h5> <a name="boost_regex.background_information.examples.code_snippets"></a><h5>
<a name="id940281"></a> <a name="id830261"></a>
<a class="link" href="examples.html#boost_regex.background_information.examples.code_snippets">Code <a class="link" href="examples.html#boost_regex.background_information.examples.code_snippets">Code
snippets</a> snippets</a>
</h5> </h5>

View File

@ -35,8 +35,26 @@
<p> <p>
All issues including closed ones can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=closed&amp;status=new&amp;status=reopened&amp;component=regex&amp;order=priority&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component" target="_top">here</a>. All issues including closed ones can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=closed&amp;status=new&amp;status=reopened&amp;component=regex&amp;order=priority&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component" target="_top">here</a>.
</p> </p>
<a name="boost_regex.background_information.history.boost_1_44"></a><h5>
<a name="id834169"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_44">Boost
1.44</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/4215" target="_top">#4215</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4212" target="_top">#4212</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4191" target="_top">#4191</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4132" target="_top">#4132</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4123" target="_top">#4123</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4114" target="_top">#4114</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4036" target="_top">#4036</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4020" target="_top">#4020</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3941" target="_top">#3941</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3902" target="_top">#3902</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3890" target="_top">#3890</a>
</p>
<a name="boost_regex.background_information.history.boost_1_42"></a><h5> <a name="boost_regex.background_information.history.boost_1_42"></a><h5>
<a name="id941795"></a> <a name="id834238"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_42">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_42">Boost
1.42</a> 1.42</a>
</h5> </h5>
@ -65,7 +83,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.background_information.history.boost_1_40"></a><h5> <a name="boost_regex.background_information.history.boost_1_40"></a><h5>
<a name="id941874"></a> <a name="id834317"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_40">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_40">Boost
1.40</a> 1.40</a>
</h5> </h5>
@ -74,7 +92,7 @@
branch resets and recursive regular expressions. branch resets and recursive regular expressions.
</li></ul></div> </li></ul></div>
<a name="boost_regex.background_information.history.boost_1_38"></a><h5> <a name="boost_regex.background_information.history.boost_1_38"></a><h5>
<a name="id941895"></a> <a name="id834338"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_38">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_38">Boost
1.38</a> 1.38</a>
</h5> </h5>
@ -101,7 +119,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.background_information.history.boost_1_34"></a><h5> <a name="boost_regex.background_information.history.boost_1_34"></a><h5>
<a name="id942223"></a> <a name="id834416"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_34">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_34">Boost
1.34</a> 1.34</a>
</h5> </h5>
@ -124,7 +142,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.background_information.history.boost_1_33_1"></a><h5> <a name="boost_regex.background_information.history.boost_1_33_1"></a><h5>
<a name="id942254"></a> <a name="id834447"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_1">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_1">Boost
1.33.1</a> 1.33.1</a>
</h5> </h5>
@ -194,7 +212,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.background_information.history.boost_1_33_0"></a><h5> <a name="boost_regex.background_information.history.boost_1_33_0"></a><h5>
<a name="id942334"></a> <a name="id834526"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_0">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_0">Boost
1.33.0</a> 1.33.0</a>
</h5> </h5>
@ -249,7 +267,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.background_information.history.boost_1_32_1"></a><h5> <a name="boost_regex.background_information.history.boost_1_32_1"></a><h5>
<a name="id942392"></a> <a name="id834585"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_32_1">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_32_1">Boost
1.32.1</a> 1.32.1</a>
</h5> </h5>
@ -257,7 +275,7 @@
Fixed bug in partial matches of bounded repeats of '.'. Fixed bug in partial matches of bounded repeats of '.'.
</li></ul></div> </li></ul></div>
<a name="boost_regex.background_information.history.boost_1_31_0"></a><h5> <a name="boost_regex.background_information.history.boost_1_31_0"></a><h5>
<a name="id942413"></a> <a name="id834605"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_31_0">Boost <a class="link" href="history.html#boost_regex.background_information.history.boost_1_31_0">Boost
1.31.0</a> 1.31.0</a>
</h5> </h5>

View File

@ -58,7 +58,7 @@
There are three separate localization mechanisms supported by Boost.Regex: There are three separate localization mechanisms supported by Boost.Regex:
</p> </p>
<a name="boost_regex.background_information.locale.win32_localization_model_"></a><h5> <a name="boost_regex.background_information.locale.win32_localization_model_"></a><h5>
<a name="id935581"></a> <a name="id826760"></a>
<a class="link" href="locale.html#boost_regex.background_information.locale.win32_localization_model_">Win32 <a class="link" href="locale.html#boost_regex.background_information.locale.win32_localization_model_">Win32
localization model.</a> localization model.</a>
</h5> </h5>
@ -90,7 +90,7 @@
are treated as "unknown" graphic characters. are treated as "unknown" graphic characters.
</p> </p>
<a name="boost_regex.background_information.locale.c_localization_model_"></a><h5> <a name="boost_regex.background_information.locale.c_localization_model_"></a><h5>
<a name="id935736"></a> <a name="id826914"></a>
<a class="link" href="locale.html#boost_regex.background_information.locale.c_localization_model_">C <a class="link" href="locale.html#boost_regex.background_information.locale.c_localization_model_">C
localization model.</a> localization model.</a>
</h5> </h5>
@ -114,7 +114,7 @@
libraries including version 1 of this library. libraries including version 1 of this library.
</p> </p>
<a name="boost_regex.background_information.locale.c___localization_model_"></a><h5> <a name="boost_regex.background_information.locale.c___localization_model_"></a><h5>
<a name="id935804"></a> <a name="id826983"></a>
<a class="link" href="locale.html#boost_regex.background_information.locale.c___localization_model_">C++ <a class="link" href="locale.html#boost_regex.background_information.locale.c___localization_model_">C++
localization model.</a> localization model.</a>
</h5> </h5>
@ -151,7 +151,7 @@
in your code. The best way to ensure this is to add the #define to <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>. in your code. The best way to ensure this is to add the #define to <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
</p> </p>
<a name="boost_regex.background_information.locale.providing_a_message_catalogue"></a><h5> <a name="boost_regex.background_information.locale.providing_a_message_catalogue"></a><h5>
<a name="id937267"></a> <a name="id827284"></a>
<a class="link" href="locale.html#boost_regex.background_information.locale.providing_a_message_catalogue">Providing <a class="link" href="locale.html#boost_regex.background_information.locale.providing_a_message_catalogue">Providing
a message catalogue</a> a message catalogue</a>
</h5> </h5>

View File

@ -28,7 +28,7 @@
Conformance</a> Conformance</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.background_information.standards.c__"></a><h5> <a name="boost_regex.background_information.standards.c__"></a><h5>
<a name="id940910"></a> <a name="id830890"></a>
<a class="link" href="standards.html#boost_regex.background_information.standards.c__">C++</a> <a class="link" href="standards.html#boost_regex.background_information.standards.c__">C++</a>
</h5> </h5>
<p> <p>
@ -36,7 +36,7 @@
Report on C++ Library Extensions</a>. Report on C++ Library Extensions</a>.
</p> </p>
<a name="boost_regex.background_information.standards.ecmascript___javascript"></a><h5> <a name="boost_regex.background_information.standards.ecmascript___javascript"></a><h5>
<a name="id940931"></a> <a name="id830912"></a>
<a class="link" href="standards.html#boost_regex.background_information.standards.ecmascript___javascript">ECMAScript <a class="link" href="standards.html#boost_regex.background_information.standards.ecmascript___javascript">ECMAScript
/ JavaScript</a> / JavaScript</a>
</h5> </h5>
@ -49,7 +49,7 @@
rather than a Unicode escape sequence; use \x{DDDD} for Unicode escape sequences. rather than a Unicode escape sequence; use \x{DDDD} for Unicode escape sequences.
</p> </p>
<a name="boost_regex.background_information.standards.perl"></a><h5> <a name="boost_regex.background_information.standards.perl"></a><h5>
<a name="id940952"></a> <a name="id830932"></a>
<a class="link" href="standards.html#boost_regex.background_information.standards.perl">Perl</a> <a class="link" href="standards.html#boost_regex.background_information.standards.perl">Perl</a>
</h5> </h5>
<p> <p>
@ -61,8 +61,19 @@
<p> <p>
(??{code}) Not implementable in a compiled strongly typed language. (??{code}) Not implementable in a compiled strongly typed language.
</p> </p>
<p>
(*VERB) The <a href="http://perldoc.perl.org/perlre.html#Special-Backtracking-Control-Verbs" target="_top">backtracking
control verbs</a> are not recognised or implemented at this time.
</p>
<p>
In addition the following features behave slightly differently from Perl:
</p>
<p>
^ $ \Z These recognise any line termination sequence, and not just \n: see
the Unicode requirements below.
</p>
<a name="boost_regex.background_information.standards.posix"></a><h5> <a name="boost_regex.background_information.standards.posix"></a><h5>
<a name="id940976"></a> <a name="id830972"></a>
<a class="link" href="standards.html#boost_regex.background_information.standards.posix">POSIX</a> <a class="link" href="standards.html#boost_regex.background_information.standards.posix">POSIX</a>
</h5> </h5>
<p> <p>
@ -82,7 +93,7 @@
a custom traits class. a custom traits class.
</p> </p>
<a name="boost_regex.background_information.standards.unicode"></a><h5> <a name="boost_regex.background_information.standards.unicode"></a><h5>
<a name="id941000"></a> <a name="id830996"></a>
<a class="link" href="standards.html#boost_regex.background_information.standards.unicode">Unicode</a> <a class="link" href="standards.html#boost_regex.background_information.standards.unicode">Unicode</a>
</h5> </h5>
<p> <p>

View File

@ -35,7 +35,7 @@
accessed. accessed.
</p> </p>
<a name="boost_regex.captures.marked_sub_expressions"></a><h5> <a name="boost_regex.captures.marked_sub_expressions"></a><h5>
<a name="id782686"></a> <a name="id672206"></a>
<a class="link" href="captures.html#boost_regex.captures.marked_sub_expressions">Marked sub-expressions</a> <a class="link" href="captures.html#boost_regex.captures.marked_sub_expressions">Marked sub-expressions</a>
</h5> </h5>
<p> <p>
@ -218,7 +218,7 @@
output stream. output stream.
</p> </p>
<a name="boost_regex.captures.unmatched_sub_expressions"></a><h5> <a name="boost_regex.captures.unmatched_sub_expressions"></a><h5>
<a name="id783142"></a> <a name="id672662"></a>
<a class="link" href="captures.html#boost_regex.captures.unmatched_sub_expressions">Unmatched Sub-Expressions</a> <a class="link" href="captures.html#boost_regex.captures.unmatched_sub_expressions">Unmatched Sub-Expressions</a>
</h5> </h5>
<p> <p>
@ -231,7 +231,7 @@
you can determine which sub-expressions matched by accessing the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">matched</span></code> data member. you can determine which sub-expressions matched by accessing the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">matched</span></code> data member.
</p> </p>
<a name="boost_regex.captures.repeated_captures"></a><h5> <a name="boost_regex.captures.repeated_captures"></a><h5>
<a name="id783181"></a> <a name="id672701"></a>
<a class="link" href="captures.html#boost_regex.captures.repeated_captures">Repeated Captures</a> <a class="link" href="captures.html#boost_regex.captures.repeated_captures">Repeated Captures</a>
</h5> </h5>
<p> <p>

View File

@ -32,7 +32,7 @@
'$', '\', '(', ')', '?', and ':'. '$', '\', '(', ')', '?', and ':'.
</p> </p>
<a name="boost_regex.format.boost_format_syntax.grouping"></a><h5> <a name="boost_regex.format.boost_format_syntax.grouping"></a><h5>
<a name="id803969"></a> <a name="id693208"></a>
<a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.grouping">Grouping</a> <a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.grouping">Grouping</a>
</h5> </h5>
<p> <p>
@ -40,7 +40,7 @@
you want a to output literal parenthesis. you want a to output literal parenthesis.
</p> </p>
<a name="boost_regex.format.boost_format_syntax.conditionals"></a><h5> <a name="boost_regex.format.boost_format_syntax.conditionals"></a><h5>
<a name="id803986"></a> <a name="id693225"></a>
<a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.conditionals">Conditionals</a> <a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.conditionals">Conditionals</a>
</h5> </h5>
<p> <p>
@ -79,7 +79,7 @@
?{NAME}true-expression:false-expression ?{NAME}true-expression:false-expression
</p> </p>
<a name="boost_regex.format.boost_format_syntax.placeholder_sequences"></a><h5> <a name="boost_regex.format.boost_format_syntax.placeholder_sequences"></a><h5>
<a name="id804038"></a> <a name="id693278"></a>
<a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.placeholder_sequences">Placeholder <a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.placeholder_sequences">Placeholder
Sequences</a> Sequences</a>
</h5> </h5>
@ -319,7 +319,7 @@
as a literal. as a literal.
</p> </p>
<a name="boost_regex.format.boost_format_syntax.escape_sequences"></a><h5> <a name="boost_regex.format.boost_format_syntax.escape_sequences"></a><h5>
<a name="id804382"></a> <a name="id693621"></a>
<a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.escape_sequences">Escape <a class="link" href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.escape_sequences">Escape
Sequences</a> Sequences</a>
</h5> </h5>

View File

@ -49,7 +49,7 @@
file before you can use it, instructions for specific platforms are as follows: file before you can use it, instructions for specific platforms are as follows:
</p> </p>
<a name="boost_regex.install.building_with_bjam"></a><h5> <a name="boost_regex.install.building_with_bjam"></a><h5>
<a name="id779877"></a> <a name="id668332"></a>
<a class="link" href="install.html#boost_regex.install.building_with_bjam">Building with bjam</a> <a class="link" href="install.html#boost_regex.install.building_with_bjam">Building with bjam</a>
</h5> </h5>
<p> <p>
@ -58,7 +58,7 @@
started guide</a> for more information. started guide</a> for more information.
</p> </p>
<a name="boost_regex.install.building_with_unicode_and_icu_support"></a><h5> <a name="boost_regex.install.building_with_unicode_and_icu_support"></a><h5>
<a name="id779901"></a> <a name="id668356"></a>
<a class="link" href="install.html#boost_regex.install.building_with_unicode_and_icu_support">Building <a class="link" href="install.html#boost_regex.install.building_with_unicode_and_icu_support">Building
With Unicode and ICU Support</a> With Unicode and ICU Support</a>
</h5> </h5>
@ -96,11 +96,11 @@
ICU you are using is binary compatible with the toolset you use to build Boost. ICU you are using is binary compatible with the toolset you use to build Boost.
</p> </p>
<a name="boost_regex.install.building_via_makefiles"></a><h5> <a name="boost_regex.install.building_via_makefiles"></a><h5>
<a name="id780020"></a> <a name="id668475"></a>
<a class="link" href="install.html#boost_regex.install.building_via_makefiles">Building via makefiles</a> <a class="link" href="install.html#boost_regex.install.building_via_makefiles">Building via makefiles</a>
</h5> </h5>
<a name="boost_regex.install.borland_c___builder_"></a><h6> <a name="boost_regex.install.borland_c___builder_"></a><h6>
<a name="id780033"></a> <a name="id668488"></a>
<a class="link" href="install.html#boost_regex.install.borland_c___builder_">Borland C++ Builder:</a> <a class="link" href="install.html#boost_regex.install.borland_c___builder_">Borland C++ Builder:</a>
</h6> </h6>
<div class="itemizedlist"><ul type="disc"> <div class="itemizedlist"><ul type="disc">
@ -166,7 +166,7 @@
a lot in compile times! a lot in compile times!
</p> </p>
<a name="boost_regex.install.microsoft_visual_c___6__7__7_1_and_8"></a><h5> <a name="boost_regex.install.microsoft_visual_c___6__7__7_1_and_8"></a><h5>
<a name="id780272"></a> <a name="id668727"></a>
<a class="link" href="install.html#boost_regex.install.microsoft_visual_c___6__7__7_1_and_8">Microsoft <a class="link" href="install.html#boost_regex.install.microsoft_visual_c___6__7__7_1_and_8">Microsoft
Visual C++ 6, 7, 7.1 and 8</a> Visual C++ 6, 7, 7.1 and 8</a>
</h5> </h5>
@ -253,7 +253,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.install.gcc_2_95_and_later_"></a><h6> <a name="boost_regex.install.gcc_2_95_and_later_"></a><h6>
<a name="id780471"></a> <a name="id668926"></a>
<a class="link" href="install.html#boost_regex.install.gcc_2_95_and_later_">GCC(2.95 and later)</a> <a class="link" href="install.html#boost_regex.install.gcc_2_95_and_later_">GCC(2.95 and later)</a>
</h6> </h6>
<p> <p>
@ -302,7 +302,7 @@
see the <a href="../../../../config/index.html" target="_top">config library documentation</a>. see the <a href="../../../../config/index.html" target="_top">config library documentation</a>.
</p> </p>
<a name="boost_regex.install.sun_workshop_6_1"></a><h6> <a name="boost_regex.install.sun_workshop_6_1"></a><h6>
<a name="id780597"></a> <a name="id669052"></a>
<a class="link" href="install.html#boost_regex.install.sun_workshop_6_1">Sun Workshop 6.1</a> <a class="link" href="install.html#boost_regex.install.sun_workshop_6_1">Sun Workshop 6.1</a>
</h6> </h6>
<p> <p>
@ -347,7 +347,7 @@
will build v9 variants of the regex library named libboost_regex_v9.a etc. will build v9 variants of the regex library named libboost_regex_v9.a etc.
</p> </p>
<a name="boost_regex.install.makefiles_for_other_compilers"></a><h6> <a name="boost_regex.install.makefiles_for_other_compilers"></a><h6>
<a name="id780741"></a> <a name="id669196"></a>
<a class="link" href="install.html#boost_regex.install.makefiles_for_other_compilers">Makefiles <a class="link" href="install.html#boost_regex.install.makefiles_for_other_compilers">Makefiles
for Other compilers</a> for Other compilers</a>
</h6> </h6>

View File

@ -27,7 +27,7 @@
<a name="boost_regex.ref.bad_expression"></a><a class="link" href="bad_expression.html" title="bad_expression"> bad_expression</a> <a name="boost_regex.ref.bad_expression"></a><a class="link" href="bad_expression.html" title="bad_expression"> bad_expression</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.ref.bad_expression.synopsis"></a><h5> <a name="boost_regex.ref.bad_expression.synopsis"></a><h5>
<a name="id889187"></a> <a name="id779033"></a>
<a class="link" href="bad_expression.html#boost_regex.ref.bad_expression.synopsis">Synopsis</a> <a class="link" href="bad_expression.html#boost_regex.ref.bad_expression.synopsis">Synopsis</a>
</h5> </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pattern_except</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pattern_except</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -54,7 +54,7 @@
<span class="special">}</span> <span class="comment">// namespace boost <span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.bad_expression.description"></a><h5> <a name="boost_regex.ref.bad_expression.description"></a><h5>
<a name="id889552"></a> <a name="id779394"></a>
<a class="link" href="bad_expression.html#boost_regex.ref.bad_expression.description">Description</a> <a class="link" href="bad_expression.html#boost_regex.ref.bad_expression.description">Description</a>
</h5> </h5>
<pre class="programlisting"><span class="identifier">regex_error</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">error_type</span> <span class="identifier">err</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">pos</span><span class="special">);</span> <pre class="programlisting"><span class="identifier">regex_error</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">error_type</span> <span class="identifier">err</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">pos</span><span class="special">);</span>

View File

@ -27,7 +27,7 @@
<a name="boost_regex.ref.basic_regex"></a><a class="link" href="basic_regex.html" title="basic_regex"> basic_regex</a> <a name="boost_regex.ref.basic_regex"></a><a class="link" href="basic_regex.html" title="basic_regex"> basic_regex</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.ref.basic_regex.synopsis"></a><h5> <a name="boost_regex.ref.basic_regex.synopsis"></a><h5>
<a name="id804725"></a> <a name="id693964"></a>
<a class="link" href="basic_regex.html#boost_regex.ref.basic_regex.synopsis">Synopsis</a> <a class="link" href="basic_regex.html#boost_regex.ref.basic_regex.synopsis">Synopsis</a>
</h5> </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -244,7 +244,7 @@
<span class="special">}</span> <span class="comment">// namespace boost <span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.basic_regex.description"></a><h5> <a name="boost_regex.ref.basic_regex.description"></a><h5>
<a name="id810064"></a> <a name="id699440"></a>
<a class="link" href="basic_regex.html#boost_regex.ref.basic_regex.description">Description</a> <a class="link" href="basic_regex.html#boost_regex.ref.basic_regex.description">Description</a>
</h5> </h5>
<p> <p>
@ -327,7 +327,7 @@
<code class="computeroutput"><span class="identifier">basic_regex</span></code>. <code class="computeroutput"><span class="identifier">basic_regex</span></code>.
</p> </p>
<div class="table"> <div class="table">
<a name="id811975"></a><p class="title"><b>Table&#160;1.&#160;basic_regex default construction postconditions</b></p> <a name="id702443"></a><p class="title"><b>Table&#160;1.&#160;basic_regex default construction postconditions</b></p>
<div class="table-contents"><table class="table" summary="basic_regex default construction postconditions"> <div class="table-contents"><table class="table" summary="basic_regex default construction postconditions">
<colgroup> <colgroup>
<col> <col>
@ -407,7 +407,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>. flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id812272"></a><p class="title"><b>Table&#160;2.&#160;Postconditions for basic_regex construction</b></p> <a name="id702741"></a><p class="title"><b>Table&#160;2.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup> <colgroup>
<col> <col>
@ -512,7 +512,7 @@
specified in <span class="emphasis"><em>f</em></span>. specified in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id812685"></a><p class="title"><b>Table&#160;3.&#160;Postconditions for basic_regex construction</b></p> <a name="id703153"></a><p class="title"><b>Table&#160;3.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup> <colgroup>
<col> <col>
@ -616,7 +616,7 @@
according the option flags specified in <span class="emphasis"><em>f</em></span>. according the option flags specified in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id813090"></a><p class="title"><b>Table&#160;4.&#160;Postconditions for basic_regex construction</b></p> <a name="id703558"></a><p class="title"><b>Table&#160;4.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup> <colgroup>
<col> <col>
@ -727,7 +727,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>. flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id814730"></a><p class="title"><b>Table&#160;5.&#160;Postconditions for basic_regex construction</b></p> <a name="id704106"></a><p class="title"><b>Table&#160;5.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup> <colgroup>
<col> <col>
@ -829,7 +829,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>. flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id815089"></a><p class="title"><b>Table&#160;6.&#160;Postconditions for basic_regex construction</b></p> <a name="id704465"></a><p class="title"><b>Table&#160;6.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup> <colgroup>
<col> <col>
@ -1043,7 +1043,7 @@
in <span class="emphasis"><em>f</em></span>. in <span class="emphasis"><em>f</em></span>.
</p> </p>
<div class="table"> <div class="table">
<a name="id816605"></a><p class="title"><b>Table&#160;7.&#160;Postconditions for basic_regex::assign</b></p> <a name="id705981"></a><p class="title"><b>Table&#160;7.&#160;Postconditions for basic_regex::assign</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex::assign"> <div class="table-contents"><table class="table" summary="Postconditions for basic_regex::assign">
<colgroup> <colgroup>
<col> <col>

View File

@ -34,7 +34,7 @@
Boost-specific enhanced interface. Boost-specific enhanced interface.
</p> </p>
<a name="boost_regex.ref.concepts.traits_concept.minimal_requirements_"></a><h5> <a name="boost_regex.ref.concepts.traits_concept.minimal_requirements_"></a><h5>
<a name="id916363"></a> <a name="id806618"></a>
<a class="link" href="traits_concept.html#boost_regex.ref.concepts.traits_concept.minimal_requirements_">Minimal <a class="link" href="traits_concept.html#boost_regex.ref.concepts.traits_concept.minimal_requirements_">Minimal
requirements.</a> requirements.</a>
</h5> </h5>
@ -381,7 +381,7 @@
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.ref.concepts.traits_concept.additional_optional_requirements"></a><h5> <a name="boost_regex.ref.concepts.traits_concept.additional_optional_requirements"></a><h5>
<a name="id917023"></a> <a name="id807234"></a>
<a class="link" href="traits_concept.html#boost_regex.ref.concepts.traits_concept.additional_optional_requirements">Additional <a class="link" href="traits_concept.html#boost_regex.ref.concepts.traits_concept.additional_optional_requirements">Additional
Optional Requirements</a> Optional Requirements</a>
</h5> </h5>

View File

@ -34,7 +34,7 @@
previous version of Boost.Regex and will not be further updated: previous version of Boost.Regex and will not be further updated:
</p> </p>
<a name="boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format"></a><h5> <a name="boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format"></a><h5>
<a name="id917545"></a> <a name="id807756"></a>
<a class="link" href="regex_format.html#boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format">Algorithm <a class="link" href="regex_format.html#boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format">Algorithm
regex_format</a> regex_format</a>
</h5> </h5>

View File

@ -27,7 +27,7 @@
<a name="boost_regex.ref.error_type"></a><a class="link" href="error_type.html" title="error_type"> error_type</a> <a name="boost_regex.ref.error_type"></a><a class="link" href="error_type.html" title="error_type"> error_type</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.ref.error_type.synopsis"></a><h5> <a name="boost_regex.ref.error_type.synopsis"></a><h5>
<a name="id896583"></a> <a name="id786382"></a>
<a class="link" href="error_type.html#boost_regex.ref.error_type.synopsis">Synopsis</a> <a class="link" href="error_type.html#boost_regex.ref.error_type.synopsis">Synopsis</a>
</h5> </h5>
<p> <p>
@ -57,7 +57,7 @@
</span><span class="special">}</span> <span class="comment">// namespace boost </span><span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.error_type.description"></a><h5> <a name="boost_regex.ref.error_type.description"></a><h5>
<a name="id896999"></a> <a name="id786797"></a>
<a class="link" href="error_type.html#boost_regex.ref.error_type.description">Description</a> <a class="link" href="error_type.html#boost_regex.ref.error_type.description">Description</a>
</h5> </h5>
<p> <p>

View File

@ -69,7 +69,7 @@
</span><span class="special">}</span> <span class="comment">// namespace boost </span><span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.match_flag_type.description"></a><h5> <a name="boost_regex.ref.match_flag_type.description"></a><h5>
<a name="id895271"></a> <a name="id785831"></a>
<a class="link" href="match_flag_type.html#boost_regex.ref.match_flag_type.description">Description</a> <a class="link" href="match_flag_type.html#boost_regex.ref.match_flag_type.description">Description</a>
</h5> </h5>
<p> <p>

View File

@ -27,7 +27,7 @@
<a name="boost_regex.ref.match_results"></a><a class="link" href="match_results.html" title="match_results"> match_results</a> <a name="boost_regex.ref.match_results"></a><a class="link" href="match_results.html" title="match_results"> match_results</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.ref.match_results.synopsis"></a><h5> <a name="boost_regex.ref.match_results.synopsis"></a><h5>
<a name="id819686"></a> <a name="id710291"></a>
<a class="link" href="match_results.html#boost_regex.ref.match_results.synopsis">Synopsis</a> <a class="link" href="match_results.html#boost_regex.ref.match_results.synopsis">Synopsis</a>
</h5> </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -167,7 +167,7 @@
<span class="identifier">match_results</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">m2</span><span class="special">);</span> <span class="identifier">match_results</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">m2</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.match_results.description"></a><h5> <a name="boost_regex.ref.match_results.description"></a><h5>
<a name="id824304"></a> <a name="id713816"></a>
<a class="link" href="match_results.html#boost_regex.ref.match_results.description">Description</a> <a class="link" href="match_results.html#boost_regex.ref.match_results.description">Description</a>
</h5> </h5>
<p> <p>
@ -406,14 +406,21 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span>
<span class="identifier">difference_type</span> <span class="identifier">length</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;)</span><span class="keyword">const</span><span class="special">;</span> <span class="identifier">difference_type</span> <span class="identifier">length</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;)</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns the length of sub-expression <span class="bold"><strong>Effects</strong></span>: Returns the length of sub-expression
<span class="emphasis"><em>sub</em></span>, that is to say: <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)[</span><span class="identifier">sub</span><span class="special">].</span><span class="identifier">length</span><span class="special">()</span></code>. <span class="emphasis"><em>sub</em></span>, that is to say: <code class="computeroutput"><span class="special">(*</span><span class="keyword">this</span><span class="special">)[</span><span class="identifier">sub</span><span class="special">].</span><span class="identifier">length</span><span class="special">()</span></code>.
</p> </p>
<p> <p>
The overloads that accept a string refer to a named sub-expression <span class="emphasis"><em>n</em></span>. The overloads that accept a string refer to a named sub-expression <span class="emphasis"><em>n</em></span>.
In the event that there is no such named sub-expression then returns an empty In the event that there is no such named sub-expression then returns zero.
string.
</p> </p>
<p> <p>
The template overloads of this function, allow the string and/or character The template overloads of this function, allow the string and/or character
@ -434,6 +441,14 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span>
<span class="identifier">difference_type</span> <span class="identifier">position</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;)</span><span class="keyword">const</span><span class="special">;</span> <span class="identifier">difference_type</span> <span class="identifier">position</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;)</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns the starting location of <span class="bold"><strong>Effects</strong></span>: Returns the starting location of
sub-expression <span class="emphasis"><em>sub</em></span>, or -1 if <span class="emphasis"><em>sub</em></span> sub-expression <span class="emphasis"><em>sub</em></span>, or -1 if <span class="emphasis"><em>sub</em></span>
@ -443,8 +458,7 @@
</p> </p>
<p> <p>
The overloads that accept a string refer to a named sub-expression <span class="emphasis"><em>n</em></span>. The overloads that accept a string refer to a named sub-expression <span class="emphasis"><em>n</em></span>.
In the event that there is no such named sub-expression then returns an empty In the event that there is no such named sub-expression then returns -1.
string.
</p> </p>
<p> <p>
The template overloads of this function, allow the string and/or character The template overloads of this function, allow the string and/or character
@ -467,6 +481,14 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span>
<span class="identifier">string_type</span> <span class="identifier">str</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;</span> <span class="identifier">sub</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span> <span class="identifier">string_type</span> <span class="identifier">str</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;</span> <span class="identifier">sub</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns sub-expression <span class="emphasis"><em>sub</em></span> <span class="bold"><strong>Effects</strong></span>: Returns sub-expression <span class="emphasis"><em>sub</em></span>
as a string: <code class="computeroutput"><span class="identifier">string_type</span><span class="special">((*</span><span class="keyword">this</span><span class="special">)[</span><span class="identifier">sub</span><span class="special">])</span></code>. as a string: <code class="computeroutput"><span class="identifier">string_type</span><span class="special">((*</span><span class="keyword">this</span><span class="special">)[</span><span class="identifier">sub</span><span class="special">])</span></code>.
@ -497,6 +519,14 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span> <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A</span><span class="special">&gt;</span>
<span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">[](</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> <span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">[](</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="identifier">A</span><span class="special">&gt;&amp;</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a> <span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a>
object representing the character sequence that matched marked sub-expression object representing the character sequence that matched marked sub-expression
@ -527,6 +557,14 @@
</p> </p>
<pre class="programlisting"><span class="identifier">const_reference</span> <span class="identifier">prefix</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <pre class="programlisting"><span class="identifier">const_reference</span> <span class="identifier">prefix</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a> <span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a>
object representing the character sequence from the start of the string being object representing the character sequence from the start of the string being
@ -536,6 +574,14 @@
</p> </p>
<pre class="programlisting"><span class="identifier">const_reference</span> <span class="identifier">suffix</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span> <pre class="programlisting"><span class="identifier">const_reference</span> <span class="identifier">suffix</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a> <span class="bold"><strong>Effects</strong></span>: Returns a reference to the <a class="link" href="sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a>
object representing the character sequence from the end of the match found object representing the character sequence from the end of the match found
@ -579,7 +625,18 @@
<span class="identifier">out</span><span class="special">)</span></code> <span class="identifier">out</span><span class="special">)</span></code>
or <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>, both of which write the replacement text or <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>, both of which write the replacement text
to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>, to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>,
and then return the new OutputIterator position. and then return the new OutputIterator position. Note that if the formatter
is a functor, then it is <span class="emphasis"><em>passed by value</em></span>: users that
want to pass function objects with internal state might want to use <a href="../../../../../../doc/html/ref.html" target="_top">Boost.Ref</a> to wrap the object
so that it's passed by reference.
</p>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p> </p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: If <code class="computeroutput"><span class="identifier">fmt</span></code> <span class="bold"><strong>Effects</strong></span>: If <code class="computeroutput"><span class="identifier">fmt</span></code>
@ -601,7 +658,7 @@
<div class="itemizedlist"><ul type="disc"> <div class="itemizedlist"><ul type="disc">
<li> <li>
Call <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">)</span></code> and Call <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">)</span></code> and
copy the result to <code class="computeroutput"><span class="identifier">OutputIterator</span></code><span class="emphasis"><em>out</em></span>. copy the string returned to <code class="computeroutput"><span class="identifier">OutputIterator</span></code><span class="emphasis"><em>out</em></span>.
</li> </li>
<li> <li>
Call <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">,</span> <span class="identifier">out</span><span class="special">)</span></code>. Call <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(*</span><span class="keyword">this</span><span class="special">,</span> <span class="identifier">out</span><span class="special">)</span></code>.
@ -640,6 +697,14 @@
to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>, to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>,
and then return the new OutputIterator position. and then return the new OutputIterator position.
</p> </p>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: If <code class="computeroutput"><span class="identifier">fmt</span></code> <span class="bold"><strong>Effects</strong></span>: If <code class="computeroutput"><span class="identifier">fmt</span></code>
is either a null-terminated string, or a container of <code class="computeroutput"><span class="identifier">char_type</span></code>'s, is either a null-terminated string, or a container of <code class="computeroutput"><span class="identifier">char_type</span></code>'s,
@ -713,6 +778,14 @@
</p> </p>
<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">capture_sequence_type</span><span class="special">&amp;</span> <span class="identifier">captures</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span> <pre class="programlisting"><span class="keyword">const</span> <span class="identifier">capture_sequence_type</span><span class="special">&amp;</span> <span class="identifier">captures</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
</pre> </pre>
<p>
<span class="bold"><strong>Requires</strong></span>: that the match_results object
has been initialized as a result of a successful call to <a class="link" href="regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> or was returned from
a <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>,
and that the underlying iterators have not been subsequently invalidated.
Will raise a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logic_error</span></code> if the match_results object
was not initialized.
</p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: returns a sequence containing all <span class="bold"><strong>Effects</strong></span>: returns a sequence containing all
the captures obtained for sub-expression i. the captures obtained for sub-expression i.

View File

@ -43,7 +43,7 @@
on to the "real" algorithm. on to the "real" algorithm.
</p> </p>
<a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match"></a><h5> <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match"></a><h5>
<a name="id898779"></a> <a name="id788624"></a>
<a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match">u32regex_match</a> <a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match">u32regex_match</a>
</h5> </h5>
<p> <p>
@ -89,7 +89,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search"></a><h5> <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search"></a><h5>
<a name="id899294"></a> <a name="id789139"></a>
<a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search">u32regex_search</a> <a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search">u32regex_search</a>
</h5> </h5>
<p> <p>
@ -128,7 +128,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace"></a><h5> <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace"></a><h5>
<a name="id899712"></a> <a name="id789558"></a>
<a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace">u32regex_replace</a> <a class="link" href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace">u32regex_replace</a>
</h5> </h5>
<p> <p>

View File

@ -28,7 +28,7 @@
Unicode Aware Regex Iterators</a> Unicode Aware Regex Iterators</a>
</h5></div></div></div> </h5></div></div></div>
<a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator"></a><h5> <a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator"></a><h5>
<a name="id900030"></a> <a name="id789876"></a>
<a class="link" href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator">u32regex_iterator</a> <a class="link" href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator">u32regex_iterator</a>
</h5> </h5>
<p> <p>
@ -126,7 +126,7 @@
Provided of course that the input is encoded as UTF-8. Provided of course that the input is encoded as UTF-8.
</p> </p>
<a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator"></a><h5> <a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator"></a><h5>
<a name="id902483"></a> <a name="id791452"></a>
<a class="link" href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator">u32regex_token_iterator</a> <a class="link" href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator">u32regex_token_iterator</a>
</h5> </h5>
<p> <p>

View File

@ -34,7 +34,7 @@
here they are anyway: here they are anyway:
</p> </p>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match"></a><h5>
<a name="id907627"></a> <a name="id797849"></a>
<a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match">regex_match</a> <a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match">regex_match</a>
</h5> </h5>
<p> <p>
@ -82,7 +82,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_"></a><h5>
<a name="id909378"></a> <a name="id798507"></a>
<a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_">regex_match <a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_">regex_match
(second overload)</a> (second overload)</a>
</h5> </h5>
@ -110,7 +110,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search"></a><h5>
<a name="id909809"></a> <a name="id798937"></a>
<a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search">regex_search</a> <a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search">regex_search</a>
</h5> </h5>
<p> <p>
@ -149,7 +149,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_"></a><h5>
<a name="id910344"></a> <a name="id799473"></a>
<a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_">regex_search <a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_">regex_search
(second overload)</a> (second overload)</a>
</h5> </h5>
@ -164,7 +164,7 @@
<span class="special">+</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">GetLength</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">f</span><span class="special">);</span></code> <span class="special">+</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">GetLength</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">f</span><span class="special">);</span></code>
</p> </p>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace"></a><h5>
<a name="id910634"></a> <a name="id800856"></a>
<a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace">regex_replace</a> <a class="link" href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace">regex_replace</a>
</h5> </h5>
<p> <p>

View File

@ -32,7 +32,7 @@
an MFC/ATL string to a <a class="link" href="../../regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a> or <a class="link" href="../../regex_token_iterator.html" title="regex_token_iterator"><code class="computeroutput"><span class="identifier">regex_token_iterator</span></code></a>: an MFC/ATL string to a <a class="link" href="../../regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a> or <a class="link" href="../../regex_token_iterator.html" title="regex_token_iterator"><code class="computeroutput"><span class="identifier">regex_token_iterator</span></code></a>:
</p> </p>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper"></a><h5>
<a name="id911405"></a> <a name="id801626"></a>
<a class="link" href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper">regex_iterator <a class="link" href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper">regex_iterator
creation helper</a> creation helper</a>
</h5> </h5>
@ -68,7 +68,7 @@
<span class="special">}</span> <span class="special">}</span>
</pre> </pre>
<a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers"></a><h5> <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers"></a><h5>
<a name="id911954"></a> <a name="id802175"></a>
<a class="link" href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers">regex_token_iterator <a class="link" href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers">regex_token_iterator
creation helpers</a> creation helpers</a>
</h5> </h5>

View File

@ -165,7 +165,7 @@
<a name="regcomp"></a><p> <a name="regcomp"></a><p>
</p> </p>
<a name="boost_regex.ref.posix.regcomp"></a><h5> <a name="boost_regex.ref.posix.regcomp"></a><h5>
<a name="id915185"></a> <a name="id804314"></a>
<a class="link" href="posix.html#boost_regex.ref.posix.regcomp">regcomp</a> <a class="link" href="posix.html#boost_regex.ref.posix.regcomp">regcomp</a>
</h5> </h5>
<p> <p>
@ -379,7 +379,7 @@
<a name="regerror"></a><p> <a name="regerror"></a><p>
</p> </p>
<a name="boost_regex.ref.posix.regerror"></a><h5> <a name="boost_regex.ref.posix.regerror"></a><h5>
<a name="id915690"></a> <a name="id804819"></a>
<a class="link" href="posix.html#boost_regex.ref.posix.regerror">regerror</a> <a class="link" href="posix.html#boost_regex.ref.posix.regerror">regerror</a>
</h5> </h5>
<p> <p>
@ -467,7 +467,7 @@
<a name="regexec"></a><p> <a name="regexec"></a><p>
</p> </p>
<a name="boost_regex.ref.posix.regexec"></a><h5> <a name="boost_regex.ref.posix.regexec"></a><h5>
<a name="id915818"></a> <a name="id804947"></a>
<a class="link" href="posix.html#boost_regex.ref.posix.regexec">regexec</a> <a class="link" href="posix.html#boost_regex.ref.posix.regexec">regexec</a>
</h5> </h5>
<p> <p>
@ -537,7 +537,7 @@
<a name="regfree"></a><p> <a name="regfree"></a><p>
</p> </p>
<a name="boost_regex.ref.posix.regfree"></a><h5> <a name="boost_regex.ref.posix.regfree"></a><h5>
<a name="id915930"></a> <a name="id806185"></a>
<a class="link" href="posix.html#boost_regex.ref.posix.regfree">regfree</a> <a class="link" href="posix.html#boost_regex.ref.posix.regfree">regfree</a>
</h5> </h5>
<p> <p>

View File

@ -78,7 +78,7 @@
<span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.regex_iterator.description"></a><h5> <a name="boost_regex.ref.regex_iterator.description"></a><h5>
<a name="id872909"></a> <a name="id762755"></a>
<a class="link" href="regex_iterator.html#boost_regex.ref.regex_iterator.description">Description</a> <a class="link" href="regex_iterator.html#boost_regex.ref.regex_iterator.description">Description</a>
</h5> </h5>
<p> <p>
@ -436,7 +436,7 @@
<span class="emphasis"><em>m</em></span>. <span class="emphasis"><em>m</em></span>.
</p> </p>
<a name="boost_regex.ref.regex_iterator.examples"></a><h5> <a name="boost_regex.ref.regex_iterator.examples"></a><h5>
<a name="id876580"></a> <a name="id766409"></a>
<a class="link" href="regex_iterator.html#boost_regex.ref.regex_iterator.examples">Examples</a> <a class="link" href="regex_iterator.html#boost_regex.ref.regex_iterator.examples">Examples</a>
</h5> </h5>
<p> <p>

View File

@ -80,7 +80,7 @@
<span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span> <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.regex_match.description"></a><h5> <a name="boost_regex.ref.regex_match.description"></a><h5>
<a name="id856145"></a> <a name="id747144"></a>
<a class="link" href="regex_match.html#boost_regex.ref.regex_match.description">Description</a> <a class="link" href="regex_match.html#boost_regex.ref.regex_match.description">Description</a>
</h5> </h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span> <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
@ -360,7 +360,7 @@
<span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>. <span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>.
</p> </p>
<a name="boost_regex.ref.regex_match.examples"></a><h5> <a name="boost_regex.ref.regex_match.examples"></a><h5>
<a name="id859608"></a> <a name="id750606"></a>
<a class="link" href="regex_match.html#boost_regex.ref.regex_match.examples">Examples</a> <a class="link" href="regex_match.html#boost_regex.ref.regex_match.examples">Examples</a>
</h5> </h5>
<p> <p>

View File

@ -53,7 +53,7 @@
<span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span> <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.regex_replace.description"></a><h5> <a name="boost_regex.ref.regex_replace.description"></a><h5>
<a name="id867135"></a> <a name="id757041"></a>
<a class="link" href="regex_replace.html#boost_regex.ref.regex_replace.description">Description</a> <a class="link" href="regex_replace.html#boost_regex.ref.regex_replace.description">Description</a>
</h5> </h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Formatter</span><span class="special">&gt;</span> <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Formatter</span><span class="special">&gt;</span>
@ -101,7 +101,10 @@
or <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(</span><span class="identifier">what</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>, both of which write the replacement text or <code class="computeroutput"><span class="identifier">fmt</span><span class="special">(</span><span class="identifier">what</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>, both of which write the replacement text
to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>, to <code class="computeroutput"><span class="special">*</span><span class="identifier">out</span></code>,
and then return the new OutputIterator position. In each case <code class="computeroutput"><span class="identifier">what</span></code> is the <a class="link" href="match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> object that represents and then return the new OutputIterator position. In each case <code class="computeroutput"><span class="identifier">what</span></code> is the <a class="link" href="match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> object that represents
the match found. the match found. Note that if the formatter is a functor, then it is <span class="emphasis"><em>passed
by value</em></span>: users that want to pass function objects with internal
state might want to use <a href="../../../../../../doc/html/ref.html" target="_top">Boost.Ref</a>
to wrap the object so that it's passed by reference.
</p> </p>
<p> <p>
<span class="bold"><strong>Effects</strong></span>: Constructs an <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a> object: <span class="bold"><strong>Effects</strong></span>: Constructs an <a class="link" href="regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a> object:
@ -196,7 +199,7 @@
and then returns <code class="computeroutput"><span class="identifier">result</span></code>. and then returns <code class="computeroutput"><span class="identifier">result</span></code>.
</p> </p>
<a name="boost_regex.ref.regex_replace.examples"></a><h5> <a name="boost_regex.ref.regex_replace.examples"></a><h5>
<a name="id868579"></a> <a name="id759580"></a>
<a class="link" href="regex_replace.html#boost_regex.ref.regex_replace.examples">Examples</a> <a class="link" href="regex_replace.html#boost_regex.ref.regex_replace.examples">Examples</a>
</h5> </h5>
<p> <p>

View File

@ -73,7 +73,7 @@
<span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span> <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.regex_search.description"></a><h5> <a name="boost_regex.ref.regex_search.description"></a><h5>
<a name="id861232"></a> <a name="id752230"></a>
<a class="link" href="regex_search.html#boost_regex.ref.regex_search.description">Description</a> <a class="link" href="regex_search.html#boost_regex.ref.regex_search.description">Description</a>
</h5> </h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span> <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
@ -355,7 +355,7 @@
<span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_search</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>. <span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_search</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>.
</p> </p>
<a name="boost_regex.ref.regex_search.examples"></a><h5> <a name="boost_regex.ref.regex_search.examples"></a><h5>
<a name="id863665"></a> <a name="id755755"></a>
<a class="link" href="regex_search.html#boost_regex.ref.regex_search.examples">Examples</a> <a class="link" href="regex_search.html#boost_regex.ref.regex_search.examples">Examples</a>
</h5> </h5>
<p> <p>

View File

@ -136,7 +136,7 @@
<span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.ref.regex_token_iterator.description"></a><h5> <a name="boost_regex.ref.regex_token_iterator.description"></a><h5>
<a name="id883023"></a> <a name="id772869"></a>
<a class="link" href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.description">Description</a> <a class="link" href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.description">Description</a>
</h5> </h5>
<a name="boost_regex.regex_token_iterator.construct1"></a><p> <a name="boost_regex.regex_token_iterator.construct1"></a><p>
@ -383,7 +383,7 @@
<span class="emphasis"><em>m</em></span>. <span class="emphasis"><em>m</em></span>.
</p> </p>
<a name="boost_regex.ref.regex_token_iterator.examples"></a><h5> <a name="boost_regex.ref.regex_token_iterator.examples"></a><h5>
<a name="id886082"></a> <a name="id775933"></a>
<a class="link" href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.examples">Examples</a> <a class="link" href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.examples">Examples</a>
</h5> </h5>
<p> <p>

View File

@ -46,7 +46,7 @@
<span class="special">}</span> <span class="comment">// namespace boost <span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.regex_traits.description"></a><h5> <a name="boost_regex.ref.regex_traits.description"></a><h5>
<a name="id897539"></a> <a name="id787337"></a>
<a class="link" href="regex_traits.html#boost_regex.ref.regex_traits.description">Description</a> <a class="link" href="regex_traits.html#boost_regex.ref.regex_traits.description">Description</a>
</h5> </h5>
<p> <p>

View File

@ -329,11 +329,11 @@
<span class="special">}</span> <span class="comment">// namespace boost <span class="special">}</span> <span class="comment">// namespace boost
</span></pre> </span></pre>
<a name="boost_regex.ref.sub_match.description"></a><h5> <a name="boost_regex.ref.sub_match.description"></a><h5>
<a name="id840001"></a> <a name="id731546"></a>
<a class="link" href="sub_match.html#boost_regex.ref.sub_match.description">Description</a> <a class="link" href="sub_match.html#boost_regex.ref.sub_match.description">Description</a>
</h5> </h5>
<a name="boost_regex.ref.sub_match.members"></a><h6> <a name="boost_regex.ref.sub_match.members"></a><h6>
<a name="id840014"></a> <a name="id731559"></a>
<a class="link" href="sub_match.html#boost_regex.ref.sub_match.members">Members</a> <a class="link" href="sub_match.html#boost_regex.ref.sub_match.members">Members</a>
</h6> </h6>
<a name="boost_regex.sub_match.value_type"></a><p> <a name="boost_regex.sub_match.value_type"></a><p>
@ -473,7 +473,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.ref.sub_match.sub_match_non_member_operators"></a><h6> <a name="boost_regex.ref.sub_match.sub_match_non_member_operators"></a><h6>
<a name="id841662"></a> <a name="id732659"></a>
<a class="link" href="sub_match.html#boost_regex.ref.sub_match.sub_match_non_member_operators">sub_match <a class="link" href="sub_match.html#boost_regex.ref.sub_match.sub_match_non_member_operators">sub_match
non-member operators</a> non-member operators</a>
</h6> </h6>
@ -1008,7 +1008,7 @@
<span class="special">+</span> <span class="identifier">m2</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span></code>. <span class="special">+</span> <span class="identifier">m2</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span></code>.
</p> </p>
<a name="boost_regex.ref.sub_match.stream_inserter"></a><h6> <a name="boost_regex.ref.sub_match.stream_inserter"></a><h6>
<a name="id854747"></a> <a name="id745745"></a>
<a class="link" href="sub_match.html#boost_regex.ref.sub_match.stream_inserter">Stream inserter</a> <a class="link" href="sub_match.html#boost_regex.ref.sub_match.stream_inserter">Stream inserter</a>
</h6> </h6>
<a name="boost_regex.sub_match.op_stream"></a><p> <a name="boost_regex.sub_match.op_stream"></a><p>

View File

@ -28,7 +28,7 @@
Expression Syntax</a> Expression Syntax</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.syntax.basic_extended.synopsis"></a><h4> <a name="boost_regex.syntax.basic_extended.synopsis"></a><h4>
<a name="id792276"></a> <a name="id681924"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.synopsis">Synopsis</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.synopsis">Synopsis</a>
</h4> </h4>
<p> <p>
@ -46,7 +46,7 @@
<a name="boost_regex.posix_extended_syntax"></a><p> <a name="boost_regex.posix_extended_syntax"></a><p>
</p> </p>
<a name="boost_regex.syntax.basic_extended.posix_extended_syntax"></a><h4> <a name="boost_regex.syntax.basic_extended.posix_extended_syntax"></a><h4>
<a name="id792454"></a> <a name="id682102"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.posix_extended_syntax">POSIX <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.posix_extended_syntax">POSIX
Extended Syntax</a> Extended Syntax</a>
</h4> </h4>
@ -56,7 +56,7 @@
</p> </p>
<pre class="programlisting">.[{()\*+?|^$</pre> <pre class="programlisting">.[{()\*+?|^$</pre>
<a name="boost_regex.syntax.basic_extended.wildcard_"></a><h5> <a name="boost_regex.syntax.basic_extended.wildcard_"></a><h5>
<a name="id792476"></a> <a name="id682124"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.wildcard_">Wildcard:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.wildcard_">Wildcard:</a>
</h5> </h5>
<p> <p>
@ -74,7 +74,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.syntax.basic_extended.anchors_"></a><h5> <a name="boost_regex.syntax.basic_extended.anchors_"></a><h5>
<a name="id792520"></a> <a name="id682168"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.anchors_">Anchors:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.anchors_">Anchors:</a>
</h5> </h5>
<p> <p>
@ -86,7 +86,7 @@
of an expression, or the last character of a sub-expression. of an expression, or the last character of a sub-expression.
</p> </p>
<a name="boost_regex.syntax.basic_extended.marked_sub_expressions_"></a><h5> <a name="boost_regex.syntax.basic_extended.marked_sub_expressions_"></a><h5>
<a name="id792543"></a> <a name="id682191"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.marked_sub_expressions_">Marked <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.marked_sub_expressions_">Marked
sub-expressions:</a> sub-expressions:</a>
</h5> </h5>
@ -98,7 +98,7 @@
to by a back-reference. to by a back-reference.
</p> </p>
<a name="boost_regex.syntax.basic_extended.repeats_"></a><h5> <a name="boost_regex.syntax.basic_extended.repeats_"></a><h5>
<a name="id792577"></a> <a name="id682225"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.repeats_">Repeats:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.repeats_">Repeats:</a>
</h5> </h5>
<p> <p>
@ -184,7 +184,7 @@ cab
operator to be applied to. operator to be applied to.
</p> </p>
<a name="boost_regex.syntax.basic_extended.back_references_"></a><h5> <a name="boost_regex.syntax.basic_extended.back_references_"></a><h5>
<a name="id792883"></a> <a name="id682531"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.back_references_">Back references:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.back_references_">Back references:</a>
</h5> </h5>
<p> <p>
@ -214,7 +214,7 @@ cab
</p></td></tr> </p></td></tr>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended.alternation"></a><h5> <a name="boost_regex.syntax.basic_extended.alternation"></a><h5>
<a name="id792946"></a> <a name="id682594"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.alternation">Alternation</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.alternation">Alternation</a>
</h5> </h5>
<p> <p>
@ -227,7 +227,7 @@ cab
will match either of "abd" or "abef". will match either of "abd" or "abef".
</p> </p>
<a name="boost_regex.syntax.basic_extended.character_sets_"></a><h5> <a name="boost_regex.syntax.basic_extended.character_sets_"></a><h5>
<a name="id793014"></a> <a name="id682662"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_sets_">Character <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_sets_">Character
sets:</a> sets:</a>
</h5> </h5>
@ -240,7 +240,7 @@ cab
A bracket expression may contain any combination of the following: A bracket expression may contain any combination of the following:
</p> </p>
<a name="boost_regex.syntax.basic_extended.single_characters_"></a><h6> <a name="boost_regex.syntax.basic_extended.single_characters_"></a><h6>
<a name="id793034"></a> <a name="id682682"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.single_characters_">Single <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.single_characters_">Single
characters:</a> characters:</a>
</h6> </h6>
@ -249,7 +249,7 @@ cab
or 'c'. or 'c'.
</p> </p>
<a name="boost_regex.syntax.basic_extended.character_ranges_"></a><h6> <a name="boost_regex.syntax.basic_extended.character_ranges_"></a><h6>
<a name="id793065"></a> <a name="id682713"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_ranges_">Character <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_ranges_">Character
ranges:</a> ranges:</a>
</h6> </h6>
@ -265,7 +265,7 @@ cab
the code points of the characters only. the code points of the characters only.
</p> </p>
<a name="boost_regex.syntax.basic_extended.negation_"></a><h6> <a name="boost_regex.syntax.basic_extended.negation_"></a><h6>
<a name="id793126"></a> <a name="id682774"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.negation_">Negation:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.negation_">Negation:</a>
</h6> </h6>
<p> <p>
@ -274,7 +274,7 @@ cab
range <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span></code>. range <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span></code>.
</p> </p>
<a name="boost_regex.syntax.basic_extended.character_classes_"></a><h6> <a name="boost_regex.syntax.basic_extended.character_classes_"></a><h6>
<a name="id793180"></a> <a name="id682828"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_classes_">Character <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_classes_">Character
classes:</a> classes:</a>
</h6> </h6>
@ -284,7 +284,7 @@ cab
<a class="link" href="character_classes.html" title="Character Class Names">character class names</a>. <a class="link" href="character_classes.html" title="Character Class Names">character class names</a>.
</p> </p>
<a name="boost_regex.syntax.basic_extended.collating_elements_"></a><h6> <a name="boost_regex.syntax.basic_extended.collating_elements_"></a><h6>
<a name="id793232"></a> <a name="id682880"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.collating_elements_">Collating <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.collating_elements_">Collating
Elements:</a> Elements:</a>
</h6> </h6>
@ -312,7 +312,7 @@ cab
matches a NUL character. matches a NUL character.
</p> </p>
<a name="boost_regex.syntax.basic_extended.equivalence_classes_"></a><h6> <a name="boost_regex.syntax.basic_extended.equivalence_classes_"></a><h6>
<a name="id793334"></a> <a name="id682982"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.equivalence_classes_">Equivalence <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.equivalence_classes_">Equivalence
classes:</a> classes:</a>
</h6> </h6>
@ -329,7 +329,7 @@ cab
or even all locales on one platform. or even all locales on one platform.
</p> </p>
<a name="boost_regex.syntax.basic_extended.combinations_"></a><h6> <a name="boost_regex.syntax.basic_extended.combinations_"></a><h6>
<a name="id793392"></a> <a name="id683040"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.combinations_">Combinations:</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.combinations_">Combinations:</a>
</h6> </h6>
<p> <p>
@ -337,7 +337,7 @@ cab
<code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]]</span></code>. <code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]]</span></code>.
</p> </p>
<a name="boost_regex.syntax.basic_extended.escapes"></a><h5> <a name="boost_regex.syntax.basic_extended.escapes"></a><h5>
<a name="id793444"></a> <a name="id683092"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.escapes">Escapes</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.escapes">Escapes</a>
</h5> </h5>
<p> <p>
@ -363,7 +363,7 @@ cab
extensions are also supported by Boost.Regex: extensions are also supported by Boost.Regex:
</p> </p>
<a name="boost_regex.syntax.basic_extended.escapes_matching_a_specific_character"></a><h6> <a name="boost_regex.syntax.basic_extended.escapes_matching_a_specific_character"></a><h6>
<a name="id793488"></a> <a name="id683362"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.escapes_matching_a_specific_character">Escapes <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.escapes_matching_a_specific_character">Escapes
matching a specific character</a> matching a specific character</a>
</h6> </h6>
@ -552,7 +552,7 @@ cab
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_"></a><h6> <a name="boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_"></a><h6>
<a name="id794132"></a> <a name="id683652"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_">"Single <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_">"Single
character" character classes:</a> character" character classes:</a>
</h6> </h6>
@ -706,7 +706,7 @@ cab
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended.character_properties"></a><h6> <a name="boost_regex.syntax.basic_extended.character_properties"></a><h6>
<a name="id794620"></a> <a name="id684141"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_properties">Character <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.character_properties">Character
Properties</a> Properties</a>
</h6> </h6>
@ -813,7 +813,7 @@ cab
matches any "digit" character, as does <code class="computeroutput"><span class="special">\</span><span class="identifier">p</span><span class="special">{</span><span class="identifier">digit</span><span class="special">}</span></code>. matches any "digit" character, as does <code class="computeroutput"><span class="special">\</span><span class="identifier">p</span><span class="special">{</span><span class="identifier">digit</span><span class="special">}</span></code>.
</p> </p>
<a name="boost_regex.syntax.basic_extended.word_boundaries"></a><h6> <a name="boost_regex.syntax.basic_extended.word_boundaries"></a><h6>
<a name="id794927"></a> <a name="id684448"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.word_boundaries">Word Boundaries</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.word_boundaries">Word Boundaries</a>
</h6> </h6>
<p> <p>
@ -888,7 +888,7 @@ cab
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended.buffer_boundaries"></a><h6> <a name="boost_regex.syntax.basic_extended.buffer_boundaries"></a><h6>
<a name="id795083"></a> <a name="id684604"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.buffer_boundaries">Buffer <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.buffer_boundaries">Buffer
boundaries</a> boundaries</a>
</h6> </h6>
@ -979,7 +979,7 @@ cab
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended.continuation_escape"></a><h6> <a name="boost_regex.syntax.basic_extended.continuation_escape"></a><h6>
<a name="id795268"></a> <a name="id684789"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.continuation_escape">Continuation <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.continuation_escape">Continuation
Escape</a> Escape</a>
</h6> </h6>
@ -991,7 +991,7 @@ cab
match to start where the last one ended. match to start where the last one ended.
</p> </p>
<a name="boost_regex.syntax.basic_extended.quoting_escape"></a><h6> <a name="boost_regex.syntax.basic_extended.quoting_escape"></a><h6>
<a name="id795296"></a> <a name="id684816"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.quoting_escape">Quoting <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.quoting_escape">Quoting
escape</a> escape</a>
</h6> </h6>
@ -1005,7 +1005,7 @@ cab
<span class="special">\*+</span><span class="identifier">aaa</span> <span class="special">\*+</span><span class="identifier">aaa</span>
</pre> </pre>
<a name="boost_regex.syntax.basic_extended.unicode_escapes"></a><h6> <a name="boost_regex.syntax.basic_extended.unicode_escapes"></a><h6>
<a name="id795376"></a> <a name="id684897"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.unicode_escapes">Unicode <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.unicode_escapes">Unicode
escapes</a> escapes</a>
</h6> </h6>
@ -1056,7 +1056,7 @@ cab
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.basic_extended.any_other_escape"></a><h6> <a name="boost_regex.syntax.basic_extended.any_other_escape"></a><h6>
<a name="id795478"></a> <a name="id684999"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.any_other_escape">Any other <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.any_other_escape">Any other
escape</a> escape</a>
</h6> </h6>
@ -1065,7 +1065,7 @@ cab
\@ matches a literal '@'. \@ matches a literal '@'.
</p> </p>
<a name="boost_regex.syntax.basic_extended.operator_precedence"></a><h5> <a name="boost_regex.syntax.basic_extended.operator_precedence"></a><h5>
<a name="id795495"></a> <a name="id685015"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.operator_precedence">Operator <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.operator_precedence">Operator
precedence</a> precedence</a>
</h5> </h5>
@ -1101,7 +1101,7 @@ cab
</li> </li>
</ol></div> </ol></div>
<a name="boost_regex.syntax.basic_extended.what_gets_matched"></a><h5> <a name="boost_regex.syntax.basic_extended.what_gets_matched"></a><h5>
<a name="id795628"></a> <a name="id685149"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.what_gets_matched">What <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.what_gets_matched">What
Gets Matched</a> Gets Matched</a>
</h5> </h5>
@ -1111,11 +1111,11 @@ cab
rule</a>. rule</a>.
</p> </p>
<a name="boost_regex.syntax.basic_extended.variations"></a><h4> <a name="boost_regex.syntax.basic_extended.variations"></a><h4>
<a name="id795650"></a> <a name="id685170"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.variations">Variations</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.variations">Variations</a>
</h4> </h4>
<a name="boost_regex.syntax.basic_extended.egrep"></a><h5> <a name="boost_regex.syntax.basic_extended.egrep"></a><h5>
<a name="id795663"></a> <a name="id685183"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.egrep">Egrep</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.egrep">Egrep</a>
</h5> </h5>
<p> <p>
@ -1136,7 +1136,7 @@ cab
used with the -E option. used with the -E option.
</p> </p>
<a name="boost_regex.syntax.basic_extended.awk"></a><h5> <a name="boost_regex.syntax.basic_extended.awk"></a><h5>
<a name="id795765"></a> <a name="id685285"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.awk">awk</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.awk">awk</a>
</h5> </h5>
<p> <p>
@ -1150,7 +1150,7 @@ cab
these by default anyway. these by default anyway.
</p> </p>
<a name="boost_regex.syntax.basic_extended.options"></a><h4> <a name="boost_regex.syntax.basic_extended.options"></a><h4>
<a name="id795790"></a> <a name="id685311"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.options">Options</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.options">Options</a>
</h4> </h4>
<p> <p>
@ -1163,7 +1163,7 @@ cab
modify how the case and locale sensitivity are to be applied. modify how the case and locale sensitivity are to be applied.
</p> </p>
<a name="boost_regex.syntax.basic_extended.references"></a><h4> <a name="boost_regex.syntax.basic_extended.references"></a><h4>
<a name="id795868"></a> <a name="id685389"></a>
<a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.references">References</a> <a class="link" href="basic_extended.html#boost_regex.syntax.basic_extended.references">References</a>
</h4> </h4>
<p> <p>

View File

@ -28,7 +28,7 @@
Expression Syntax</a> Expression Syntax</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.syntax.basic_syntax.synopsis"></a><h4> <a name="boost_regex.syntax.basic_syntax.synopsis"></a><h4>
<a name="id795917"></a> <a name="id685438"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.synopsis">Synopsis</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.synopsis">Synopsis</a>
</h4> </h4>
<p> <p>
@ -45,7 +45,7 @@
<a name="boost_regex.posix_basic"></a><p> <a name="boost_regex.posix_basic"></a><p>
</p> </p>
<a name="boost_regex.syntax.basic_syntax.posix_basic_syntax"></a><h4> <a name="boost_regex.syntax.basic_syntax.posix_basic_syntax"></a><h4>
<a name="id797977"></a> <a name="id686183"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.posix_basic_syntax">POSIX <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.posix_basic_syntax">POSIX
Basic Syntax</a> Basic Syntax</a>
</h4> </h4>
@ -55,7 +55,7 @@
</p> </p>
<pre class="programlisting">.[\*^$</pre> <pre class="programlisting">.[\*^$</pre>
<a name="boost_regex.syntax.basic_syntax.wildcard_"></a><h5> <a name="boost_regex.syntax.basic_syntax.wildcard_"></a><h5>
<a name="id797998"></a> <a name="id686205"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.wildcard_">Wildcard:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.wildcard_">Wildcard:</a>
</h5> </h5>
<p> <p>
@ -73,7 +73,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.syntax.basic_syntax.anchors_"></a><h5> <a name="boost_regex.syntax.basic_syntax.anchors_"></a><h5>
<a name="id798043"></a> <a name="id686249"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.anchors_">Anchors:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.anchors_">Anchors:</a>
</h5> </h5>
<p> <p>
@ -85,7 +85,7 @@
of an expression, or the last character of a sub-expression. of an expression, or the last character of a sub-expression.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.marked_sub_expressions_"></a><h5> <a name="boost_regex.syntax.basic_syntax.marked_sub_expressions_"></a><h5>
<a name="id798063"></a> <a name="id686270"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.marked_sub_expressions_">Marked <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.marked_sub_expressions_">Marked
sub-expressions:</a> sub-expressions:</a>
</h5> </h5>
@ -97,7 +97,7 @@
by a back-reference. by a back-reference.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.repeats_"></a><h5> <a name="boost_regex.syntax.basic_syntax.repeats_"></a><h5>
<a name="id798094"></a> <a name="id686301"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.repeats_">Repeats:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.repeats_">Repeats:</a>
</h5> </h5>
<p> <p>
@ -155,7 +155,7 @@ aaaa
to. to.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.back_references_"></a><h5> <a name="boost_regex.syntax.basic_syntax.back_references_"></a><h5>
<a name="id798259"></a> <a name="id686465"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.back_references_">Back references:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.back_references_">Back references:</a>
</h5> </h5>
<p> <p>
@ -173,7 +173,7 @@ aaaa
</p> </p>
<pre class="programlisting">aaabba</pre> <pre class="programlisting">aaabba</pre>
<a name="boost_regex.syntax.basic_syntax.character_sets_"></a><h5> <a name="boost_regex.syntax.basic_syntax.character_sets_"></a><h5>
<a name="id798308"></a> <a name="id686515"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_sets_">Character <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_sets_">Character
sets:</a> sets:</a>
</h5> </h5>
@ -186,7 +186,7 @@ aaaa
A bracket expression may contain any combination of the following: A bracket expression may contain any combination of the following:
</p> </p>
<a name="boost_regex.syntax.basic_syntax.single_characters_"></a><h6> <a name="boost_regex.syntax.basic_syntax.single_characters_"></a><h6>
<a name="id798328"></a> <a name="id686535"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.single_characters_">Single <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.single_characters_">Single
characters:</a> characters:</a>
</h6> </h6>
@ -195,7 +195,7 @@ aaaa
or 'c'. or 'c'.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.character_ranges_"></a><h6> <a name="boost_regex.syntax.basic_syntax.character_ranges_"></a><h6>
<a name="id798360"></a> <a name="id686566"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_ranges_">Character <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_ranges_">Character
ranges:</a> ranges:</a>
</h6> </h6>
@ -211,7 +211,7 @@ aaaa
of the characters only. of the characters only.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.negation_"></a><h6> <a name="boost_regex.syntax.basic_syntax.negation_"></a><h6>
<a name="id798416"></a> <a name="id686623"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.negation_">Negation:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.negation_">Negation:</a>
</h6> </h6>
<p> <p>
@ -220,7 +220,7 @@ aaaa
range a-c. range a-c.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.character_classes_"></a><h6> <a name="boost_regex.syntax.basic_syntax.character_classes_"></a><h6>
<a name="id798454"></a> <a name="id686661"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_classes_">Character <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_classes_">Character
classes:</a> classes:</a>
</h6> </h6>
@ -230,7 +230,7 @@ aaaa
<a class="link" href="character_classes.html" title="Character Class Names">character class names</a>. <a class="link" href="character_classes.html" title="Character Class Names">character class names</a>.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.collating_elements_"></a><h6> <a name="boost_regex.syntax.basic_syntax.collating_elements_"></a><h6>
<a name="id798506"></a> <a name="id686713"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.collating_elements_">Collating <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.collating_elements_">Collating
Elements:</a> Elements:</a>
</h6> </h6>
@ -259,7 +259,7 @@ aaaa
element names</a>. element names</a>.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.equivalence_classes_"></a><h6> <a name="boost_regex.syntax.basic_syntax.equivalence_classes_"></a><h6>
<a name="id798597"></a> <a name="id686804"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.equivalence_classes_">Equivalence <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.equivalence_classes_">Equivalence
classes:</a> classes:</a>
</h6> </h6>
@ -276,7 +276,7 @@ aaaa
or even all locales on one platform. or even all locales on one platform.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.combinations_"></a><h6> <a name="boost_regex.syntax.basic_syntax.combinations_"></a><h6>
<a name="id798655"></a> <a name="id686861"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.combinations_">Combinations:</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.combinations_">Combinations:</a>
</h6> </h6>
<p> <p>
@ -284,7 +284,7 @@ aaaa
<code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]].</span></code> <code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]].</span></code>
</p> </p>
<a name="boost_regex.syntax.basic_syntax.escapes"></a><h5> <a name="boost_regex.syntax.basic_syntax.escapes"></a><h5>
<a name="id798708"></a> <a name="id686914"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.escapes">Escapes</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.escapes">Escapes</a>
</h5> </h5>
<p> <p>
@ -299,7 +299,7 @@ aaaa
will match either a literal '\' or a '^'. will match either a literal '\' or a '^'.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.what_gets_matched"></a><h4> <a name="boost_regex.syntax.basic_syntax.what_gets_matched"></a><h4>
<a name="id798741"></a> <a name="id686948"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.what_gets_matched">What Gets <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.what_gets_matched">What Gets
Matched</a> Matched</a>
</h4> </h4>
@ -309,13 +309,13 @@ aaaa
rule</a>. rule</a>.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.variations"></a><h4> <a name="boost_regex.syntax.basic_syntax.variations"></a><h4>
<a name="id798763"></a> <a name="id686969"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.variations">Variations</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.variations">Variations</a>
</h4> </h4>
<a name="boost_regex.grep_syntax"></a><p> <a name="boost_regex.grep_syntax"></a><p>
</p> </p>
<a name="boost_regex.syntax.basic_syntax.grep"></a><h5> <a name="boost_regex.syntax.basic_syntax.grep"></a><h5>
<a name="id798783"></a> <a name="id686990"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.grep">Grep</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.grep">Grep</a>
</h5> </h5>
<p> <p>
@ -333,7 +333,7 @@ aaaa
As its name suggests, this behavior is consistent with the Unix utility grep. As its name suggests, this behavior is consistent with the Unix utility grep.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.emacs"></a><h5> <a name="boost_regex.syntax.basic_syntax.emacs"></a><h5>
<a name="id798878"></a> <a name="id687085"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.emacs">emacs</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.emacs">emacs</a>
</h5> </h5>
<p> <p>
@ -613,7 +613,7 @@ aaaa
leftmost-longest rule</a>. leftmost-longest rule</a>.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.options"></a><h4> <a name="boost_regex.syntax.basic_syntax.options"></a><h4>
<a name="id799296"></a> <a name="id687502"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.options">Options</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.options">Options</a>
</h4> </h4>
<p> <p>
@ -627,7 +627,7 @@ aaaa
options</a> modify how the case and locale sensitivity are to be applied. options</a> modify how the case and locale sensitivity are to be applied.
</p> </p>
<a name="boost_regex.syntax.basic_syntax.references"></a><h4> <a name="boost_regex.syntax.basic_syntax.references"></a><h4>
<a name="id799402"></a> <a name="id687609"></a>
<a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.references">References</a> <a class="link" href="basic_syntax.html#boost_regex.syntax.basic_syntax.references">References</a>
</h4> </h4>
<p> <p>

View File

@ -28,7 +28,7 @@
Syntax</a> Syntax</a>
</h3></div></div></div> </h3></div></div></div>
<a name="boost_regex.syntax.perl_syntax.synopsis"></a><h4> <a name="boost_regex.syntax.perl_syntax.synopsis"></a><h4>
<a name="id786403"></a> <a name="id675915"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.synopsis">Synopsis</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.synopsis">Synopsis</a>
</h4> </h4>
<p> <p>
@ -43,7 +43,7 @@
</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span> <span class="identifier">e2</span><span class="special">(</span><span class="identifier">my_expression</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">perl</span><span class="special">|</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">icase</span><span class="special">);</span> </span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span> <span class="identifier">e2</span><span class="special">(</span><span class="identifier">my_expression</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">perl</span><span class="special">|</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">icase</span><span class="special">);</span>
</pre> </pre>
<a name="boost_regex.syntax.perl_syntax.perl_regular_expression_syntax"></a><h4> <a name="boost_regex.syntax.perl_syntax.perl_regular_expression_syntax"></a><h4>
<a name="id786551"></a> <a name="id676062"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_regular_expression_syntax">Perl <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_regular_expression_syntax">Perl
Regular Expression Syntax</a> Regular Expression Syntax</a>
</h4> </h4>
@ -53,7 +53,7 @@
</p> </p>
<pre class="programlisting">.[{()\*+?|^$</pre> <pre class="programlisting">.[{()\*+?|^$</pre>
<a name="boost_regex.syntax.perl_syntax.wildcard"></a><h5> <a name="boost_regex.syntax.perl_syntax.wildcard"></a><h5>
<a name="id786575"></a> <a name="id676086"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.wildcard">Wildcard</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.wildcard">Wildcard</a>
</h5> </h5>
<p> <p>
@ -73,7 +73,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.syntax.perl_syntax.anchors"></a><h5> <a name="boost_regex.syntax.perl_syntax.anchors"></a><h5>
<a name="id786621"></a> <a name="id676133"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.anchors">Anchors</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.anchors">Anchors</a>
</h5> </h5>
<p> <p>
@ -83,7 +83,7 @@
A '$' character shall match the end of a line. A '$' character shall match the end of a line.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.marked_sub_expressions"></a><h5> <a name="boost_regex.syntax.perl_syntax.marked_sub_expressions"></a><h5>
<a name="id786643"></a> <a name="id676155"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.marked_sub_expressions">Marked <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.marked_sub_expressions">Marked
sub-expressions</a> sub-expressions</a>
</h5> </h5>
@ -94,7 +94,7 @@
can also repeated, or referred to by a back-reference. can also repeated, or referred to by a back-reference.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.non_marking_grouping"></a><h5> <a name="boost_regex.syntax.perl_syntax.non_marking_grouping"></a><h5>
<a name="id786669"></a> <a name="id676181"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_grouping">Non-marking <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_grouping">Non-marking
grouping</a> grouping</a>
</h5> </h5>
@ -107,7 +107,7 @@
without splitting out any separate sub-expressions. without splitting out any separate sub-expressions.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.repeats"></a><h5> <a name="boost_regex.syntax.perl_syntax.repeats"></a><h5>
<a name="id786705"></a> <a name="id676217"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.repeats">Repeats</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.repeats">Repeats</a>
</h5> </h5>
<p> <p>
@ -188,7 +188,7 @@
to be applied to. to be applied to.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.non_greedy_repeats"></a><h5> <a name="boost_regex.syntax.perl_syntax.non_greedy_repeats"></a><h5>
<a name="id786942"></a> <a name="id676453"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_greedy_repeats">Non greedy <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_greedy_repeats">Non greedy
repeats</a> repeats</a>
</h5> </h5>
@ -218,16 +218,16 @@
while consuming as little input as possible. while consuming as little input as possible.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.pocessive_repeats"></a><h5> <a name="boost_regex.syntax.perl_syntax.pocessive_repeats"></a><h5>
<a name="id787001"></a> <a name="id676512"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.pocessive_repeats">Pocessive <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.pocessive_repeats">Pocessive
repeats</a> repeats</a>
</h5> </h5>
<p> <p>
By default when a repeated patten does not match then the engine will backtrack By default when a repeated pattern does not match then the engine will backtrack
until a match is found. However, this behaviour can sometime be undesireable until a match is found. However, this behaviour can sometime be undesireable
so there are also "pocessive" repeats: these match as much as possible so there are also "possessive" repeats: these match as much as
and do not then allow backtracking if the rest of the expression fails to possible and do not then allow backtracking if the rest of the expression
match. fails to match.
</p> </p>
<p> <p>
<code class="literal">*+</code> Matches the previous atom zero or more times, while <code class="literal">*+</code> Matches the previous atom zero or more times, while
@ -250,7 +250,7 @@
while giving nothing back. while giving nothing back.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.back_references"></a><h5> <a name="boost_regex.syntax.perl_syntax.back_references"></a><h5>
<a name="id787059"></a> <a name="id676571"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.back_references">Back references</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.back_references">Back references</a>
</h5> </h5>
<p> <p>
@ -360,7 +360,7 @@
named "two". named "two".
</p> </p>
<a name="boost_regex.syntax.perl_syntax.alternation"></a><h5> <a name="boost_regex.syntax.perl_syntax.alternation"></a><h5>
<a name="id787279"></a> <a name="id676791"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.alternation">Alternation</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.alternation">Alternation</a>
</h5> </h5>
<p> <p>
@ -387,7 +387,7 @@
<code class="literal">(?:abc)??</code> has exactly the same effect. <code class="literal">(?:abc)??</code> has exactly the same effect.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.character_sets"></a><h5> <a name="boost_regex.syntax.perl_syntax.character_sets"></a><h5>
<a name="id787347"></a> <a name="id677140"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_sets">Character sets</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_sets">Character sets</a>
</h5> </h5>
<p> <p>
@ -399,7 +399,7 @@
A bracket expression may contain any combination of the following: A bracket expression may contain any combination of the following:
</p> </p>
<a name="boost_regex.syntax.perl_syntax.single_characters"></a><h6> <a name="boost_regex.syntax.perl_syntax.single_characters"></a><h6>
<a name="id788761"></a> <a name="id677171"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.single_characters">Single characters</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.single_characters">Single characters</a>
</h6> </h6>
<p> <p>
@ -407,7 +407,7 @@
'b', or 'c'. 'b', or 'c'.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.character_ranges"></a><h6> <a name="boost_regex.syntax.perl_syntax.character_ranges"></a><h6>
<a name="id788783"></a> <a name="id677192"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_ranges">Character <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_ranges">Character
ranges</a> ranges</a>
</h6> </h6>
@ -421,7 +421,7 @@
sensitive. sensitive.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.negation"></a><h6> <a name="boost_regex.syntax.perl_syntax.negation"></a><h6>
<a name="id788815"></a> <a name="id677225"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.negation">Negation</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.negation">Negation</a>
</h6> </h6>
<p> <p>
@ -430,7 +430,7 @@
matches any character that is not in the range <code class="literal">a-c</code>. matches any character that is not in the range <code class="literal">a-c</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.character_classes"></a><h6> <a name="boost_regex.syntax.perl_syntax.character_classes"></a><h6>
<a name="id788843"></a> <a name="id677252"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_classes">Character <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_classes">Character
classes</a> classes</a>
</h6> </h6>
@ -441,7 +441,7 @@
class names</a>. class names</a>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.collating_elements"></a><h6> <a name="boost_regex.syntax.perl_syntax.collating_elements"></a><h6>
<a name="id788875"></a> <a name="id677285"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.collating_elements">Collating <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.collating_elements">Collating
Elements</a> Elements</a>
</h6> </h6>
@ -463,7 +463,7 @@
matches a <code class="literal">\0</code> character. matches a <code class="literal">\0</code> character.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.equivalence_classes"></a><h6> <a name="boost_regex.syntax.perl_syntax.equivalence_classes"></a><h6>
<a name="id788938"></a> <a name="id677347"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.equivalence_classes">Equivalence <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.equivalence_classes">Equivalence
classes</a> classes</a>
</h6> </h6>
@ -480,7 +480,7 @@
or even all locales on one platform. or even all locales on one platform.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.escaped_characters"></a><h6> <a name="boost_regex.syntax.perl_syntax.escaped_characters"></a><h6>
<a name="id788986"></a> <a name="id677395"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.escaped_characters">Escaped <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.escaped_characters">Escaped
Characters</a> Characters</a>
</h6> </h6>
@ -492,7 +492,7 @@
is <span class="emphasis"><em>not</em></span> a "word" character. is <span class="emphasis"><em>not</em></span> a "word" character.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.combinations"></a><h6> <a name="boost_regex.syntax.perl_syntax.combinations"></a><h6>
<a name="id789054"></a> <a name="id677464"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.combinations">Combinations</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.combinations">Combinations</a>
</h6> </h6>
<p> <p>
@ -500,7 +500,7 @@
<code class="literal">[[:digit:]a-c[.NUL.]]</code>. <code class="literal">[[:digit:]a-c[.NUL.]]</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.escapes"></a><h5> <a name="boost_regex.syntax.perl_syntax.escapes"></a><h5>
<a name="id789076"></a> <a name="id677485"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.escapes">Escapes</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.escapes">Escapes</a>
</h5> </h5>
<p> <p>
@ -692,7 +692,7 @@
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_"></a><h6> <a name="boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_"></a><h6>
<a name="id789463"></a> <a name="id677873"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_">"Single <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_">"Single
character" character classes:</a> character" character classes:</a>
</h6> </h6>
@ -894,7 +894,7 @@
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.perl_syntax.character_properties"></a><h6> <a name="boost_regex.syntax.perl_syntax.character_properties"></a><h6>
<a name="id790063"></a> <a name="id678473"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_properties">Character <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_properties">Character
Properties</a> Properties</a>
</h6> </h6>
@ -1002,7 +1002,7 @@
as does <code class="literal">\p{digit}</code>. as does <code class="literal">\p{digit}</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.word_boundaries"></a><h6> <a name="boost_regex.syntax.perl_syntax.word_boundaries"></a><h6>
<a name="id790352"></a> <a name="id678762"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.word_boundaries">Word Boundaries</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.word_boundaries">Word Boundaries</a>
</h6> </h6>
<p> <p>
@ -1021,7 +1021,7 @@
<code class="literal">\B</code> Matches only when not at a word boundary. <code class="literal">\B</code> Matches only when not at a word boundary.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.buffer_boundaries"></a><h6> <a name="boost_regex.syntax.perl_syntax.buffer_boundaries"></a><h6>
<a name="id790404"></a> <a name="id678814"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.buffer_boundaries">Buffer boundaries</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.buffer_boundaries">Buffer boundaries</a>
</h6> </h6>
<p> <p>
@ -1036,17 +1036,19 @@
\' Matches at the end of a buffer only. \' Matches at the end of a buffer only.
</p> </p>
<p> <p>
\A Matches at the start of a buffer only (the same as \`). \A Matches at the start of a buffer only (the same as <code class="literal">\\\`</code>).
</p> </p>
<p> <p>
\z Matches at the end of a buffer only (the same as \'). \z Matches at the end of a buffer only (the same as <code class="literal">\\'</code>).
</p> </p>
<p> <p>
\Z Matches an optional sequence of newlines at the end of a buffer: equivalent \Z Matches a zero-width assertion consisting of an optional sequence of newlines
to the regular expression <code class="literal">\n*\z</code> at the end of a buffer: equivalent to the regular expression <code class="literal">(?=\v*\z)</code>.
Note that this is subtly different from Perl which behaves as if matching
<code class="literal">(?=\n?\z)</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.continuation_escape"></a><h6> <a name="boost_regex.syntax.perl_syntax.continuation_escape"></a><h6>
<a name="id790445"></a> <a name="id678871"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.continuation_escape">Continuation <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.continuation_escape">Continuation
Escape</a> Escape</a>
</h6> </h6>
@ -1058,7 +1060,7 @@
one ended. one ended.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.quoting_escape"></a><h6> <a name="boost_regex.syntax.perl_syntax.quoting_escape"></a><h6>
<a name="id790466"></a> <a name="id678893"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.quoting_escape">Quoting escape</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.quoting_escape">Quoting escape</a>
</h6> </h6>
<p> <p>
@ -1071,7 +1073,7 @@
<span class="special">\*+</span><span class="identifier">aaa</span> <span class="special">\*+</span><span class="identifier">aaa</span>
</pre> </pre>
<a name="boost_regex.syntax.perl_syntax.unicode_escapes"></a><h6> <a name="boost_regex.syntax.perl_syntax.unicode_escapes"></a><h6>
<a name="id790513"></a> <a name="id678940"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.unicode_escapes">Unicode escapes</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.unicode_escapes">Unicode escapes</a>
</h6> </h6>
<p> <p>
@ -1081,7 +1083,7 @@
followed by a sequence of zero or more combining characters. followed by a sequence of zero or more combining characters.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.matching_line_endings"></a><h6> <a name="boost_regex.syntax.perl_syntax.matching_line_endings"></a><h6>
<a name="id790540"></a> <a name="id678966"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.matching_line_endings">Matching <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.matching_line_endings">Matching
Line Endings</a> Line Endings</a>
</h6> </h6>
@ -1090,7 +1092,7 @@
sequence, specifically it is identical to the expression <code class="literal">(?&gt;\x0D\x0A?|[\x0A-\x0C\x85\x{2028}\x{2029}])</code>. sequence, specifically it is identical to the expression <code class="literal">(?&gt;\x0D\x0A?|[\x0A-\x0C\x85\x{2028}\x{2029}])</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.keeping_back_some_text"></a><h6> <a name="boost_regex.syntax.perl_syntax.keeping_back_some_text"></a><h6>
<a name="id790566"></a> <a name="id678992"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.keeping_back_some_text">Keeping <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.keeping_back_some_text">Keeping
back some text</a> back some text</a>
</h6> </h6>
@ -1105,7 +1107,7 @@
This can be used to simulate variable width lookbehind assertions. This can be used to simulate variable width lookbehind assertions.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.any_other_escape"></a><h6> <a name="boost_regex.syntax.perl_syntax.any_other_escape"></a><h6>
<a name="id790596"></a> <a name="id679022"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.any_other_escape">Any other <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.any_other_escape">Any other
escape</a> escape</a>
</h6> </h6>
@ -1114,7 +1116,7 @@
\@ matches a literal '@'. \@ matches a literal '@'.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.perl_extended_patterns"></a><h5> <a name="boost_regex.syntax.perl_syntax.perl_extended_patterns"></a><h5>
<a name="id790613"></a> <a name="id679039"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_extended_patterns">Perl <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_extended_patterns">Perl
Extended Patterns</a> Extended Patterns</a>
</h5> </h5>
@ -1123,7 +1125,7 @@
<code class="literal">(?</code>. <code class="literal">(?</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.named_subexpressions"></a><h6> <a name="boost_regex.syntax.perl_syntax.named_subexpressions"></a><h6>
<a name="id790634"></a> <a name="id679061"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.named_subexpressions">Named <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.named_subexpressions">Named
Subexpressions</a> Subexpressions</a>
</h6> </h6>
@ -1145,14 +1147,14 @@
format string for search and replace operations, or in the <a class="link" href="../ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> member functions. format string for search and replace operations, or in the <a class="link" href="../ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> member functions.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.comments"></a><h6> <a name="boost_regex.syntax.perl_syntax.comments"></a><h6>
<a name="id790729"></a> <a name="id679156"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.comments">Comments</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.comments">Comments</a>
</h6> </h6>
<p> <p>
<code class="literal">(?# ... )</code> is treated as a comment, it's contents are ignored. <code class="literal">(?# ... )</code> is treated as a comment, it's contents are ignored.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.modifiers"></a><h6> <a name="boost_regex.syntax.perl_syntax.modifiers"></a><h6>
<a name="id790752"></a> <a name="id679178"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.modifiers">Modifiers</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.modifiers">Modifiers</a>
</h6> </h6>
<p> <p>
@ -1166,7 +1168,7 @@
pattern only. pattern only.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.non_marking_groups"></a><h6> <a name="boost_regex.syntax.perl_syntax.non_marking_groups"></a><h6>
<a name="id790787"></a> <a name="id679213"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_groups">Non-marking <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_groups">Non-marking
groups</a> groups</a>
</h6> </h6>
@ -1175,7 +1177,7 @@
an additional sub-expression. an additional sub-expression.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.branch_reset"></a><h6> <a name="boost_regex.syntax.perl_syntax.branch_reset"></a><h6>
<a name="id790808"></a> <a name="id679235"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.branch_reset">Branch reset</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.branch_reset">Branch reset</a>
</h6> </h6>
<p> <p>
@ -1197,7 +1199,7 @@
# 1 2 2 3 2 3 4 # 1 2 2 3 2 3 4
</pre> </pre>
<a name="boost_regex.syntax.perl_syntax.lookahead"></a><h6> <a name="boost_regex.syntax.perl_syntax.lookahead"></a><h6>
<a name="id790846"></a> <a name="id679272"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookahead">Lookahead</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookahead">Lookahead</a>
</h6> </h6>
<p> <p>
@ -1220,7 +1222,7 @@
could be used to validate the password. could be used to validate the password.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.lookbehind"></a><h6> <a name="boost_regex.syntax.perl_syntax.lookbehind"></a><h6>
<a name="id791346"></a> <a name="id680994"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookbehind">Lookbehind</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookbehind">Lookbehind</a>
</h6> </h6>
<p> <p>
@ -1234,7 +1236,7 @@
(pattern must be of fixed length). (pattern must be of fixed length).
</p> </p>
<a name="boost_regex.syntax.perl_syntax.independent_sub_expressions"></a><h6> <a name="boost_regex.syntax.perl_syntax.independent_sub_expressions"></a><h6>
<a name="id791378"></a> <a name="id681026"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.independent_sub_expressions">Independent <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.independent_sub_expressions">Independent
sub-expressions</a> sub-expressions</a>
</h6> </h6>
@ -1247,7 +1249,7 @@
no match is found at all. no match is found at all.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.recursive_expressions"></a><h6> <a name="boost_regex.syntax.perl_syntax.recursive_expressions"></a><h6>
<a name="id791409"></a> <a name="id681057"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.recursive_expressions">Recursive <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.recursive_expressions">Recursive
Expressions</a> Expressions</a>
</h6> </h6>
@ -1271,7 +1273,7 @@
to the next sub-expression to be declared. to the next sub-expression to be declared.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.conditional_expressions"></a><h6> <a name="boost_regex.syntax.perl_syntax.conditional_expressions"></a><h6>
<a name="id791506"></a> <a name="id681154"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.conditional_expressions">Conditional <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.conditional_expressions">Conditional
Expressions</a> Expressions</a>
</h6> </h6>
@ -1319,7 +1321,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.syntax.perl_syntax.operator_precedence"></a><h5> <a name="boost_regex.syntax.perl_syntax.operator_precedence"></a><h5>
<a name="id791648"></a> <a name="id681296"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.operator_precedence">Operator <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.operator_precedence">Operator
precedence</a> precedence</a>
</h5> </h5>
@ -1354,7 +1356,7 @@
</li> </li>
</ol></div> </ol></div>
<a name="boost_regex.syntax.perl_syntax.what_gets_matched"></a><h4> <a name="boost_regex.syntax.perl_syntax.what_gets_matched"></a><h4>
<a name="id791738"></a> <a name="id681386"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.what_gets_matched">What gets <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.what_gets_matched">What gets
matched</a> matched</a>
</h4> </h4>
@ -1529,7 +1531,7 @@
</tbody> </tbody>
</table></div> </table></div>
<a name="boost_regex.syntax.perl_syntax.variations"></a><h4> <a name="boost_regex.syntax.perl_syntax.variations"></a><h4>
<a name="id792096"></a> <a name="id681744"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.variations">Variations</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.variations">Variations</a>
</h4> </h4>
<p> <p>
@ -1538,7 +1540,7 @@
and <code class="literal">JScript</code></a> are all synonyms for <code class="literal">perl</code>. and <code class="literal">JScript</code></a> are all synonyms for <code class="literal">perl</code>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.options"></a><h4> <a name="boost_regex.syntax.perl_syntax.options"></a><h4>
<a name="id792142"></a> <a name="id681790"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.options">Options</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.options">Options</a>
</h4> </h4>
<p> <p>
@ -1550,7 +1552,7 @@
are to be applied. are to be applied.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.pattern_modifiers"></a><h4> <a name="boost_regex.syntax.perl_syntax.pattern_modifiers"></a><h4>
<a name="id792190"></a> <a name="id681838"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.pattern_modifiers">Pattern <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.pattern_modifiers">Pattern
Modifiers</a> Modifiers</a>
</h4> </h4>
@ -1562,7 +1564,7 @@
and <code class="literal">no_mod_s</code></a>. and <code class="literal">no_mod_s</code></a>.
</p> </p>
<a name="boost_regex.syntax.perl_syntax.references"></a><h4> <a name="boost_regex.syntax.perl_syntax.references"></a><h4>
<a name="id792243"></a> <a name="id681891"></a>
<a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.references">References</a> <a class="link" href="perl_syntax.html#boost_regex.syntax.perl_syntax.references">References</a>
</h4> </h4>
<p> <p>

View File

@ -30,7 +30,7 @@
There are two ways to use Boost.Regex with Unicode strings: There are two ways to use Boost.Regex with Unicode strings:
</p> </p>
<a name="boost_regex.unicode.rely_on_wchar_t"></a><h5> <a name="boost_regex.unicode.rely_on_wchar_t"></a><h5>
<a name="id781905"></a> <a name="id670360"></a>
<a class="link" href="unicode.html#boost_regex.unicode.rely_on_wchar_t">Rely on wchar_t</a> <a class="link" href="unicode.html#boost_regex.unicode.rely_on_wchar_t">Rely on wchar_t</a>
</h5> </h5>
<p> <p>
@ -56,7 +56,7 @@
</li> </li>
</ul></div> </ul></div>
<a name="boost_regex.unicode.use_a_unicode_aware_regular_expression_type_"></a><h5> <a name="boost_regex.unicode.use_a_unicode_aware_regular_expression_type_"></a><h5>
<a name="id782023"></a> <a name="id672158"></a>
<a class="link" href="unicode.html#boost_regex.unicode.use_a_unicode_aware_regular_expression_type_">Use <a class="link" href="unicode.html#boost_regex.unicode.use_a_unicode_aware_regular_expression_type_">Use
a Unicode Aware Regular Expression Type.</a> a Unicode Aware Regular Expression Type.</a>
</h5> </h5>

View File

@ -28,7 +28,7 @@
</h3></div></div></div> </h3></div></div></div>
<div><p class="copyright">Copyright &#169; 1998 -2007 John Maddock</p></div> <div><p class="copyright">Copyright &#169; 1998 -2007 John Maddock</p></div>
<div><div class="legalnotice"> <div><div class="legalnotice">
<a name="id771610"></a><p> <a name="id660044"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p> </p>
@ -196,7 +196,7 @@
</p> </p>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: December 28, 2009 at 12:23:25 GMT</small></p></td> <td align="left"><p><small>Last revised: May 15, 2010 at 09:09:46 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</tr></table> </tr></table>
<hr> <hr>

View File

@ -221,11 +221,17 @@ stored in *this.
template <class charT, class Traits, class A> template <class charT, class Traits, class A>
difference_type length(const std::basic_string<charT, Traits, A>&)const; difference_type length(const std::basic_string<charT, Traits, A>&)const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns the length of sub-expression /sub/, that is to say: [*Effects]: Returns the length of sub-expression /sub/, that is to say:
`(*this)[sub].length()`. `(*this)[sub].length()`.
The overloads that accept a string refer to a named sub-expression /n/. The overloads that accept a string refer to a named sub-expression /n/.
In the event that there is no such named sub-expression then returns an empty string. In the event that there is no such named sub-expression then returns zero.
The template overloads of this function, allow the string and\/or character type The template overloads of this function, allow the string and\/or character type
to be different from the character type of the underlying sequence and\/or regular expression: to be different from the character type of the underlying sequence and\/or regular expression:
@ -244,12 +250,17 @@ Unicode character type.
template <class charT, class Traits, class A> template <class charT, class Traits, class A>
difference_type position(const std::basic_string<charT, Traits, A>&)const; difference_type position(const std::basic_string<charT, Traits, A>&)const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns the starting location of sub-expression /sub/, or -1 if /sub/ was [*Effects]: Returns the starting location of sub-expression /sub/, or -1 if /sub/ was
not matched. Note that if this represents a partial match , then `position()` not matched. Note that if this represents a partial match , then `position()`
will return the location of the partial match even though `(*this)[0].matched` is false. will return the location of the partial match even though `(*this)[0].matched` is false.
The overloads that accept a string refer to a named sub-expression /n/. The overloads that accept a string refer to a named sub-expression /n/.
In the event that there is no such named sub-expression then returns an empty string. In the event that there is no such named sub-expression then returns -1.
The template overloads of this function, allow the string and\/or character type The template overloads of this function, allow the string and\/or character type
to be different from the character type of the underlying sequence and\/or regular expression: to be different from the character type of the underlying sequence and\/or regular expression:
@ -271,6 +282,11 @@ Unicode character type.
template <class charT, class Traits, class A> template <class charT, class Traits, class A>
string_type str(const std::basic_string<charT, Traits, A>& sub)const; string_type str(const std::basic_string<charT, Traits, A>& sub)const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns sub-expression /sub/ as a string: `string_type((*this)[sub])`. [*Effects]: Returns sub-expression /sub/ as a string: `string_type((*this)[sub])`.
The overloads that accept a string, return the string that matched the named sub-expression /n/. The overloads that accept a string, return the string that matched the named sub-expression /n/.
@ -296,6 +312,11 @@ Unicode character type.
template <class charT, class Traits, class A> template <class charT, class Traits, class A>
const_reference operator[](const std::basic_string<charT, Traits, A>& n) const; const_reference operator[](const std::basic_string<charT, Traits, A>& n) const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns a reference to the [sub_match] object representing the character [*Effects]: Returns a reference to the [sub_match] object representing the character
sequence that matched marked sub-expression /n/. If `n == 0` then returns a sequence that matched marked sub-expression /n/. If `n == 0` then returns a
reference to a [sub_match] object representing the character sequence that reference to a [sub_match] object representing the character sequence that
@ -321,6 +342,11 @@ Unicode character type.
const_reference prefix()const; const_reference prefix()const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns a reference to the [sub_match] object representing the [*Effects]: Returns a reference to the [sub_match] object representing the
character sequence from the start of the string being matched or searched, to the character sequence from the start of the string being matched or searched, to the
start of the match found. start of the match found.
@ -330,6 +356,11 @@ start of the match found.
const_reference suffix()const; const_reference suffix()const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: Returns a reference to the [sub_match] object representing the [*Effects]: Returns a reference to the [sub_match] object representing the
character sequence from the end of the match found to the end of the character sequence from the end of the match found to the end of the
string being matched or searched. string being matched or searched.
@ -368,7 +399,15 @@ that computes the replacement string from a function call: either
`fmt(*this)` which must return a container of `char_type`'s to be used as the `fmt(*this)` which must return a container of `char_type`'s to be used as the
replacement text, or either `fmt(*this, out)` or `fmt(*this, out, flags)`, both of replacement text, or either `fmt(*this, out)` or `fmt(*this, out, flags)`, both of
which write the replacement text to `*out`, and then return the new which write the replacement text to `*out`, and then return the new
OutputIterator position. OutputIterator position. Note that if the formatter is a functor, then it is
['passed by value]: users that want to pass function objects with internal state
might want to use [@../../../../doc/html/ref.html Boost.Ref] to wrap the object so
that it's passed by reference.
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: If `fmt` is either a null-terminated string, or a [*Effects]: If `fmt` is either a null-terminated string, or a
container of `char_type`'s, then copies the character sequence `[fmt.begin(), fmt.end())` to container of `char_type`'s, then copies the character sequence `[fmt.begin(), fmt.end())` to
@ -383,7 +422,7 @@ ECMA-262, ECMAScript Language Specification, Chapter 15 part
If `fmt` is a function object, then depending on the number of arguments If `fmt` is a function object, then depending on the number of arguments
the function object accepts, it will either: the function object accepts, it will either:
* Call `fmt(*this)` and copy the result to `OutputIterator` * Call `fmt(*this)` and copy the string returned to `OutputIterator`
/out/. /out/.
* Call `fmt(*this, out)`. * Call `fmt(*this, out)`.
* Call `fmt(*this, out, flags)`. * Call `fmt(*this, out, flags)`.
@ -411,6 +450,11 @@ replacement text, or either `fmt(*this, out)` or `fmt(*this, out, flags)`, both
which write the replacement text to `*out`, and then return the new which write the replacement text to `*out`, and then return the new
OutputIterator position. OutputIterator position.
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: [*Effects]:
If `fmt` is either a null-terminated string, or a If `fmt` is either a null-terminated string, or a
container of `char_type`'s, then copies the string /fmt/: For each format specifier or container of `char_type`'s, then copies the string /fmt/: For each format specifier or
@ -462,6 +506,11 @@ rely on that.
const capture_sequence_type& captures(std::size_t i)const; const capture_sequence_type& captures(std::size_t i)const;
[*Requires]: that the match_results object has been initialized as a result of a
successful call to [regex_search] or [regex_match] or was returned from a [regex_iterator], and
that the underlying iterators have not been subsequently invalidated. Will raise a
`std::logic_error` if the match_results object was not initialized.
[*Effects]: returns a sequence containing all the captures obtained for sub-expression i. [*Effects]: returns a sequence containing all the captures obtained for sub-expression i.
[*Returns]: `(*this)[i].captures();` [*Returns]: `(*this)[i].captures();`

View File

@ -69,7 +69,10 @@ that computes the replacement string from a function call: either
replacement text, or either `fmt(what, out)` or `fmt(what, out, flags)`, both of replacement text, or either `fmt(what, out)` or `fmt(what, out, flags)`, both of
which write the replacement text to `*out`, and then return the new which write the replacement text to `*out`, and then return the new
OutputIterator position. In each case `what` is the [match_results] object OutputIterator position. In each case `what` is the [match_results] object
that represents the match found. that represents the match found. Note that if the formatter is a functor, then it is
['passed by value]: users that want to pass function objects with internal state
might want to use [@../../../../doc/html/ref.html Boost.Ref] to wrap the object so
that it's passed by reference.
[*Effects]: Constructs an [regex_iterator] object: [*Effects]: Constructs an [regex_iterator] object:

View File

@ -27,6 +27,13 @@ Almost all Perl features are supported, except for:
(??{code}) Not implementable in a compiled strongly typed language. (??{code}) Not implementable in a compiled strongly typed language.
(*VERB) The [@http://perldoc.perl.org/perlre.html#Special-Backtracking-Control-Verbs
backtracking control verbs] are not recognised or implemented at this time.
In addition the following features behave slightly differently from Perl:
^ $ \Z These recognise any line termination sequence, and not just \\n: see the Unicode requirements below.
[h4 POSIX] [h4 POSIX]
All the POSIX basic and extended regular expression features are supported, All the POSIX basic and extended regular expression features are supported,

View File

@ -145,9 +145,9 @@ consume as little input as possible while still producing a match.
[h4 Pocessive repeats] [h4 Pocessive repeats]
By default when a repeated patten does not match then the engine will backtrack until By default when a repeated pattern does not match then the engine will backtrack until
a match is found. However, this behaviour can sometime be undesireable so there are a match is found. However, this behaviour can sometime be undesireable so there are
also "pocessive" repeats: these match as much as possible and do not then allow also "possessive" repeats: these match as much as possible and do not then allow
backtracking if the rest of the expression fails to match. backtracking if the rest of the expression fails to match.
=*+= Matches the previous atom zero or more times, while giving nothing back. =*+= Matches the previous atom zero or more times, while giving nothing back.
@ -376,12 +376,13 @@ context is the whole of the input text that is being matched against
\\' Matches at the end of a buffer only. \\' Matches at the end of a buffer only.
\\A Matches at the start of a buffer only (the same as \\\`). \\A Matches at the start of a buffer only (the same as =\\\`=).
\\z Matches at the end of a buffer only (the same as \\'). \\z Matches at the end of a buffer only (the same as =\\'=).
\\Z Matches an optional sequence of newlines at the end of a buffer: \\Z Matches a zero-width assertion consisting of an optional sequence of newlines at the end of a buffer:
equivalent to the regular expression =\n*\z= equivalent to the regular expression [^(?=\\v*\\z)]. Note that this is subtly different from Perl which
behaves as if matching [^(?=\\n?\\z)].
[h5 Continuation Escape] [h5 Continuation Escape]

View File

@ -10,9 +10,12 @@ project
# There are unidentified linker problems on these platforms: # There are unidentified linker problems on these platforms:
<toolset>mipspro-7.4:<link>static <toolset>mipspro-7.4:<link>static
<toolset>sun-5.9:<link>static <toolset>sun-5.9:<link>static
<toolset>msvc:<warnings>all
<toolset>gcc:<warnings>all
<toolset>gcc:<cxxflags>-Wextra
<define>U_USING_ICU_NAMESPACE=0
; ;
rule regex-test-run ( sources + : input * : name * ) rule regex-test-run ( sources + : input * : name * )
{ {
return [ return [

View File

@ -13,9 +13,14 @@
#include <fstream> #include <fstream>
#include <string> #include <string>
#include <vector> #include <vector>
#include <boost/program_options.hpp>
#include <boost/regex.hpp> #include <boost/regex.hpp>
#ifdef BOOST_MSVC
#pragma warning(disable:4512 4244)
#endif
#include <boost/program_options.hpp>
namespace po = boost::program_options; namespace po = boost::program_options;
int after_context; int after_context;

View File

@ -152,9 +152,15 @@ int main()
assert(file == "d.h"); assert(file == "d.h");
// Greek text extraction with u32regex_search: // Greek text extraction with u32regex_search:
U_NAMESPACE_QUALIFIER UnicodeString text = L"Some where in \x0391\x039D\x0395\x0398\x0391 2004"; const UChar t[] = {
'S', 'o', 'm', 'e', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 'n', 0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
};
const UChar g[] = {
0x0391, 0x039D, 0x0395, 0x0398, 0x0391, 0
};
U_NAMESPACE_QUALIFIER UnicodeString text = t;
U_NAMESPACE_QUALIFIER UnicodeString greek = extract_greek(text); U_NAMESPACE_QUALIFIER UnicodeString greek = extract_greek(text);
assert(greek == L"\x0391\x039D\x0395\x0398\x0391 2004"); assert(greek == g);
// extract currency symbols with associated value, use iterator interface: // extract currency symbols with associated value, use iterator interface:
std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the pound sign encoded in UTF-8 std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the pound sign encoded in UTF-8

View File

@ -61,7 +61,7 @@ void search(std::istream& is)
std::memmove(buf, next_pos, leftover); std::memmove(buf, next_pos, leftover);
// fill the rest from the stream: // fill the rest from the stream:
is.read(buf + leftover, size); is.read(buf + leftover, size);
unsigned read = is.gcount(); std::streamsize read = is.gcount();
// check to see if we've run out of text: // check to see if we've run out of text:
have_more = read == size; have_more = read == size;
// reset next_pos: // reset next_pos:

View File

@ -51,7 +51,7 @@ void search(std::istream& is)
std::memmove(buf, next_pos, leftover); std::memmove(buf, next_pos, leftover);
// fill the rest from the stream: // fill the rest from the stream:
is.read(buf + leftover, size); is.read(buf + leftover, size);
unsigned read = is.gcount(); std::streamsize read = is.gcount();
// check to see if we've run out of text: // check to see if we've run out of text:
have_more = read == size; have_more = read == size;
// reset next_pos: // reset next_pos:

View File

@ -89,7 +89,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -84,7 +84,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -107,7 +107,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -72,7 +72,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -42,7 +42,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -42,7 +42,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -85,7 +85,7 @@ void load_file(std::string& s, std::istream& is)
{ {
s.erase(); s.erase();
if(is.bad()) return; if(is.bad()) return;
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -33,7 +33,7 @@ void load_file(std::string& s, std::istream& is)
// //
// attempt to grow string buffer to match file size, // attempt to grow string buffer to match file size,
// this doesn't always work... // this doesn't always work...
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -32,7 +32,7 @@ void load_file(std::string& s, std::istream& is)
// //
// attempt to grow string buffer to match file size, // attempt to grow string buffer to match file size,
// this doesn't always work... // this doesn't always work...
s.reserve(is.rdbuf()->in_avail()); s.reserve(static_cast<std::string::size_type>(is.rdbuf()->in_avail()));
char c; char c;
while(is.get(c)) while(is.get(c))
{ {

View File

@ -76,6 +76,49 @@ namespace std{
typedef boost::char_architype char_type; typedef boost::char_architype char_type;
}; };
} }
//
// Allocator architype:
//
template <class T>
class allocator_architype
{
public:
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef T value_type;
typedef unsigned size_type;
typedef int difference_type;
template <class U>
struct rebind
{
typedef allocator_architype<U> other;
};
pointer address(reference r);
const_pointer address(const_reference r);
pointer allocate(size_type);
pointer allocate(size_type, pointer);
void deallocate(pointer, size_type);
size_type max_size()const;
allocator_architype();
allocator_architype(const allocator_architype&);
template <class Other>
allocator_architype(const allocator_architype<Other>&);
void construct(pointer, const_reference);
void destroy(pointer);
};
template <class T>
bool operator == (const allocator_architype<T>&, const allocator_architype<T>&);
template <class T>
bool operator != (const allocator_architype<T>&, const allocator_architype<T>&);
namespace boost{ namespace boost{
// //
// regex_traits_architype: // regex_traits_architype:
@ -244,7 +287,8 @@ struct BaseRegexConcept
typedef const value_type* pointer_type; typedef const value_type* pointer_type;
typedef bidirectional_iterator_archetype<value_type> BidiIterator; typedef bidirectional_iterator_archetype<value_type> BidiIterator;
typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type; typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
typedef global_regex_namespace::match_results<BidiIterator> match_results_type; typedef global_regex_namespace::match_results<BidiIterator, allocator_architype<sub_match_type> > match_results_type;
typedef global_regex_namespace::match_results<BidiIterator> match_results_default_type;
typedef output_iterator_archetype<value_type> OutIterator; typedef output_iterator_archetype<value_type> OutIterator;
typedef typename regex_traits_computer<Regex>::type traits_type; typedef typename regex_traits_computer<Regex>::type traits_type;
typedef global_regex_namespace::regex_iterator<BidiIterator, value_type, traits_type> regex_iterator_type; typedef global_regex_namespace::regex_iterator<BidiIterator, value_type, traits_type> regex_iterator_type;
@ -318,7 +362,7 @@ struct BaseRegexConcept
const global_regex_namespace::regex_error except(e1); const global_regex_namespace::regex_error except(e1);
e1 = except.code(); e1 = except.code();
typedef typename Regex::value_type value_type; typedef typename Regex::value_type regex_value_type;
function_requires< RegexTraitsConcept<global_regex_namespace::regex_traits<char> > >(); function_requires< RegexTraitsConcept<global_regex_namespace::regex_traits<char> > >();
function_requires< BaseRegexConcept<global_regex_namespace::basic_regex<char> > >(); function_requires< BaseRegexConcept<global_regex_namespace::basic_regex<char> > >();
} }
@ -484,10 +528,10 @@ struct BaseRegexConcept
typedef typename regex_iterator_type::reference rit_reference; typedef typename regex_iterator_type::reference rit_reference;
typedef typename regex_iterator_type::iterator_category rit_iterator_category; typedef typename regex_iterator_type::iterator_category rit_iterator_category;
BOOST_STATIC_ASSERT((::boost::is_same<rit_regex_type, Regex>::value)); BOOST_STATIC_ASSERT((::boost::is_same<rit_regex_type, Regex>::value));
BOOST_STATIC_ASSERT((::boost::is_same<rit_value_type, match_results_type>::value)); BOOST_STATIC_ASSERT((::boost::is_same<rit_value_type, match_results_default_type>::value));
BOOST_STATIC_ASSERT((::boost::is_same<rit_difference_type, std::ptrdiff_t>::value)); BOOST_STATIC_ASSERT((::boost::is_same<rit_difference_type, std::ptrdiff_t>::value));
BOOST_STATIC_ASSERT((::boost::is_same<rit_pointer, const match_results_type*>::value)); BOOST_STATIC_ASSERT((::boost::is_same<rit_pointer, const match_results_default_type*>::value));
BOOST_STATIC_ASSERT((::boost::is_same<rit_reference, const match_results_type&>::value)); BOOST_STATIC_ASSERT((::boost::is_same<rit_reference, const match_results_default_type&>::value));
BOOST_STATIC_ASSERT((::boost::is_convertible<rit_iterator_category*, std::forward_iterator_tag*>::value)); BOOST_STATIC_ASSERT((::boost::is_convertible<rit_iterator_category*, std::forward_iterator_tag*>::value));
// this takes care of most of the checks needed: // this takes care of most of the checks needed:
function_requires<ForwardIteratorConcept<regex_iterator_type> >(); function_requires<ForwardIteratorConcept<regex_iterator_type> >();
@ -540,7 +584,10 @@ struct BaseRegexConcept
OutIterator m_out; OutIterator m_out;
BidiIterator m_in; BidiIterator m_in;
global_regex_namespace::regex_constants::match_flag_type m_mft; global_regex_namespace::regex_constants::match_flag_type m_mft;
global_regex_namespace::match_results<pointer_type> m_pmatch; global_regex_namespace::match_results<
pointer_type,
allocator_architype<global_regex_namespace::sub_match<pointer_type> > >
m_pmatch;
BaseRegexConcept(); BaseRegexConcept();
BaseRegexConcept(const BaseRegexConcept&); BaseRegexConcept(const BaseRegexConcept&);
@ -564,7 +611,7 @@ struct RegexConcept
typedef std::basic_string<value_type> string_type; typedef std::basic_string<value_type> string_type;
typedef boost::bidirectional_iterator_archetype<value_type> BidiIterator; typedef boost::bidirectional_iterator_archetype<value_type> BidiIterator;
typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type; typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
typedef global_regex_namespace::match_results<BidiIterator> match_results_type; typedef global_regex_namespace::match_results<BidiIterator, allocator_architype<sub_match_type> > match_results_type;
typedef output_iterator_archetype<value_type> OutIterator; typedef output_iterator_archetype<value_type> OutIterator;
@ -739,7 +786,7 @@ struct RegexConcept
OutIterator m_out; OutIterator m_out;
BidiIterator m_in; BidiIterator m_in;
global_regex_namespace::regex_constants::match_flag_type m_mft; global_regex_namespace::regex_constants::match_flag_type m_mft;
global_regex_namespace::match_results<typename string_type::const_iterator> m_smatch; global_regex_namespace::match_results<typename string_type::const_iterator, allocator_architype<global_regex_namespace::sub_match<typename string_type::const_iterator> > > m_smatch;
RegexConcept(); RegexConcept();
RegexConcept(const RegexConcept&); RegexConcept(const RegexConcept&);
@ -752,7 +799,7 @@ template <class M>
struct functor1 struct functor1
{ {
typedef typename M::char_type char_type; typedef typename M::char_type char_type;
const char_type* operator()(const M&) const char_type* operator()(const M&)const
{ {
static const char_type c = static_cast<char_type>(0); static const char_type c = static_cast<char_type>(0);
return &c; return &c;
@ -762,7 +809,7 @@ template <class M>
struct functor1b struct functor1b
{ {
typedef typename M::char_type char_type; typedef typename M::char_type char_type;
std::vector<char_type> operator()(const M&) std::vector<char_type> operator()(const M&)const
{ {
static const std::vector<char_type> c; static const std::vector<char_type> c;
return c; return c;
@ -772,7 +819,7 @@ template <class M>
struct functor2 struct functor2
{ {
template <class O> template <class O>
O operator()(const M& /*m*/, O i) O operator()(const M& /*m*/, O i)const
{ {
return i; return i;
} }
@ -781,7 +828,7 @@ template <class M>
struct functor3 struct functor3
{ {
template <class O> template <class O>
O operator()(const M& /*m*/, O i, regex_constants::match_flag_type) O operator()(const M& /*m*/, O i, regex_constants::match_flag_type)const
{ {
return i; return i;
} }
@ -806,7 +853,8 @@ struct BoostRegexConcept
typedef bidirectional_iterator_archetype<value_type> BidiIterator; typedef bidirectional_iterator_archetype<value_type> BidiIterator;
typedef output_iterator_archetype<value_type> OutputIterator; typedef output_iterator_archetype<value_type> OutputIterator;
typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type; typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
typedef global_regex_namespace::match_results<BidiIterator> match_results_type; typedef global_regex_namespace::match_results<BidiIterator, allocator_architype<sub_match_type> > match_results_type;
typedef global_regex_namespace::match_results<BidiIterator> match_results_default_type;
void constraints() void constraints()
{ {
@ -930,36 +978,90 @@ struct BoostRegexConcept
// //
regex_constants::match_flag_type f = regex_constants::match_default; regex_constants::match_flag_type f = regex_constants::match_default;
OutputIterator out = static_object<OutputIterator>::get(); OutputIterator out = static_object<OutputIterator>::get();
functor3<match_results_type> func3;
out = regex_format(out, m_cresults, func3, f); functor3<match_results_default_type> func3;
out = regex_format(out, m_cresults, func3); functor2<match_results_default_type> func2;
functor2<match_results_type> func2; functor1<match_results_default_type> func1;
out = regex_format(out, m_cresults, func2, f);
out = regex_format(out, m_cresults, func2); functor3<match_results_type> func3b;
functor1<match_results_type> func1; functor2<match_results_type> func2b;
out = regex_format(out, m_cresults, func1, f); functor1<match_results_type> func1b;
out = regex_format(out, m_cresults, func1);
m_string += regex_format(m_cresults, func3, f); out = regex_format(out, m_cresults, func3b, f);
m_string += regex_format(m_cresults, func3); out = regex_format(out, m_cresults, func3b);
m_string += regex_format(m_cresults, func2, f); out = regex_format(out, m_cresults, func2b, f);
m_string += regex_format(m_cresults, func2); out = regex_format(out, m_cresults, func2b);
m_string += regex_format(m_cresults, func1, f); out = regex_format(out, m_cresults, func1b, f);
m_string += regex_format(m_cresults, func1); out = regex_format(out, m_cresults, func1b);
out = regex_format(out, m_cresults, boost::ref(func3b), f);
out = regex_format(out, m_cresults, boost::ref(func3b));
out = regex_format(out, m_cresults, boost::ref(func2b), f);
out = regex_format(out, m_cresults, boost::ref(func2b));
out = regex_format(out, m_cresults, boost::ref(func1b), f);
out = regex_format(out, m_cresults, boost::ref(func1b));
out = regex_format(out, m_cresults, boost::cref(func3b), f);
out = regex_format(out, m_cresults, boost::cref(func3b));
out = regex_format(out, m_cresults, boost::cref(func2b), f);
out = regex_format(out, m_cresults, boost::cref(func2b));
out = regex_format(out, m_cresults, boost::cref(func1b), f);
out = regex_format(out, m_cresults, boost::cref(func1b));
out = m_cresults.format(out, func3, f); m_string += regex_format(m_cresults, func3b, f);
out = m_cresults.format(out, func3); m_string += regex_format(m_cresults, func3b);
out = m_cresults.format(out, func2, f); m_string += regex_format(m_cresults, func2b, f);
out = m_cresults.format(out, func2); m_string += regex_format(m_cresults, func2b);
out = m_cresults.format(out, func1, f); m_string += regex_format(m_cresults, func1b, f);
out = m_cresults.format(out, func1); m_string += regex_format(m_cresults, func1b);
m_string += regex_format(m_cresults, boost::ref(func3b), f);
m_string += regex_format(m_cresults, boost::ref(func3b));
m_string += regex_format(m_cresults, boost::ref(func2b), f);
m_string += regex_format(m_cresults, boost::ref(func2b));
m_string += regex_format(m_cresults, boost::ref(func1b), f);
m_string += regex_format(m_cresults, boost::ref(func1b));
m_string += regex_format(m_cresults, boost::cref(func3b), f);
m_string += regex_format(m_cresults, boost::cref(func3b));
m_string += regex_format(m_cresults, boost::cref(func2b), f);
m_string += regex_format(m_cresults, boost::cref(func2b));
m_string += regex_format(m_cresults, boost::cref(func1b), f);
m_string += regex_format(m_cresults, boost::cref(func1b));
m_string += m_cresults.format(func3, f); out = m_cresults.format(out, func3b, f);
m_string += m_cresults.format(func3); out = m_cresults.format(out, func3b);
m_string += m_cresults.format(func2, f); out = m_cresults.format(out, func2b, f);
m_string += m_cresults.format(func2); out = m_cresults.format(out, func2b);
m_string += m_cresults.format(func1, f); out = m_cresults.format(out, func1b, f);
m_string += m_cresults.format(func1); out = m_cresults.format(out, func1b);
out = m_cresults.format(out, boost::ref(func3b), f);
out = m_cresults.format(out, boost::ref(func3b));
out = m_cresults.format(out, boost::ref(func2b), f);
out = m_cresults.format(out, boost::ref(func2b));
out = m_cresults.format(out, boost::ref(func1b), f);
out = m_cresults.format(out, boost::ref(func1b));
out = m_cresults.format(out, boost::cref(func3b), f);
out = m_cresults.format(out, boost::cref(func3b));
out = m_cresults.format(out, boost::cref(func2b), f);
out = m_cresults.format(out, boost::cref(func2b));
out = m_cresults.format(out, boost::cref(func1b), f);
out = m_cresults.format(out, boost::cref(func1b));
m_string += m_cresults.format(func3b, f);
m_string += m_cresults.format(func3b);
m_string += m_cresults.format(func2b, f);
m_string += m_cresults.format(func2b);
m_string += m_cresults.format(func1b, f);
m_string += m_cresults.format(func1b);
m_string += m_cresults.format(boost::ref(func3b), f);
m_string += m_cresults.format(boost::ref(func3b));
m_string += m_cresults.format(boost::ref(func2b), f);
m_string += m_cresults.format(boost::ref(func2b));
m_string += m_cresults.format(boost::ref(func1b), f);
m_string += m_cresults.format(boost::ref(func1b));
m_string += m_cresults.format(boost::cref(func3b), f);
m_string += m_cresults.format(boost::cref(func3b));
m_string += m_cresults.format(boost::cref(func2b), f);
m_string += m_cresults.format(boost::cref(func2b));
m_string += m_cresults.format(boost::cref(func1b), f);
m_string += m_cresults.format(boost::cref(func1b));
out = regex_replace(out, m_in, m_in, ce, func3, f); out = regex_replace(out, m_in, m_in, ce, func3, f);
out = regex_replace(out, m_in, m_in, ce, func3); out = regex_replace(out, m_in, m_in, ce, func3);
@ -967,6 +1069,18 @@ struct BoostRegexConcept
out = regex_replace(out, m_in, m_in, ce, func2); out = regex_replace(out, m_in, m_in, ce, func2);
out = regex_replace(out, m_in, m_in, ce, func1, f); out = regex_replace(out, m_in, m_in, ce, func1, f);
out = regex_replace(out, m_in, m_in, ce, func1); out = regex_replace(out, m_in, m_in, ce, func1);
out = regex_replace(out, m_in, m_in, ce, boost::ref(func3), f);
out = regex_replace(out, m_in, m_in, ce, boost::ref(func3));
out = regex_replace(out, m_in, m_in, ce, boost::ref(func2), f);
out = regex_replace(out, m_in, m_in, ce, boost::ref(func2));
out = regex_replace(out, m_in, m_in, ce, boost::ref(func1), f);
out = regex_replace(out, m_in, m_in, ce, boost::ref(func1));
out = regex_replace(out, m_in, m_in, ce, boost::cref(func3), f);
out = regex_replace(out, m_in, m_in, ce, boost::cref(func3));
out = regex_replace(out, m_in, m_in, ce, boost::cref(func2), f);
out = regex_replace(out, m_in, m_in, ce, boost::cref(func2));
out = regex_replace(out, m_in, m_in, ce, boost::cref(func1), f);
out = regex_replace(out, m_in, m_in, ce, boost::cref(func1));
functor3<match_results<typename string_type::const_iterator> > func3s; functor3<match_results<typename string_type::const_iterator> > func3s;
functor2<match_results<typename string_type::const_iterator> > func2s; functor2<match_results<typename string_type::const_iterator> > func2s;
@ -977,6 +1091,18 @@ struct BoostRegexConcept
m_string += regex_replace(m_string, ce, func2s); m_string += regex_replace(m_string, ce, func2s);
m_string += regex_replace(m_string, ce, func1s, f); m_string += regex_replace(m_string, ce, func1s, f);
m_string += regex_replace(m_string, ce, func1s); m_string += regex_replace(m_string, ce, func1s);
m_string += regex_replace(m_string, ce, boost::ref(func3s), f);
m_string += regex_replace(m_string, ce, boost::ref(func3s));
m_string += regex_replace(m_string, ce, boost::ref(func2s), f);
m_string += regex_replace(m_string, ce, boost::ref(func2s));
m_string += regex_replace(m_string, ce, boost::ref(func1s), f);
m_string += regex_replace(m_string, ce, boost::ref(func1s));
m_string += regex_replace(m_string, ce, boost::cref(func3s), f);
m_string += regex_replace(m_string, ce, boost::cref(func3s));
m_string += regex_replace(m_string, ce, boost::cref(func2s), f);
m_string += regex_replace(m_string, ce, boost::cref(func2s));
m_string += regex_replace(m_string, ce, boost::cref(func1s), f);
m_string += regex_replace(m_string, ce, boost::cref(func1s));
} }
std::basic_ostream<value_type> m_stream; std::basic_ostream<value_type> m_stream;

View File

@ -186,16 +186,19 @@
* *
****************************************************************************/ ****************************************************************************/
#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK) #ifndef BOOST_SYMBOL_EXPORT
# if defined(BOOST_REGEX_SOURCE) # define BOOST_SYMBOL_EXPORT
# define BOOST_REGEX_DECL __declspec(dllexport) # define BOOST_SYMBOL_IMPORT
# define BOOST_REGEX_BUILD_DLL
# else
# define BOOST_REGEX_DECL __declspec(dllimport)
# endif
#endif #endif
#ifndef BOOST_REGEX_DECL #if (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
# if defined(BOOST_REGEX_SOURCE)
# define BOOST_REGEX_DECL BOOST_SYMBOL_EXPORT
# define BOOST_REGEX_BUILD_DLL
# else
# define BOOST_REGEX_DECL BOOST_SYMBOL_IMPORT
# endif
#else
# define BOOST_REGEX_DECL # define BOOST_REGEX_DECL
#endif #endif

View File

@ -27,6 +27,10 @@
#include <boost/mpl/int_fwd.hpp> #include <boost/mpl/int_fwd.hpp>
#include <bitset> #include <bitset>
#ifdef BOOST_MSVC
#pragma warning (push)
#pragma warning (disable: 4251)
#endif
namespace boost{ namespace boost{
@ -1015,6 +1019,10 @@ inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QU
} // namespace boost. } // namespace boost.
#ifdef BOOST_MSVC
#pragma warning (pop)
#endif
#include <boost/regex/v4/u32regex_iterator.hpp> #include <boost/regex/v4/u32regex_iterator.hpp>
#include <boost/regex/v4/u32regex_token_iterator.hpp> #include <boost/regex/v4/u32regex_token_iterator.hpp>

View File

@ -769,14 +769,14 @@ void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
case syntax_element_assert_backref: case syntax_element_assert_backref:
{ {
// just check that the index is valid: // just check that the index is valid:
int id = static_cast<const re_brace*>(state)->index; int idx = static_cast<const re_brace*>(state)->index;
if(id < 0) if(idx < 0)
{ {
id = -id-1; idx = -idx-1;
if(id >= 10000) if(idx >= 10000)
{ {
id = m_pdata->get_id(id); idx = m_pdata->get_id(idx);
if(id <= 0) if(idx <= 0)
{ {
// check of sub-expression that doesn't exist: // check of sub-expression that doesn't exist:
if(0 == this->m_pdata->m_status) // update the error code if not already set if(0 == this->m_pdata->m_status) // update the error code if not already set
@ -804,12 +804,12 @@ void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
{ {
bool ok = false; bool ok = false;
re_syntax_base* p = base; re_syntax_base* p = base;
int id = static_cast<re_jump*>(state)->alt.i; std::ptrdiff_t idx = static_cast<re_jump*>(state)->alt.i;
if(id > 10000) if(idx > 10000)
id = m_pdata->get_id(id); idx = m_pdata->get_id(idx);
while(p) while(p)
{ {
if((p->type == syntax_element_startmark) && (static_cast<re_brace*>(p)->index == id)) if((p->type == syntax_element_startmark) && (static_cast<re_brace*>(p)->index == idx))
{ {
// //
// We've found the target of the recursion, set the jump target: // We've found the target of the recursion, set the jump target:
@ -833,7 +833,7 @@ void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
next_rep_id = static_cast<re_repeat*>(p)->state_id; next_rep_id = static_cast<re_repeat*>(p)->state_id;
break; break;
case syntax_element_endmark: case syntax_element_endmark:
if(static_cast<const re_brace*>(p)->index == id) if(static_cast<const re_brace*>(p)->index == idx)
next_rep_id = -1; next_rep_id = -1;
break; break;
default: default:
@ -1039,6 +1039,14 @@ int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state
case syntax_element_jump: case syntax_element_jump:
state = static_cast<re_jump*>(state)->alt.p; state = static_cast<re_jump*>(state)->alt.p;
continue; continue;
case syntax_element_alt:
{
int r1 = calculate_backstep(state->next.p);
int r2 = calculate_backstep(static_cast<re_alt*>(state)->alt.p);
if((r1 < 0) || (r1 != r2))
return -1;
return result + r1;
}
default: default:
break; break;
} }
@ -1543,3 +1551,4 @@ void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* st
#endif #endif
#endif #endif

View File

@ -1906,7 +1906,9 @@ bool basic_regex_parser<charT, traits>::parse_perl_extension()
m_has_case_change = false; m_has_case_change = false;
charT name_delim; charT name_delim;
int mark_reset = m_mark_reset; int mark_reset = m_mark_reset;
int max_mark = m_max_mark;
m_mark_reset = -1; m_mark_reset = -1;
m_max_mark = m_mark_count;
int v; int v;
// //
// select the actual extension used: // select the actual extension used:
@ -2536,6 +2538,7 @@ option_group_jump:
m_mark_count = m_max_mark; m_mark_count = m_max_mark;
} }
m_mark_reset = mark_reset; m_mark_reset = mark_reset;
m_max_mark = max_mark;
if(markid > 0) if(markid > 0)

View File

@ -56,7 +56,7 @@
#ifdef BOOST_MSVC #ifdef BOOST_MSVC
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4786) #pragma warning(disable:4786 4251)
#endif #endif
namespace boost{ namespace boost{

View File

@ -118,10 +118,14 @@ template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher< std::
#undef BOOST_REGEX_TEMPLATE_DECL #undef BOOST_REGEX_TEMPLATE_DECL
#elif (defined(__GNUC__) && (__GNUC__ >= 3)) #elif (defined(__GNUC__) && (__GNUC__ >= 3)) || !defined(BOOST_NO_EXTERN_TEMPLATE)
# ifndef BOOST_REGEX_INSTANTIATE # ifndef BOOST_REGEX_INSTANTIATE
# define template __extension__ extern template # ifdef __GNUC__
# define template __extension__ extern template
# else
# define template extern template
# endif
# endif # endif
#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES) #if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES)

View File

@ -393,7 +393,6 @@ public:
std::swap(m_subs, that.m_subs); std::swap(m_subs, that.m_subs);
std::swap(m_named_subs, that.m_named_subs); std::swap(m_named_subs, that.m_named_subs);
std::swap(m_last_closed_paren, that.m_last_closed_paren); std::swap(m_last_closed_paren, that.m_last_closed_paren);
std::swap(m_is_singular, that.m_is_singular);
if(m_is_singular) if(m_is_singular)
{ {
if(!that.m_is_singular) if(!that.m_is_singular)
@ -412,6 +411,7 @@ public:
std::swap(m_base, that.m_base); std::swap(m_base, that.m_base);
std::swap(m_null, that.m_null); std::swap(m_null, that.m_null);
} }
std::swap(m_is_singular, that.m_is_singular);
} }
bool operator==(const match_results& that)const bool operator==(const match_results& that)const
{ {
@ -457,7 +457,7 @@ public:
void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true, bool escape_k = false) void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true, bool escape_k = false)
{ {
if(pos) if(pos)
m_last_closed_paren = pos; m_last_closed_paren = static_cast<int>(pos);
pos += 2; pos += 2;
BOOST_ASSERT(m_subs.size() > pos); BOOST_ASSERT(m_subs.size() > pos);
m_subs[pos].second = i; m_subs[pos].second = i;

View File

@ -336,7 +336,7 @@ struct recursion_info
{ {
typedef typename Results::value_type value_type; typedef typename Results::value_type value_type;
typedef typename value_type::iterator iterator; typedef typename value_type::iterator iterator;
int id; int idx;
const re_syntax_base* preturn_address; const re_syntax_base* preturn_address;
Results results; Results results;
repeater_count<iterator>* repeater_stack; repeater_count<iterator>* repeater_stack;
@ -366,7 +366,7 @@ public:
BidiIterator l_base) BidiIterator l_base)
: m_result(what), base(first), last(end), : m_result(what), base(first), last(end),
position(first), backstop(l_base), re(e), traits_inst(e.get_traits()), position(first), backstop(l_base), re(e), traits_inst(e.get_traits()),
m_independent(false), next_count(&rep_obj), rep_obj(&next_count), recursion_stack_position(0) m_independent(false), next_count(&rep_obj), rep_obj(&next_count)
{ {
construct_init(e, f); construct_init(e, f);
} }
@ -468,9 +468,9 @@ private:
// matching flags in use: // matching flags in use:
match_flag_type m_match_flags; match_flag_type m_match_flags;
// how many states we have examined so far: // how many states we have examined so far:
boost::uintmax_t state_count; std::ptrdiff_t state_count;
// max number of states to examine before giving up: // max number of states to examine before giving up:
boost::uintmax_t max_state_count; std::ptrdiff_t max_state_count;
// whether we should ignore case or not: // whether we should ignore case or not:
bool icase; bool icase;
// set to true when (position == last), indicates that we may have a partial match: // set to true when (position == last), indicates that we may have a partial match:
@ -488,8 +488,7 @@ private:
// the bitmask to use when determining whether a match_any matches a newline or not: // the bitmask to use when determining whether a match_any matches a newline or not:
unsigned char match_any_mask; unsigned char match_any_mask;
// recursion information: // recursion information:
recursion_info<results_type> recursion_stack[50]; std::vector<recursion_info<results_type> > recursion_stack;
unsigned recursion_stack_position;
#ifdef BOOST_REGEX_NON_RECURSIVE #ifdef BOOST_REGEX_NON_RECURSIVE
// //
@ -523,7 +522,7 @@ private:
void push_repeater_count(int i, repeater_count<BidiIterator>** s); void push_repeater_count(int i, repeater_count<BidiIterator>** s);
void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id); void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id);
void push_non_greedy_repeat(const re_syntax_base* ps); void push_non_greedy_repeat(const re_syntax_base* ps);
void push_recursion(int id, const re_syntax_base* p, results_type* presults); void push_recursion(int idx, const re_syntax_base* p, results_type* presults);
void push_recursion_pop(); void push_recursion_pop();
// pointer to base of stack: // pointer to base of stack:

View File

@ -98,23 +98,23 @@ void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std
// //
// Calculate NS^2 first: // Calculate NS^2 first:
// //
static const boost::uintmax_t k = 100000; static const std::ptrdiff_t k = 100000;
boost::uintmax_t dist = boost::re_detail::distance(base, last); std::ptrdiff_t dist = boost::re_detail::distance(base, last);
if(dist == 0) if(dist == 0)
dist = 1; dist = 1;
boost::uintmax_t states = re.size(); std::ptrdiff_t states = re.size();
if(states == 0) if(states == 0)
states = 1; states = 1;
states *= states; states *= states;
if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states) if((std::numeric_limits<std::ptrdiff_t>::max)() / dist < states)
{ {
max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
return; return;
} }
states *= dist; states *= dist;
if((std::numeric_limits<boost::uintmax_t>::max)() - k < states) if((std::numeric_limits<std::ptrdiff_t>::max)() - k < states)
{ {
max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
return; return;
} }
states += k; states += k;
@ -125,15 +125,15 @@ void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std
// Now calculate N^2: // Now calculate N^2:
// //
states = dist; states = dist;
if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states) if((std::numeric_limits<std::ptrdiff_t>::max)() / dist < states)
{ {
max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
return; return;
} }
states *= dist; states *= dist;
if((std::numeric_limits<boost::uintmax_t>::max)() - k < states) if((std::numeric_limits<std::ptrdiff_t>::max)() - k < states)
{ {
max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits<std::ptrdiff_t>::max)() - 2);
return; return;
} }
states += k; states += k;
@ -732,10 +732,10 @@ inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref(
{ {
// Have we recursed into subexpression "index"? // Have we recursed into subexpression "index"?
// If index == 0 then check for any recursion at all, otherwise for recursion to -index-1. // If index == 0 then check for any recursion at all, otherwise for recursion to -index-1.
int id = -index-1; int idx = -index-1;
if(id >= 10000) if(idx >= 10000)
id = re.get_data().get_id(id); idx = re.get_data().get_id(idx);
result = recursion_stack_position && ((recursion_stack[recursion_stack_position-1].id == id) || (index == 0)); result = !recursion_stack.empty() && ((recursion_stack.back().idx == idx) || (index == 0));
pstate = pstate->next.p; pstate = pstate->next.p;
} }
return result; return result;

View File

@ -130,8 +130,8 @@ struct saved_single_repeat : public saved_state
template <class Results> template <class Results>
struct saved_recursion : public saved_state struct saved_recursion : public saved_state
{ {
saved_recursion(int id, const re_syntax_base* p, Results* pr) saved_recursion(int idx, const re_syntax_base* p, Results* pr)
: saved_state(14), recursion_id(id), preturn_address(p), results(*pr) : saved_state(14), recursion_id(idx), preturn_address(p), results(*pr)
{} {}
int recursion_id; int recursion_id;
const re_syntax_base* preturn_address; const re_syntax_base* preturn_address;
@ -329,7 +329,7 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(st
} }
template <class BidiIterator, class Allocator, class traits> template <class BidiIterator, class Allocator, class traits>
inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int id, const re_syntax_base* p, results_type* presults) inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int idx, const re_syntax_base* p, results_type* presults)
{ {
saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
--pmp; --pmp;
@ -339,7 +339,7 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int id
pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
--pmp; --pmp;
} }
(void) new (pmp)saved_recursion<results_type>(id, p, presults); (void) new (pmp)saved_recursion<results_type>(idx, p, presults);
m_backup_state = pmp; m_backup_state = pmp;
} }
@ -898,20 +898,19 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
// //
// Set new call stack: // Set new call stack:
// //
if(recursion_stack_position >= static_cast<int>(sizeof(recursion_stack)/sizeof(recursion_stack[0]))) if(recursion_stack.capacity() == 0)
{ {
return false; recursion_stack.reserve(50);
} }
recursion_stack[recursion_stack_position].preturn_address = pstate->next.p; recursion_stack.push_back(recursion_info<results_type>());
recursion_stack[recursion_stack_position].results = *m_presult; recursion_stack.back().preturn_address = pstate->next.p;
recursion_stack.back().results = *m_presult;
if(static_cast<const re_recurse*>(pstate)->state_id > 0) if(static_cast<const re_recurse*>(pstate)->state_id > 0)
{ {
push_repeater_count(static_cast<const re_recurse*>(pstate)->state_id, &next_count); push_repeater_count(static_cast<const re_recurse*>(pstate)->state_id, &next_count);
} }
pstate = static_cast<const re_jump*>(pstate)->alt.p; pstate = static_cast<const re_jump*>(pstate)->alt.p;
recursion_stack[recursion_stack_position].id = static_cast<const re_brace*>(pstate)->index; recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
++recursion_stack_position;
//BOOST_ASSERT(recursion_stack[recursion_stack_position-1].id);
return true; return true;
} }
@ -927,14 +926,14 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
{ {
m_presult->set_second(position, index); m_presult->set_second(position, index);
} }
if(recursion_stack_position) if(!recursion_stack.empty())
{ {
if(index == recursion_stack[recursion_stack_position-1].id) if(index == recursion_stack.back().idx)
{ {
--recursion_stack_position; pstate = recursion_stack.back().preturn_address;
pstate = recursion_stack[recursion_stack_position].preturn_address; *m_presult = recursion_stack.back().results;
*m_presult = recursion_stack[recursion_stack_position].results; push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results);
push_recursion(recursion_stack[recursion_stack_position].id, recursion_stack[recursion_stack_position].preturn_address, &recursion_stack[recursion_stack_position].results); recursion_stack.pop_back();
} }
} }
} }
@ -951,13 +950,13 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
template <class BidiIterator, class Allocator, class traits> template <class BidiIterator, class Allocator, class traits>
bool perl_matcher<BidiIterator, Allocator, traits>::match_match() bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
{ {
if(recursion_stack_position) if(!recursion_stack.empty())
{ {
BOOST_ASSERT(0 == recursion_stack[recursion_stack_position-1].id); BOOST_ASSERT(0 == recursion_stack.back().idx);
--recursion_stack_position; pstate = recursion_stack.back().preturn_address;
pstate = recursion_stack[recursion_stack_position].preturn_address; *m_presult = recursion_stack.back().results;
*m_presult = recursion_stack[recursion_stack_position].results; push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results);
push_recursion(recursion_stack[recursion_stack_position].id, recursion_stack[recursion_stack_position].preturn_address, &recursion_stack[recursion_stack_position].results); recursion_stack.pop_back();
return true; return true;
} }
if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first)) if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
@ -1523,10 +1522,10 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion(bool r)
saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state);
if(!r) if(!r)
{ {
recursion_stack[recursion_stack_position].id = pmp->recursion_id; recursion_stack.push_back(recursion_info<results_type>());
recursion_stack[recursion_stack_position].preturn_address = pmp->preturn_address; recursion_stack.back().idx = pmp->recursion_id;
recursion_stack[recursion_stack_position].results = pmp->results; recursion_stack.back().preturn_address = pmp->preturn_address;
++recursion_stack_position; recursion_stack.back().results = pmp->results;
} }
boost::re_detail::inplace_destroy(pmp++); boost::re_detail::inplace_destroy(pmp++);
m_backup_state = pmp; m_backup_state = pmp;
@ -1539,7 +1538,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_pop(bool r)
saved_state* pmp = static_cast<saved_state*>(m_backup_state); saved_state* pmp = static_cast<saved_state*>(m_backup_state);
if(!r) if(!r)
{ {
--recursion_stack_position; recursion_stack.pop_back();
} }
boost::re_detail::inplace_destroy(pmp++); boost::re_detail::inplace_destroy(pmp++);
m_backup_state = pmp; m_backup_state = pmp;

View File

@ -857,16 +857,16 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
// //
// Set new call stack: // Set new call stack:
// //
if(recursion_stack_position >= static_cast<int>(sizeof(recursion_stack)/sizeof(recursion_stack[0]))) if(recursion_stack.capacity() == 0)
{ {
return false; recursion_stack.reserve(50);
} }
recursion_stack[recursion_stack_position].preturn_address = pstate->next.p; recursion_stack.push_back(recursion_info<results_type>());
recursion_stack[recursion_stack_position].results = *m_presult; recursion_stack.back().preturn_address = pstate->next.p;
recursion_stack[recursion_stack_position].repeater_stack = next_count; recursion_stack.back().results = *m_presult;
recursion_stack.back().repeater_stack = next_count;
pstate = static_cast<const re_jump*>(pstate)->alt.p; pstate = static_cast<const re_jump*>(pstate)->alt.p;
recursion_stack[recursion_stack_position].id = static_cast<const re_brace*>(pstate)->index; recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
++recursion_stack_position;
repeater_count<BidiIterator>* saved = next_count; repeater_count<BidiIterator>* saved = next_count;
repeater_count<BidiIterator> r(&next_count); // resets all repeat counts since we're recursing and starting fresh on those repeater_count<BidiIterator> r(&next_count); // resets all repeat counts since we're recursing and starting fresh on those
@ -876,9 +876,9 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
if(!result) if(!result)
{ {
--recursion_stack_position; next_count = recursion_stack.back().repeater_stack;
next_count = recursion_stack[recursion_stack_position].repeater_stack; *m_presult = recursion_stack.back().results;
*m_presult = recursion_stack[recursion_stack_position].results; recursion_stack.pop_back();
return false; return false;
} }
return true; return true;
@ -895,20 +895,19 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
{ {
m_presult->set_second(position, index); m_presult->set_second(position, index);
} }
if(recursion_stack_position) if(!recursion_stack.empty())
{ {
if(index == recursion_stack[recursion_stack_position-1].id) if(index == recursion_stack.back().idx)
{ {
--recursion_stack_position; recursion_info<results_type> saved = recursion_stack.back();
recursion_info<results_type> saved = recursion_stack[recursion_stack_position]; recursion_stack.pop_back();
const re_syntax_base* saved_state = pstate = saved.preturn_address; const re_syntax_base* saved_state = pstate = saved.preturn_address;
repeater_count<BidiIterator>* saved_count = next_count; repeater_count<BidiIterator>* saved_count = next_count;
next_count = saved.repeater_stack; next_count = saved.repeater_stack;
*m_presult = saved.results; *m_presult = saved.results;
if(!match_all_states()) if(!match_all_states())
{ {
recursion_stack[recursion_stack_position] = saved; recursion_stack.push_back(saved);
++recursion_stack_position;
next_count = saved_count; next_count = saved_count;
return false; return false;
} }
@ -928,17 +927,17 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
template <class BidiIterator, class Allocator, class traits> template <class BidiIterator, class Allocator, class traits>
bool perl_matcher<BidiIterator, Allocator, traits>::match_match() bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
{ {
if(recursion_stack_position) if(!recursion_stack.empty())
{ {
BOOST_ASSERT(0 == recursion_stack[recursion_stack_position-1].id); BOOST_ASSERT(0 == recursion_stack.back().idx);
--recursion_stack_position; const re_syntax_base* saved_state = pstate = recursion_stack.back().preturn_address;
const re_syntax_base* saved_state = pstate = recursion_stack[recursion_stack_position].preturn_address; *m_presult = recursion_stack.back().results;
*m_presult = recursion_stack[recursion_stack_position].results; recursion_stack.pop_back();
if(!match_all_states()) if(!match_all_states())
{ {
recursion_stack[recursion_stack_position].preturn_address = saved_state; recursion_stack.push_back(recursion_info<results_type>());
recursion_stack[recursion_stack_position].results = *m_presult; recursion_stack.back().preturn_address = saved_state;
++recursion_stack_position; recursion_stack.back().results = *m_presult;
return false; return false;
} }
return true; return true;

View File

@ -34,6 +34,7 @@
#ifndef BOOST_NO_SFINAE #ifndef BOOST_NO_SFINAE
#include <boost/mpl/has_xxx.hpp> #include <boost/mpl/has_xxx.hpp>
#endif #endif
#include <boost/ref.hpp>
namespace boost{ namespace boost{
@ -334,7 +335,7 @@ void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format
m_position = --base; m_position = --base;
} }
} }
put((this->m_results)[this->m_results.size() > 1 ? this->m_results.size() - 1 : 1]); put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
break; break;
case '{': case '{':
have_brace = true; have_brace = true;
@ -384,7 +385,7 @@ bool basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::handle
if(have_brace && (*m_position == '^')) if(have_brace && (*m_position == '^'))
++m_position; ++m_position;
int max_len = m_end - m_position; std::ptrdiff_t max_len = m_end - m_position;
if((max_len >= 5) && std::equal(m_position, m_position + 5, MATCH)) if((max_len >= 5) && std::equal(m_position, m_position + 5, MATCH))
{ {
@ -447,7 +448,7 @@ bool basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::handle
return false; return false;
} }
} }
put((this->m_results)[this->m_results.size() > 1 ? this->m_results.size() - 1 : 1]); put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
return true; return true;
} }
if((max_len >= 20) && std::equal(m_position, m_position + 20, LAST_SUBMATCH_RESULT)) if((max_len >= 20) && std::equal(m_position, m_position + 20, LAST_SUBMATCH_RESULT))
@ -895,7 +896,7 @@ private:
// F must be a pointer, a function, or a class with a function call operator: // F must be a pointer, a function, or a class with a function call operator:
// //
BOOST_STATIC_ASSERT((::boost::is_pointer<F>::value || ::boost::is_function<F>::value || ::boost::is_class<F>::value)); BOOST_STATIC_ASSERT((::boost::is_pointer<F>::value || ::boost::is_function<F>::value || ::boost::is_class<F>::value));
static formatter_wrapper<F> f; static formatter_wrapper<typename unwrap_reference<F>::type> f;
static M m; static M m;
static O out; static O out;
static boost::regex_constants::match_flag_type flags; static boost::regex_constants::match_flag_type flags;
@ -963,7 +964,7 @@ struct format_functor3
template <class OutputIter> template <class OutputIter>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f)
{ {
return func(m, i, f); return boost::unwrap_ref(func)(m, i, f);
} }
template <class OutputIter, class Traits> template <class OutputIter, class Traits>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)
@ -983,7 +984,7 @@ struct format_functor2
template <class OutputIter> template <class OutputIter>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/)
{ {
return func(m, i); return boost::unwrap_ref(func)(m, i);
} }
template <class OutputIter, class Traits> template <class OutputIter, class Traits>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)
@ -1020,7 +1021,7 @@ struct format_functor1
template <class OutputIter> template <class OutputIter>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/)
{ {
return do_format_string(func(m), i); return do_format_string(boost::unwrap_ref(func)(m), i);
} }
template <class OutputIter, class Traits> template <class OutputIter, class Traits>
OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)

View File

@ -149,7 +149,37 @@ namespace boost{ namespace re_detail{
{ {
return stdext::unchecked_equal(first, last, with); return stdext::unchecked_equal(first, last, with);
} }
#elif BOOST_WORKAROUND(BOOST_MSVC, > 1500)
//
// MSVC 10 will either emit warnings or else refuse to compile
// code that makes perfectly legitimate use of std::copy, when
// the OutputIterator type is a user-defined class (apparently all user
// defined iterators are "unsafe"). What's more Microsoft have removed their
// non-standard "unchecked" versions, even though their still in the MS
// documentation!! Work around this as best we can:
//
template<class InputIterator, class OutputIterator>
inline OutputIterator copy(
InputIterator first,
InputIterator last,
OutputIterator dest
)
{
while(first != last)
*dest++ = *first++;
return dest;
}
template<class InputIterator1, class InputIterator2>
inline bool equal(
InputIterator1 first,
InputIterator1 last,
InputIterator2 with
)
{
while(first != last)
if(*first++ != *with++) return false;
return true;
}
#else #else
using std::copy; using std::copy;
using std::equal; using std::equal;

View File

@ -292,7 +292,7 @@ template <class charT, class Traits, class Alloc>
inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
{ {
typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type; typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m); return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, submatch, m);
} }
inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
{ {

View File

@ -100,6 +100,9 @@ int handle_argument(const std::string& what)
#endif #endif
#ifdef BOOST_HAS_PCRE #ifdef BOOST_HAS_PCRE
time_pcre = true; time_pcre = true;
#endif
#ifdef BOOST_HAS_XPRESSIVE
time_xpressive = true;
#endif #endif
} }
else if(what == "-test-matches") else if(what == "-test-matches")

View File

@ -155,16 +155,16 @@ c_regex_traits<char>::char_class_type BOOST_REGEX_CALL c_regex_traits<char>::loo
char_class_xdigit, char_class_xdigit,
}; };
int id = ::boost::re_detail::get_default_class_id(p1, p2); int idx = ::boost::re_detail::get_default_class_id(p1, p2);
if(id < 0) if(idx < 0)
{ {
std::string s(p1, p2); std::string s(p1, p2);
for(std::string::size_type i = 0; i < s.size(); ++i) for(std::string::size_type i = 0; i < s.size(); ++i)
s[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(s[i]))); s[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(s[i])));
id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); idx = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
} }
BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0])); BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0]));
return masks[id+1]; return masks[idx+1];
} }
bool BOOST_REGEX_CALL c_regex_traits<char>::isctype(char c, char_class_type mask) bool BOOST_REGEX_CALL c_regex_traits<char>::isctype(char c, char_class_type mask)

View File

@ -388,14 +388,14 @@ icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_
char_class_type(U_GC_ND_MASK) | mask_xdigit, char_class_type(U_GC_ND_MASK) | mask_xdigit,
}; };
int id = ::boost::re_detail::get_default_class_id(p1, p2); int idx = ::boost::re_detail::get_default_class_id(p1, p2);
if(id >= 0) if(idx >= 0)
return masks[id+1]; return masks[idx+1];
char_class_type result = lookup_icu_mask(p1, p2); char_class_type result = lookup_icu_mask(p1, p2);
if(result != 0) if(result != 0)
return result; return result;
if(id < 0) if(idx < 0)
{ {
string_type s(p1, p2); string_type s(p1, p2);
string_type::size_type i = 0; string_type::size_type i = 0;
@ -411,16 +411,16 @@ icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_
} }
} }
if(s.size()) if(s.size())
id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); idx = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
if(id >= 0) if(idx >= 0)
return masks[id+1]; return masks[idx+1];
if(s.size()) if(s.size())
result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size()); result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
if(result != 0) if(result != 0)
return result; return result;
} }
BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0])); BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0]));
return masks[id+1]; return masks[idx+1];
} }
icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const

View File

@ -43,10 +43,10 @@ namespace std{
namespace boost{ namespace re_detail{ namespace boost{ namespace re_detail{
#ifdef BOOST_NO_ANSI_APIS #ifdef BOOST_NO_ANSI_APIS
UINT get_code_page_for_locale_id(lcid_type id) UINT get_code_page_for_locale_id(lcid_type idx)
{ {
WCHAR code_page_string[7]; WCHAR code_page_string[7];
if (::GetLocaleInfoW(id, LOCALE_IDEFAULTANSICODEPAGE, code_page_string, 7) == 0) if (::GetLocaleInfoW(idx, LOCALE_IDEFAULTANSICODEPAGE, code_page_string, 7) == 0)
return 0; return 0;
return static_cast<UINT>(_wtol(code_page_string)); return static_cast<UINT>(_wtol(code_page_string));
@ -157,15 +157,15 @@ BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale()
return ::GetUserDefaultLCID(); return ::GetUserDefaultLCID();
} }
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type idx)
{ {
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
WORD mask; WORD mask;
if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
return true; return true;
return false; return false;
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if (code_page == 0) if (code_page == 0)
return false; return false;
@ -174,39 +174,39 @@ BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type id)
return false; return false;
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_LOWER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_LOWER))
return true; return true;
return false; return false;
#endif #endif
} }
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type idx)
{ {
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
return true; return true;
return false; return false;
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type idx)
{ {
WORD mask; WORD mask;
wchar_t c = ca; wchar_t c = ca;
if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
return true; return true;
return false; return false;
} }
#endif #endif
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type idx)
{ {
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
WORD mask; WORD mask;
if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
return true; return true;
return false; return false;
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if (code_page == 0) if (code_page == 0)
return false; return false;
@ -215,25 +215,25 @@ BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type id)
return false; return false;
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_UPPER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_UPPER))
return true; return true;
return false; return false;
#endif #endif
} }
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type idx)
{ {
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
return true; return true;
return false; return false;
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type id) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type idx)
{ {
WORD mask; WORD mask;
wchar_t c = ca; wchar_t c = ca;
if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
return true; return true;
return false; return false;
} }
@ -322,11 +322,11 @@ BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(
} }
#endif #endif
#endif #endif
BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const char* p1, const char* p2) BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type idx, const char* p1, const char* p2)
{ {
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
int bytes = ::LCMapStringA( int bytes = ::LCMapStringA(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
p1, // source string p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -337,7 +337,7 @@ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const
return std::string(p1, p2); return std::string(p1, p2);
std::string result(++bytes, '\0'); std::string result(++bytes, '\0');
bytes = ::LCMapStringA( bytes = ::LCMapStringA(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
p1, // source string p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -345,7 +345,7 @@ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const
bytes // size of destination buffer bytes // size of destination buffer
); );
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if(code_page == 0) if(code_page == 0)
return std::string(p1, p2); return std::string(p1, p2);
@ -355,7 +355,7 @@ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const
return std::string(p1, p2); return std::string(p1, p2);
int bytes = ::LCMapStringW( int bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
wide_p1, // source string wide_p1, // source string
src_len, // number of characters in source string src_len, // number of characters in source string
@ -366,7 +366,7 @@ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const
return std::string(p1, p2); return std::string(p1, p2);
std::string result(++bytes, '\0'); std::string result(++bytes, '\0');
bytes = ::LCMapStringW( bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
wide_p1, // source string wide_p1, // source string
src_len, // number of characters in source string src_len, // number of characters in source string
@ -384,10 +384,10 @@ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const
} }
#ifndef BOOST_NO_WREGEX #ifndef BOOST_NO_WREGEX
BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const wchar_t* p1, const wchar_t* p2) BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type idx, const wchar_t* p1, const wchar_t* p2)
{ {
int bytes = ::LCMapStringW( int bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
p1, // source string p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -398,7 +398,7 @@ BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const
return std::wstring(p1, p2); return std::wstring(p1, p2);
std::string result(++bytes, '\0'); std::string result(++bytes, '\0');
bytes = ::LCMapStringW( bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
p1, // source string p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -417,10 +417,10 @@ BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const
return r2; return r2;
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type id, const unsigned short* p1, const unsigned short* p2) BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type idx, const unsigned short* p1, const unsigned short* p2)
{ {
int bytes = ::LCMapStringW( int bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
(LPCWSTR)p1, // source string (LPCWSTR)p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -431,7 +431,7 @@ BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transfor
return std::basic_string<unsigned short>(p1, p2); return std::basic_string<unsigned short>(p1, p2);
std::string result(++bytes, '\0'); std::string result(++bytes, '\0');
bytes = ::LCMapStringW( bytes = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_SORTKEY, // mapping transformation type LCMAP_SORTKEY, // mapping transformation type
(LPCWSTR)p1, // source string (LPCWSTR)p1, // source string
static_cast<int>(p2 - p1), // number of characters in source string static_cast<int>(p2 - p1), // number of characters in source string
@ -451,12 +451,12 @@ BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transfor
} }
#endif #endif
#endif #endif
BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id) BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type idx)
{ {
char result[2]; char result[2];
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
int b = ::LCMapStringA( int b = ::LCMapStringA(
id, // locale identifier idx, // locale identifier
LCMAP_LOWERCASE, // mapping transformation type LCMAP_LOWERCASE, // mapping transformation type
&c, // source string &c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -465,7 +465,7 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id)
if(b == 0) if(b == 0)
return c; return c;
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if (code_page == 0) if (code_page == 0)
return c; return c;
@ -475,7 +475,7 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id)
WCHAR wide_result; WCHAR wide_result;
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_LOWERCASE, // mapping transformation type LCMAP_LOWERCASE, // mapping transformation type
&wide_c, // source string &wide_c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -491,11 +491,11 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id)
} }
#ifndef BOOST_NO_WREGEX #ifndef BOOST_NO_WREGEX
BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type id) BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type idx)
{ {
wchar_t result[2]; wchar_t result[2];
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_LOWERCASE, // mapping transformation type LCMAP_LOWERCASE, // mapping transformation type
&c, // source string &c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -506,11 +506,11 @@ BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type id)
return result[0]; return result[0];
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type id) BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type idx)
{ {
wchar_t result[2]; wchar_t result[2];
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_LOWERCASE, // mapping transformation type LCMAP_LOWERCASE, // mapping transformation type
(wchar_t const*)&c, // source string (wchar_t const*)&c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -522,12 +522,12 @@ BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, l
} }
#endif #endif
#endif #endif
BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id) BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type idx)
{ {
char result[2]; char result[2];
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
int b = ::LCMapStringA( int b = ::LCMapStringA(
id, // locale identifier idx, // locale identifier
LCMAP_UPPERCASE, // mapping transformation type LCMAP_UPPERCASE, // mapping transformation type
&c, // source string &c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -536,7 +536,7 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id)
if(b == 0) if(b == 0)
return c; return c;
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if(code_page == 0) if(code_page == 0)
return c; return c;
@ -546,7 +546,7 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id)
WCHAR wide_result; WCHAR wide_result;
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_UPPERCASE, // mapping transformation type LCMAP_UPPERCASE, // mapping transformation type
&wide_c, // source string &wide_c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -562,11 +562,11 @@ BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id)
} }
#ifndef BOOST_NO_WREGEX #ifndef BOOST_NO_WREGEX
BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type id) BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type idx)
{ {
wchar_t result[2]; wchar_t result[2];
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_UPPERCASE, // mapping transformation type LCMAP_UPPERCASE, // mapping transformation type
&c, // source string &c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -577,11 +577,11 @@ BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type id)
return result[0]; return result[0];
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type id) BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type idx)
{ {
wchar_t result[2]; wchar_t result[2];
int b = ::LCMapStringW( int b = ::LCMapStringW(
id, // locale identifier idx, // locale identifier
LCMAP_UPPERCASE, // mapping transformation type LCMAP_UPPERCASE, // mapping transformation type
(wchar_t const*)&c, // source string (wchar_t const*)&c, // source string
1, // number of characters in source string 1, // number of characters in source string
@ -593,14 +593,14 @@ BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, l
} }
#endif #endif
#endif #endif
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, char c) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, char c)
{ {
WORD mask; WORD mask;
#ifndef BOOST_NO_ANSI_APIS #ifndef BOOST_NO_ANSI_APIS
if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base)) if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
return true; return true;
#else #else
UINT code_page = get_code_page_for_locale_id(id); UINT code_page = get_code_page_for_locale_id(idx);
if(code_page == 0) if(code_page == 0)
return false; return false;
@ -608,7 +608,7 @@ BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, c
if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
return false; return false;
if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base)) if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
return true; return true;
#endif #endif
if((m & w32_regex_traits_implementation<char>::mask_word) && (c == '_')) if((m & w32_regex_traits_implementation<char>::mask_word) && (c == '_'))
@ -617,10 +617,10 @@ BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, c
} }
#ifndef BOOST_NO_WREGEX #ifndef BOOST_NO_WREGEX
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, wchar_t c) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, wchar_t c)
{ {
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base)) if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
return true; return true;
if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_')) if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
return true; return true;
@ -629,10 +629,10 @@ BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, w
return false; return false;
} }
#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, unsigned short c) BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, unsigned short c)
{ {
WORD mask; WORD mask;
if(::GetStringTypeExW(id, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base)) if(::GetStringTypeExW(idx, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
return true; return true;
if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_')) if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
return true; return true;

View File

@ -195,16 +195,16 @@ c_regex_traits<wchar_t>::char_class_type BOOST_REGEX_CALL c_regex_traits<wchar_t
char_class_xdigit, char_class_xdigit,
}; };
int id = ::boost::re_detail::get_default_class_id(p1, p2); int idx = ::boost::re_detail::get_default_class_id(p1, p2);
if(id < 0) if(idx < 0)
{ {
std::wstring s(p1, p2); std::wstring s(p1, p2);
for(std::wstring::size_type i = 0; i < s.size(); ++i) for(std::wstring::size_type i = 0; i < s.size(); ++i)
s[i] = (std::towlower)(s[i]); s[i] = (std::towlower)(s[i]);
id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); idx = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
} }
BOOST_ASSERT(id+1 < static_cast<int>(sizeof(masks) / sizeof(masks[0]))); BOOST_ASSERT(idx+1 < static_cast<int>(sizeof(masks) / sizeof(masks[0])));
return masks[id+1]; return masks[idx+1];
} }
bool BOOST_REGEX_CALL c_regex_traits<wchar_t>::isctype(wchar_t c, char_class_type mask) bool BOOST_REGEX_CALL c_regex_traits<wchar_t>::isctype(wchar_t c, char_class_type mask)

View File

@ -9,9 +9,15 @@ project
<link>shared:<define>BOOST_REGEX_DYN_LINK=1 <link>shared:<define>BOOST_REGEX_DYN_LINK=1
<toolset>msvc-7.1:<define>TEST_MFC=1 <toolset>msvc-7.1:<define>TEST_MFC=1
<toolset>msvc-7.0:<define>TEST_MFC=1 <toolset>msvc-7.0:<define>TEST_MFC=1
<toolset>msvc:<asynch-exceptions>on
# There are unidentified linker problems on these platforms: # There are unidentified linker problems on these platforms:
<toolset>mipspro-7.4:<link>static <toolset>mipspro-7.4:<link>static
<toolset>sun-5.9:<link>static <toolset>sun-5.9:<link>static
<toolset>msvc:<warnings>all
<toolset>gcc:<warnings>all
<toolset>gcc:<cxxflags>-Wextra
<toolset>gcc:<cxxflags>-Wshadow
<define>U_USING_ICU_NAMESPACE=0
; ;
# #
@ -135,4 +141,4 @@ test-suite regex
] ]
; ;
build-project ../example ;

View File

@ -35,7 +35,7 @@ int main()
regex_tA re; regex_tA re;
int result; int result;
result = regcompA(&re, expression, REG_AWK); result = regcompA(&re, expression, REG_AWK);
if(result > REG_NOERROR) if(result > (int)REG_NOERROR)
{ {
char buf[256]; char buf[256];
regerrorA(result, &re, buf, sizeof(buf)); regerrorA(result, &re, buf, sizeof(buf));
@ -46,7 +46,7 @@ int main()
matches[0].rm_so = 0; matches[0].rm_so = 0;
matches[0].rm_eo = strlen(text); matches[0].rm_eo = strlen(text);
result = regexecA(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND); result = regexecA(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
if(result > REG_NOERROR) if(result > (int)REG_NOERROR)
{ {
char buf[256]; char buf[256];
regerrorA(result, &re, buf, sizeof(buf)); regerrorA(result, &re, buf, sizeof(buf));
@ -54,7 +54,7 @@ int main()
regfreeA(&re); regfreeA(&re);
return result; return result;
} }
assert(matches[0].rm_so == matches[0].rm_eo == 1); assert((matches[0].rm_so == matches[0].rm_eo) && (matches[0].rm_eo == 1));
regfreeA(&re); regfreeA(&re);
printf("no errors found\n"); printf("no errors found\n");
return 0; return 0;

View File

@ -45,11 +45,11 @@ int main()
char nbuf[256]; char nbuf[256];
int i; int i;
result = regcomp(&re, expression, REG_AWK); result = regcomp(&re, expression, REG_AWK);
if(result > REG_NOERROR) if(result > (int)REG_NOERROR)
{ {
regerror(result, &re, buf, sizeof(buf)); regerror(result, &re, buf, sizeof(buf));
for(i = 0; i < 256; ++i) for(i = 0; i < 256; ++i)
nbuf[i] = buf[i]; nbuf[i] = (char)(buf[i]);
printf(nbuf); printf(nbuf);
return result; return result;
} }
@ -61,11 +61,11 @@ int main()
matches[0].rm_so = 0; matches[0].rm_so = 0;
matches[0].rm_eo = wcslen(text); matches[0].rm_eo = wcslen(text);
result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND); result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
if(result > REG_NOERROR) if(result > (int)REG_NOERROR)
{ {
regerror(result, &re, buf, sizeof(buf)); regerror(result, &re, buf, sizeof(buf));
for(i = 0; i < 256; ++i) for(i = 0; i < 256; ++i)
nbuf[i] = buf[i]; nbuf[i] = (char)(buf[i]);
printf(nbuf); printf(nbuf);
regfree(&re); regfree(&re);
return result; return result;

View File

@ -33,9 +33,14 @@ int* get_array_data();
int error_count = 0; int error_count = 0;
#ifndef TEST_THREADS
#define RUN_TESTS(name) \ #define RUN_TESTS(name) \
std::cout << "Running test case \"" #name "\".\n";\ std::cout << "Running test case \"" #name "\".\n";\
name(); name();
#else
#define RUN_TESTS(name) \
name();
#endif
void run_tests() void run_tests()

View File

@ -132,6 +132,8 @@ void test_conditionals()
TEST_INVALID_REGEX("(?<!*|A)", perl); TEST_INVALID_REGEX("(?<!*|A)", perl);
TEST_INVALID_REGEX("(?<=?|A)", perl); TEST_INVALID_REGEX("(?<=?|A)", perl);
TEST_INVALID_REGEX("(?<=*|\\B)", perl); TEST_INVALID_REGEX("(?<=*|\\B)", perl);
TEST_INVALID_REGEX("(?<!a|bc)de", perl);
TEST_INVALID_REGEX("(?<=a|bc)de", perl);
} }
void test_options() void test_options()
@ -278,8 +280,8 @@ void test_options2()
TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaaacat", match_default, make_array(4, 7, -2, -2)); TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaaacat", match_default, make_array(4, 7, -2, -2));
TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaacat", match_default, make_array(-2, -2)); TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaacat", match_default, make_array(-2, -2));
TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abxyZZ", match_default, make_array(4, 6, -2, -2)); //TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abxyZZ", match_default, make_array(4, 6, -2, -2));
TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abXyZZ", match_default, make_array(4, 6, -2, -2)); //TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abXyZZ", match_default, make_array(4, 6, -2, -2));
TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "ZZZ", match_default, make_array(0, 3, -2, -2)); TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "ZZZ", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "zZZ", match_default, make_array(0, 3, -2, -2)); TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "zZZ", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "bZZ", match_default, make_array(0, 3, -2, -2)); TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "bZZ", match_default, make_array(0, 3, -2, -2));
@ -674,6 +676,15 @@ void test_mark_resets()
TEST_REGEX_SEARCH("^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2)); TEST_REGEX_SEARCH("^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2));
TEST_REGEX_SEARCH("^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2)); TEST_REGEX_SEARCH("^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2));
TEST_REGEX_SEARCH("^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2)); TEST_REGEX_SEARCH("^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)", perl, "XYabcdY", match_default, make_array(0, 7, 2, 3, 3, 4, -1, -1, -1, -1, 4, 5, 5, 6, 6, 7, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|(?:((?:xyz)))|(123))", perl, "abc", match_default, make_array(0, 3, 0, 3, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|(?:)((?:)xyz)|(123))", perl, "xyz", match_default, make_array(0, 3, 0, 3, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((?:(x)|(y)|(z)))|(123))", perl, "y", match_default, make_array(0, 1, 0, 1, -1, -1, 0, 1, -1, -1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((?|(x)|(y)|(z)))|(123))", perl, "y", match_default, make_array(0, 1, 0, 1, 0, 1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((?|(x)|(y)|(z)))|(123))", perl, "abc", match_default, make_array(0, 3, 0, 3, -1, -1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((?|(x)|(y)|(z)))|(123))", perl, "123", match_default, make_array(0, 3, 0, 3, -1, -1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((x)|(y)|(z))|(123))", perl, "z", match_default, make_array(0, 1, 0, 1, -1, -1, -1, -1, 0, 1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((x)|(y)|(z))|(123))", perl, "abc", match_default, make_array(0, 3, 0, 3, -1, -1, -1, -1, -1, -1, -2, -2));
TEST_REGEX_SEARCH("(?|(abc)|((x)|(y)|(z))|(123))", perl, "123", match_default, make_array(0, 3, 0, 3, -1, -1, -1, -1, -1, -1, -2, -2));
} }
void test_recursion() void test_recursion()

View File

@ -94,7 +94,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u32to16type(v.begin()), u32to16type(v.end()), std::back_inserter(v16)); std::copy(u32to16type(v.begin()), u32to16type(v.end()), std::back_inserter(v16));
#endif #endif
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
#endif #endif
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
v32.assign(u16to32type(v16.begin()), u16to32type(v16.end())); v32.assign(u16to32type(v16.begin()), u16to32type(v16.end()));
@ -103,7 +103,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u16to32type(v16.begin()), u16to32type(v16.end()), std::back_inserter(v32)); std::copy(u16to32type(v16.begin()), u16to32type(v16.end()), std::back_inserter(v32));
#endif #endif
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
#endif #endif
BOOST_CHECK_EQUAL(v.size(), v32.size()); BOOST_CHECK_EQUAL(v.size(), v32.size());
i = v.begin(); i = v.begin();
@ -117,12 +117,12 @@ void test(const std::vector< ::boost::uint32_t>& v)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
v16.assign(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))); v16.assign(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin())));
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
#endif #endif
std::reverse(v16.begin(), v16.end()); std::reverse(v16.begin(), v16.end());
v32.assign(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))); v32.assign(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin())));
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
#endif #endif
BOOST_CHECK_EQUAL(v.size(), v32.size()); BOOST_CHECK_EQUAL(v.size(), v32.size());
std::reverse(v32.begin(), v32.end()); std::reverse(v32.begin(), v32.end());
@ -142,7 +142,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u32to8type(v.begin()), u32to8type(v.end()), std::back_inserter(v8)); std::copy(u32to8type(v.begin()), u32to8type(v.end()), std::back_inserter(v8));
#endif #endif
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
#endif #endif
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) #if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
v32.assign(u8to32type(v8.begin()), u8to32type(v8.end())); v32.assign(u8to32type(v8.begin()), u8to32type(v8.end()));
@ -151,7 +151,7 @@ void test(const std::vector< ::boost::uint32_t>& v)
std::copy(u8to32type(v8.begin()), u8to32type(v8.end()), std::back_inserter(v32)); std::copy(u8to32type(v8.begin()), u8to32type(v8.end()), std::back_inserter(v32));
#endif #endif
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
#endif #endif
BOOST_CHECK_EQUAL(v.size(), v32.size()); BOOST_CHECK_EQUAL(v.size(), v32.size());
i = v.begin(); i = v.begin();
@ -165,12 +165,12 @@ void test(const std::vector< ::boost::uint32_t>& v)
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
v8.assign(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))); v8.assign(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin())));
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
#endif #endif
std::reverse(v8.begin(), v8.end()); std::reverse(v8.begin(), v8.end());
v32.assign(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))); v32.assign(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin())));
#ifndef BOOST_NO_STD_DISTANCE #ifndef BOOST_NO_STD_DISTANCE
BOOST_CHECK_EQUAL(std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size()); BOOST_CHECK_EQUAL((std::size_t)std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
#endif #endif
BOOST_CHECK_EQUAL(v.size(), v32.size()); BOOST_CHECK_EQUAL(v.size(), v32.size());
std::reverse(v32.begin(), v32.end()); std::reverse(v32.begin(), v32.end());