forked from boostorg/regex
226 lines
7.0 KiB
HTML
226 lines
7.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>Boost.Regex: Configuration and setup</title>
|
||
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
||
<meta http-equiv="Content-Type" content=
|
||
"text/html; charset=iso-8859-1">
|
||
<link rel="stylesheet" type="text/css" href="../../../boost.css">
|
||
</head>
|
||
<body>
|
||
<table id="Table1" cellspacing="1" cellpadding="1" width="100%"
|
||
border="0">
|
||
<tr>
|
||
<td valign="top" width="300">
|
||
<h3><a href="../../../index.htm"><img height="86" width="277" alt=
|
||
"C++ Boost" src="../../../c++boost.gif" border="0"></a></h3>
|
||
</td>
|
||
<td width="353">
|
||
<h1 align="center">Boost.Regex</h1>
|
||
|
||
<h2 align="center">Configuration and setup</h2>
|
||
</td>
|
||
<td width="50">
|
||
<h3><a href="index.html"><img height="45" width="43" alt=
|
||
"Boost.Regex Index" src="uarrow.gif" border="0"></a></h3>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<hr>
|
||
<h2>Contents</h2>
|
||
|
||
<dl class="index">
|
||
<dt><a href="#compiler">Compiler setup</a></dt>
|
||
|
||
<dt><a href="#locale">Locale and traits class selection</a></dt>
|
||
|
||
<dt><a href="#linkage">Linkage Options</a></dt>
|
||
|
||
<dt><a href="#algorithm">Algorithm Selection</a></dt>
|
||
|
||
<dt><a href="#tuning">Algorithm Tuning</a></dt>
|
||
</dl>
|
||
|
||
<h3><a name="compiler"></a>Compiler setup.</h3>
|
||
|
||
<p>You shouldn't need to do anything special to configure
|
||
boost.regex for use with your compiler - the <a href="../../config/index.html">boost.config</a> subsystem should already
|
||
take care of it, if you do have problems (or you are using a
|
||
particularly obscure compiler or platform) then <a href="../../config/index.html">boost.config</a> has a <a href="../../config/config.htm#config_script">configure</a> script.</p>
|
||
|
||
<h3><a name="locale"></a>Locale and traits class selection.</h3>
|
||
|
||
<p>The following macros (see <a href="../../../boost/regex/user.hpp">user.hpp</a>) control how
|
||
boost.regex interacts with the user's locale:</p>
|
||
|
||
<table id="Table2" cellspacing="1" cellpadding="1" width="100%"
|
||
border="1">
|
||
<tr>
|
||
<td width="265">BOOST_REGEX_USE_C_LOCALE</td>
|
||
<td>Forces boost.regex to use the global C locale in its traits
|
||
class support: this is the default behavior on non-windows
|
||
platforms, but MS Windows platforms normally use the Win32 API for
|
||
locale support.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="265">BOOST_REGEX_USE_CPP_LOCALE</td>
|
||
<td>Forces boost.regex to use std::locale in it's default traits
|
||
class, regular expressions can then be imbued with an
|
||
instance specific locale.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="265">BOOST_REGEX_NO_W32</td>
|
||
<td>Tells boost.regex not to use any Win32 API's even when
|
||
available (implies BOOST_REGEX_USE_C_LOCALE unless
|
||
BOOST_REGEX_USE_CPP_LOCALE is set).</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<h3><a name="linkage"></a>Linkage Options</h3>
|
||
|
||
<table id="Table3" cellspacing="1" cellpadding="1" width="100%"
|
||
border="1">
|
||
<tr>
|
||
<td>BOOST_REGEX_DYN_LINK</td>
|
||
<td>For Microsoft and Borland C++ builds, this tells boost.regex
|
||
that it should link to the dll build of the boost.regex. By
|
||
default boost.regex will link to its static library build, even if
|
||
the dynamic C runtime library is in use.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>BOOST_REGEX_NO_LIB</td>
|
||
<td>For Microsoft and Borland C++ builds, this tells boost.regex
|
||
that it should not automatically select the library to link
|
||
to.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<h3><a name="algorithm"></a>Algorithm Selection</h3>
|
||
|
||
<table id="Table4" cellspacing="1" cellpadding="1" width="100%"
|
||
border="1">
|
||
<tr>
|
||
<td width="253">BOOST_REGEX_V3</td>
|
||
<td>Tells boost.regex to use the boost-1.30.0 matching algorithm,
|
||
define only if you need maximum compatibility with previous
|
||
behavior.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="253">BOOST_REGEX_RECURSIVE</td>
|
||
<td>Tells boost.regex to use a stack-recursive matching
|
||
algorithm. This is generally the fastest option (although
|
||
there is very little in it), but can cause stack overflow in
|
||
extreme cases, on Win32 this can be handled safely, but this is not
|
||
the case on other platforms.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="253">BOOST_REGEX_NON_RECURSIVE</td>
|
||
<td>Tells boost.regex to use a non-stack recursive matching
|
||
algorithm, this can be slightly slower than the alternative, but is
|
||
always safe no matter how pathological the regular
|
||
expression. This is the default on non-Win32 platforms.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<h3><a name="tuning"></a>Algorithm Tuning</h3>
|
||
|
||
<p>The following option applies only if BOOST_REGEX_RECURSIVE is
|
||
set.</p>
|
||
|
||
<table id="Table6" cellspacing="1" cellpadding="1" width="100%"
|
||
border="1">
|
||
<tr>
|
||
<td>BOOST_REGEX_HAS_MS_STACK_GUARD</td>
|
||
<td>Tells boost.regex that Microsoft style __try - __except blocks
|
||
are supported, and can be used to safely trap stack overflow.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<p>The following options apply only if BOOST_REGEX_NON_RECURSIVE is
|
||
set.</p>
|
||
|
||
<table id="Table5" cellspacing="1" cellpadding="1" width="100%"
|
||
border="1">
|
||
<tr>
|
||
<td>BOOST_REGEX_BLOCKSIZE</td>
|
||
<td>In non-recursive mode, boost.regex uses largish blocks of
|
||
memory to act as a stack for the state machine, the larger the
|
||
block size then the fewer allocations that will take place.
|
||
This defaults to 4096 bytes, which is large enough to match the
|
||
vast majority of regular expressions without further
|
||
allocations, however, you can choose smaller or larger values
|
||
depending upon your platforms characteristics.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>BOOST_REGEX_MAX_BLOCKS</td>
|
||
<td>Tells boost.regex how many blocks of size BOOST_REGEX_BLOCKSIZE
|
||
it is permitted to use. If this value is exceeded then
|
||
boost.regex will stop trying to find a match and throw a
|
||
std::runtime_error. Defaults to 1024, don't forget to tweek
|
||
this value if you alter BOOST_REGEX_BLOCKSIZE by much.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>BOOST_REGEX_MAX_CACHE_BLOCKS</td>
|
||
<td>Tells boost.regex how many memory blocks to store in it's
|
||
internal cache - memory blocks are taken from this cache rather
|
||
than by calling ::operator new. Generally speeking this can
|
||
be an order of magnitude faster than calling ::opertator new each
|
||
time a memory block is required, but has the downside that
|
||
boost.regex can end up caching a large chunk of memory (by default
|
||
up to 16 blocks each of BOOST_REGEX_BLOCKSIZE size). If
|
||
memory is tight then try defining this to 0 (disables all caching),
|
||
or if that is too slow, then a value of 1 or 2, may be
|
||
sufficient. On the other hand, on large multi-processor,
|
||
multi-threaded systems, you may find that a higher value is in
|
||
order.</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<hr>
|
||
<p>Revised
|
||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||
24 Oct 2003
|
||
<!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
|
||
<p><i><EFBFBD> Copyright John Maddock 1998-
|
||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
|
||
2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
|
||
<P><I>Use, modification and distribution are subject to the Boost Software License,
|
||
Version 1.0. (See accompanying file <A href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A>
|
||
or copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>)</I></P>
|
||
</body>
|
||
</html>
|
||
|
||
|