Update of /cvsroot/boost/boost/libs/bimap/doc/html/boost_bimap/bimap_and_boost
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2441/doc/html/boost_bimap/bimap_and_boost
Modified Files:
boost_libraries_that_work_well_with_boost_bimap.html
dependencies.html
Log Message:
Xpressive & typeof sections
Index: boost_libraries_that_work_well_with_boost_bimap.html
===================================================================
RCS file:
/cvsroot/boost/boost/libs/bimap/doc/html/boost_bimap/bimap_and_boost/boost_libraries_that_work_well_with_boost_bimap.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- boost_libraries_that_work_well_with_boost_bimap.html 31 May 2007
07:07:20 -0000 1.2
+++ boost_libraries_that_work_well_with_boost_bimap.html 4 Jun 2007
21:17:25 -0000 1.3
@@ -12,7 +12,9 @@
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF">
<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86"
src="../../../../boost.png"></td>
+<td valign="top">
+<img alt="Boost C++ Libraries" width="277" height="86"
src="../../../../boost.png"><img alt="Chapter Logo"
src="../../images/bimap/boost.bimap.header.png">
+</td>
<td align="center"><a href="../../../../index.htm">Home</a></td>
<td align="center"><a href="../../libraries.html">Libraries</a></td>
<td align="center"><a href="../../../../people/people.htm">People</a></td>
@@ -37,6 +39,8 @@
<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_lambda">Boost.Lambda</a></span></dt>
<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_range">Boost.Range</a></span></dt>
<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_foreach">Boost.Foreach</a></span></dt>
+<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_typeof">Boost.Typeof</a></span></dt>
+<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_xpressive">Boost.Xpressive</a></span></dt>
<dt><span class="section"><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_property_map">Boost.Property_map</a></span></dt>
</dl></div>
<div class="section" lang="en">
@@ -213,6 +217,51 @@
<tr>
<td>
<p>
+ <a href="http://www.boost.org/libs/typeof/doc/index.html"
target="_top"><span class="bold"><strong>Boost.Typeof</strong></span></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Typeof operator emulation
+ </p>
+ </td>
+<td>
+ <p>
+ Arkadiy Vertleyb, Peder Holt
+ </p>
+ </td>
+<td>
+ <p>
+ Using BOOST_AUTO while we wait for C++0x
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a href="http://www.boost.org/libs/xpressive/doc/index.html"
target="_top"><span class="bold"><strong>Boost.Xpressive</strong></span></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Regular expressions that can be written as strings or as
expression
+ templates
+ </p>
+ </td>
+<td>
+ <p>
+ Eric Niebler
+ </p>
+ </td>
+<td>
+ <p>
+ Help to fill a bimap from a string
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
<a href="http://www.boost.org/doc/html/property_map.html"
target="_top"><span class="bold"><strong>Boost.PropertyMap</strong></span></a>
</p>
</td>
@@ -771,6 +820,158 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
+<a
name="boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_typeof"></a><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_typeof"
title="Boost.Typeof">Boost.Typeof</a>
+</h4></div></div></div>
+<p>
+ Once C++0x is out we are going to be able to write code like:
+ </p>
+<pre class="programlisting">
+<span class="keyword">auto</span> <span class="identifier">iter</span> <span
class="special">=</span> <span class="identifier">bm</span><span
class="special">.</span><span class="identifier">by</span><span
class="special"><</span><span class="identifier">name</span><span
class="special">>().</span><span class="identifier">find</span><span
class="special">(</span><span class="string">"john"</span><span
class="special">);</span>
+</pre>
+<p>
+ instead of the more verbose
+ </p>
+<pre class="programlisting">
+<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">map_by</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>::</span><span
class="identifier">iterator</span> <span class="identifier">iter</span> <span
class="special">=</span> <span class="identifier">bm</span><span
class="special">.</span><span class="identifier">by</span><span
class="special"><</span><span class="identifier">name</span><span
class="special">>().</span><span class="identifier">find</span><span
class="special">(</span><span class="string">"john"</span><span
class="special">);</span>
+</pre>
+<p>
+ Boost.Typeof defines a macro BOOST_AUTO that can be used as a
library solution
+ to the auto keyword while we wait for the next standard.
+ </p>
+<p>
+ If we have
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span
class="identifier">bimap</span><span class="special"><</span> <span
class="identifier">tagged</span><span class="special"><</span><span
class="identifier">std</span><span class="special">::</span><span
class="identifier">string</span><span class="special">,</span><span
class="identifier">name</span><span class="special">>,</span> <span
class="identifier">tagged</span><span class="special"><</span><span
class="keyword">int</span><span class="special">,</span><span
class="identifier">number</span><span class="special">></span> <span
class="special">></span> <span class="identifier">bm_type</span><span
class="special">;</span>
+<span class="identifier">bm_type</span> <span
class="identifier">bm</span><span class="special">;</span>
+<span class="identifier">bm</span><span class="special">.</span><span
class="identifier">insert</span><span class="special">(</span> <span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">value_type</span><span class="special">(</span><span
class="string">"one"</span> <span class="special">,</span><span
class="number">1</span><span class="special">)</span> <span
class="special">);</span>
+<span class="identifier">bm</span><span class="special">.</span><span
class="identifier">insert</span><span class="special">(</span> <span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">value_type</span><span class="special">(</span><span
class="string">"two"</span> <span class="special">,</span><span
class="number">2</span><span class="special">)</span> <span
class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<div class="calloutlist"><table border="0" summary="Callout
list"></table></div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ The following code snippet
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="keyword">for</span><span class="special">(</span> <span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">map_by</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>::</span><span
class="identifier">iterator</span> <span class="identifier">iter</span> <span
class="special">=</span> <span class="identifier">bm</span><span
class="special">.</span><span class="identifier">by</span><span
class="special"><</span><span class="identifier">name</span><span
class="special">>().</span><span class="identifier">begin</span><span
class="special">();</span>
+ <span class="identifier">iter</span><span class="special">!=</span><span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">by</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>().</span><span
class="identifier">end</span><span class="special">();</span> <span
class="special">++</span><span class="identifier">iter</span><span
class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span
class="identifier">cout</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">first</span> <span class="special"><<</span> <span
class="string">" --> "</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">second</span> <span class="special"><<</span> <span
class="identifier">std</span><span class="special">::</span><span
class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">map_by</span><span class="special"><</span><span
class="identifier">number</span><span class="special">>::</span><span
class="identifier">iterator</span> <span class="identifier">iter</span> <span
class="special">=</span> <span class="identifier">bm</span><span
class="special">.</span><span class="identifier">by</span><span
class="special"><</span><span class="identifier">number</span><span
class="special">>().</span><span class="identifier">find</span><span
class="special">(</span><span class="number">2</span><span
class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span
class="identifier">cout</span> <span class="special"><<</span> <span
class="string">"2: "</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">get</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>();</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<div class="calloutlist"><table border="0" summary="Callout
list"></table></div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ can be rewrited as
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="keyword">for</span><span class="special">(</span> <span
class="identifier">BOOST_AUTO</span><span class="special">(</span><span
class="identifier">iter</span><span class="special">,</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">by</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>().</span><span
class="identifier">begin</span><span class="special">());</span> <span
class="identifier">iter</span><span class="special">!=</span><span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">by</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>().</span><span
class="identifier">end</span><span class="special">();</span> <span
class="special">++</span><span class="identifier">iter</span><span
class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span
class="identifier">cout</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">first</span> <span class="special"><<</span> <span
class="string">" --> "</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">second</span> <span class="special"><<</span> <span
class="identifier">std</span><span class="special">::</span><span
class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">BOOST_AUTO</span><span class="special">(</span> <span
class="identifier">iter</span><span class="special">,</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">by</span><span class="special"><</span><span
class="identifier">number</span><span class="special">>().</span><span
class="identifier">find</span><span class="special">(</span><span
class="number">2</span><span class="special">)</span> <span
class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span
class="identifier">cout</span> <span class="special"><<</span> <span
class="string">"2: "</span> <span class="special"><<</span> <span
class="identifier">iter</span><span class="special">-></span><span
class="identifier">get</span><span class="special"><</span><span
class="identifier">name</span><span class="special">>();</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<div class="calloutlist"><table border="0" summary="Callout
list"></table></div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ <a href="../../../../example/bimap_and_boost/typeof.cpp"
target="_top">Go to source code</a>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a
name="boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_xpressive"></a><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_xpressive"
title="Boost.Xpressive">Boost.Xpressive</a>
+</h4></div></div></div>
+<p>
+ Using Boost.Xpressive we can parse a file and insert the relations
in a
+ bimap in the same step. It is just amazing the power of four lines
of code.
+ Here is an example (it is just beatifull)
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span
class="identifier">bimap</span><span class="special"><</span> <span
class="identifier">std</span><span class="special">::</span><span
class="identifier">string</span><span class="special">,</span> <span
class="keyword">int</span> <span class="special">></span> <span
class="identifier">bm_type</span><span class="special">;</span>
+<span class="identifier">bm_type</span> <span
class="identifier">bm</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span
class="identifier">string</span> <span class="identifier">rel_str</span><span
class="special">(</span><span class="string">"one <--> 1 two
<--> 2 three <--> 3"</span><span class="special">);</span>
+
+<span class="identifier">sregex</span> <span class="identifier">rel</span>
<span class="special">=</span> <span class="special">(</span> <span
class="special">(</span><span class="identifier">s1</span><span
class="special">=</span> <span class="special">+</span><span
class="identifier">_w</span><span class="special">)</span> <span
class="special">>></span> <span class="string">" <--> "</span>
<span class="special">>></span> <span class="special">(</span><span
class="identifier">s2</span><span class="special">=</span> <span
class="special">+</span><span class="identifier">_d</span><span
class="special">)</span> <span class="special">)</span>
+<span class="special">[</span>
+ <span class="identifier">xp</span><span class="special">::</span><span
class="identifier">ref</span><span class="special">(</span><span
class="identifier">bm</span><span class="special">)->*</span><span
class="identifier">insert</span><span class="special">(</span> <span
class="identifier">construct</span><span class="special"><</span><span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">value_type</span><span class="special">>(</span><span
class="identifier">s1</span><span class="special">,</span> <span
class="identifier">as</span><span class="special"><</span><span
class="keyword">int</span><span class="special">>(</span><span
class="identifier">s2</span><span class="special">))</span> <span
class="special">)</span>
+<span class="special">];</span>
+
+<span class="identifier">sregex</span> <span
class="identifier">relations</span> <span class="special">=</span> <span
class="identifier">rel</span> <span class="special">>></span> <span
class="special">*(+</span><span class="identifier">_s</span> <span
class="special">>></span> <span class="identifier">rel</span><span
class="special">);</span>
+
+<span class="identifier">regex_match</span><span class="special">(</span><span
class="identifier">rel_str</span><span class="special">,</span> <span
class="identifier">relations</span><span class="special">);</span>
+
+<span class="identifier">assert</span><span class="special">(</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">size</span><span class="special">()</span> <span
class="special">==</span> <span class="number">3</span> <span
class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<div class="calloutlist"><table border="0" summary="Callout
list"></table></div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ <a href="../../../../example/bimap_and_boost/xpressive.cpp"
target="_top">Go to source code</a>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
<a
name="boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_property_map"></a><a
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap.bimap_and_boost.boost_libraries_that_work_well_with_boost_bimap.boost_property_map"
title="Boost.Property_map">Boost.Property_map</a>
</h4></div></div></div>
<p>
Index: dependencies.html
===================================================================
RCS file:
/cvsroot/boost/boost/libs/bimap/doc/html/boost_bimap/bimap_and_boost/dependencies.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dependencies.html 31 May 2007 07:07:20 -0000 1.2
+++ dependencies.html 4 Jun 2007 21:17:25 -0000 1.3
@@ -12,7 +12,9 @@
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF">
<table cellpadding="2" width="100%">
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86"
src="../../../../boost.png"></td>
+<td valign="top">
+<img alt="Boost C++ Libraries" width="277" height="86"
src="../../../../boost.png"><img alt="Chapter Logo"
src="../../images/bimap/boost.bimap.header.png">
+</td>
<td align="center"><a href="../../../../index.htm">Home</a></td>
<td align="center"><a href="../../libraries.html">Libraries</a></td>
<td align="center"><a href="../../../../people/people.htm">People</a></td>
@@ -36,7 +38,7 @@
is the heart of this library.
</p>
<div class="table">
-<a name="id2649852"></a><p class="title"><b>Table 1.4. Boost Libraries needed
by Boost.Bimap</b></p>
+<a name="id2655376"></a><p class="title"><b>Table 1.4. Boost Libraries needed
by Boost.Bimap</b></p>
<div class="table-contents"><table class="table" summary="Boost Libraries
needed by Boost.Bimap">
<colgroup>
<col>
@@ -185,7 +187,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id2650126"></a><p class="title"><b>Table 1.5. Optional Boost
Libraries</b></p>
+<a name="id2655650"></a><p class="title"><b>Table 1.5. Optional Boost
Libraries</b></p>
<div class="table-contents"><table class="table" summary="Optional Boost
Libraries">
<colgroup>
<col>
@@ -355,7 +357,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id2650413"></a><p class="title"><b>Table 1.6. Additional Boost
Libraries needed to run
+<a name="id2655937"></a><p class="title"><b>Table 1.6. Additional Boost
Libraries needed to run
the test-suite</b></p>
<div class="table-contents"><table class="table" summary="Additional Boost
Libraries needed to run
the test-suite">
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs