Update of /cvsroot/boost/boost/libs/bimap/doc/html/boost_bimap/bimap_and_boost
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv1797/doc/html/boost_bimap/bimap_and_boost
Modified Files:
boost_libraries_that_work_well_with_boost_bimap.html
dependencies.html
Log Message:
info hook support
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.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- boost_libraries_that_work_well_with_boost_bimap.html 25 May 2007
04:54:06 -0000 1.1
+++ boost_libraries_that_work_well_with_boost_bimap.html 31 May 2007
07:07:20 -0000 1.2
@@ -5,7 +5,7 @@
Libraries that work well with Boost.Bimap</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.70.1">
-<link rel="start" href="../../index.html" title="Chapter 1. Boost.bimap">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.Bimap">
<link rel="up" href="../bimap_and_boost.html" title="Bimap and Boost">
<link rel="prev" href="../bimap_and_boost.html" title="Bimap and Boost">
<link rel="next" href="dependencies.html" title="Dependencies">
@@ -36,6 +36,7 @@
<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_hash">Boost.Hash</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_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_property_map">Boost.Property_map</a></span></dt>
</dl></div>
<div class="section" lang="en">
@@ -189,6 +190,29 @@
<tr>
<td>
<p>
+ <a href="http://www.boost.org/doc/html/foreach.html"
target="_top"><span class="bold"><strong>Boost.Foreach</strong></span></a>
+ </p>
+ </td>
+<td>
+ <p>
+ BOOST_FOREACH macro for easily iterating over the elements
of a
+ sequence
+ </p>
+ </td>
+<td>
+ <p>
+ Eric Niebler
+ </p>
+ </td>
+<td>
+ <p>
+ Iteration
+ </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>
@@ -241,9 +265,9 @@
<span class="identifier">std</span><span class="special">::</span><span
class="identifier">ofstream</span> <span class="identifier">ofs</span><span
class="special">(</span><span class="string">"data"</span><span
class="special">);</span>
<span class="identifier">boost</span><span class="special">::</span><span
class="identifier">archive</span><span class="special">::</span><span
class="identifier">text_oarchive</span> <span class="identifier">oa</span><span
class="special">(</span><span class="identifier">ofs</span><span
class="special">);</span>
- <span class="identifier">oa</span> <span class="special"><<</span>
<span class="keyword">const_cast</span><span class="special"><</span><span
class="keyword">const</span> <span class="identifier">bm_type</span><span
class="special">&>(</span><span class="identifier">bm</span><span
class="special">);</span> <span class="callout_bug"><a name="boost_bimap15co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap15"><img
src="../../images/callouts/1.png" alt="1" border="0"></a></span>
+ <span class="identifier">oa</span> <span class="special"><<</span>
<span class="keyword">const_cast</span><span class="special"><</span><span
class="keyword">const</span> <span class="identifier">bm_type</span><span
class="special">&>(</span><span class="identifier">bm</span><span
class="special">);</span> <span class="callout_bug"><a name="boost_bimap16co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap16"><img
src="../../images/callouts/1.png" alt="1" border="0"></a></span>
- <span class="line_callout_bug"><a name="boost_bimap16co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap16"><img
src="../../images/callouts/2.png" alt="2" border="0"></a></span><span
class="keyword">const</span> <span class="identifier">bm_type</span><span
class="special">::</span><span class="identifier">left_iterator</span> <span
class="identifier">left_iter</span> <span class="special">=</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">left</span><span class="special">.</span><span
class="identifier">find</span><span class="special">(</span><span
class="string">"two"</span><span class="special">);</span>
+ <span class="line_callout_bug"><a name="boost_bimap17co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap17"><img
src="../../images/callouts/2.png" alt="2" border="0"></a></span><span
class="keyword">const</span> <span class="identifier">bm_type</span><span
class="special">::</span><span class="identifier">left_iterator</span> <span
class="identifier">left_iter</span> <span class="special">=</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">left</span><span class="special">.</span><span
class="identifier">find</span><span class="special">(</span><span
class="string">"two"</span><span class="special">);</span>
<span class="identifier">oa</span> <span class="special"><<</span>
<span class="identifier">left_iter</span><span class="special">;</span>
<span class="keyword">const</span> <span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">right_iterator</span> <span
class="identifier">right_iter</span> <span class="special">=</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">right</span><span class="special">.</span><span
class="identifier">find</span><span class="special">(</span><span
class="number">1</span><span class="special">);</span>
@@ -281,7 +305,7 @@
<div class="calloutlist"><table border="0" summary="Callout list">
<tr>
<td width="5%" valign="top" align="left">
-<a name="boost_bimap15"></a><a href="#boost_bimap15co"><img
src="../../images/callouts/1.png" alt="1" border="0"></a> </td>
+<a name="boost_bimap16"></a><a href="#boost_bimap16co"><img
src="../../images/callouts/1.png" alt="1" border="0"></a> </td>
<td valign="top" align="left"><p>
We must do a const cast because Boost.Serialization archives only
save
const objects. Read Boost.Serializartion docs for the rationale
behind
@@ -289,7 +313,7 @@
</tr>
<tr>
<td width="5%" valign="top" align="left">
-<a name="boost_bimap16"></a><a href="#boost_bimap16co"><img
src="../../images/callouts/2.png" alt="2" border="0"></a> </td>
+<a name="boost_bimap17"></a><a href="#boost_bimap17co"><img
src="../../images/callouts/2.png" alt="2" border="0"></a> </td>
<td valign="top" align="left"><p> We can only serialize iterators if the bimap
was serialized
first. Note that the const cast is not requiered here because we
create
our iterators as const. </p></td>
@@ -378,7 +402,7 @@
<span class="comment">// We can use assign::list_of to initialize the
container.
</span>
- <span class="identifier">bm_type</span> <span class="identifier">bm</span>
<span class="special">=</span> <span class="identifier">assign</span><span
class="special">::</span><span class="identifier">list_of</span><span
class="special"><</span> <span class="identifier">bm_type</span><span
class="special">::</span><span class="identifier">relation</span> <span
class="special">></span> <span class="callout_bug"><a name="boost_bimap17co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap17"><img
src="../../images/callouts/1.png" alt="1" border="0"></a></span>
+ <span class="identifier">bm_type</span> <span class="identifier">bm</span>
<span class="special">=</span> <span class="identifier">assign</span><span
class="special">::</span><span class="identifier">list_of</span><span
class="special"><</span> <span class="identifier">bm_type</span><span
class="special">::</span><span class="identifier">relation</span> <span
class="special">></span> <span class="callout_bug"><a name="boost_bimap18co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap18"><img
src="../../images/callouts/1.png" alt="1" border="0"></a></span>
<span class="special">(</span> <span class="number">1</span><span
class="special">,</span> <span class="string">"one"</span> <span
class="special">)</span>
<span class="special">(</span> <span class="number">2</span><span
class="special">,</span> <span class="string">"two"</span> <span
class="special">)</span>
<span class="special">(</span> <span class="number">3</span><span
class="special">,</span> <span class="string">"three"</span> <span
class="special">);</span>
@@ -416,7 +440,7 @@
</p>
<div class="calloutlist"><table border="0" summary="Callout list"><tr>
<td width="5%" valign="top" align="left">
-<a name="boost_bimap17"></a><a href="#boost_bimap17co"><img
src="../../images/callouts/1.png" alt="1" border="0"></a> </td>
+<a name="boost_bimap18"></a><a href="#boost_bimap18co"><img
src="../../images/callouts/1.png" alt="1" border="0"></a> </td>
<td valign="top" align="left"><p>
Note that <code class="computeroutput"><span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">relation</span></code> has to be used instead of
<code class="computeroutput"><span
class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">value_type</span></code>. Contrary to <code
class="computeroutput"><span class="identifier">value_type</span></code>, <code
class="computeroutput"><span class="identifier">relation</span></code>
@@ -651,6 +675,102 @@
</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_foreach"></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_foreach"
title="Boost.Foreach">Boost.Foreach</a>
+</h4></div></div></div>
+<p>
+ In C++, writing a loop that iterates over a sequence is tedious. We
can
+ either use iterators, which requires a considerable amount of
boiler-plate,
+ or we can use the std::for_each() algorithm and move our loop body
into
+ a predicate, which requires no less boiler-plate and forces us to
move
+ our logic far from where it will be used. In contrast, some other
languages,
+ like Perl, provide a dedicated "foreach" construct that automates
+ this process. BOOST_FOREACH is just such a construct for C++. It
iterates
+ over sequences for us, freeing us from having to deal directly with
iterators
+ or write predicates.
+ </p>
+<p>
+ You can use BOOST_FOREACH macro with Boost.Bimap views. The
generated code
+ will be as efficient as a std::for_each iteration. Here are some
examples:
+ </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="identifier">list_of</span><span class="special"><</span><span
class="keyword">int</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">"1"</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">"2"</span><span class="special">,</span> <span
class="number">2</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">"3"</span><span class="special">,</span> <span
class="number">4</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">"4"</span><span class="special">,</span> <span
class="number">2</span><span class="special">)</span> <span
class="special">);</span>
+
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>
<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">left_reference</span> <span class="identifier">p</span><span
class="special">,</span> <span class="identifier">bm</span><span
class="special">.</span><span class="identifier">left</span> <span
class="special">)</span>
+<span class="special">{</span>
+ <span class="special">++</span><span class="identifier">p</span><span
class="special">.</span><span class="identifier">second</span><span
class="special">;</span> <span class="callout_bug"><a name="boost_bimap19co"
href="boost_libraries_that_work_well_with_boost_bimap.html#boost_bimap19"><img
src="../../images/callouts/1.png" alt="1" border="0"></a></span>
+<span class="special">}</span>
+
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>
<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">right_const_reference</span> <span
class="identifier">p</span><span class="special">,</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">right</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">p</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">p</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>
+
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ </p>
+<div class="calloutlist"><table border="0" summary="Callout list"><tr>
+<td width="5%" valign="top" align="left">
+<a name="boost_bimap19"></a><a href="#boost_bimap19co"><img
src="../../images/callouts/1.png" alt="1" border="0"></a> </td>
+<td valign="top" align="left"><p> We can modify the right element because we
have use a mutable collection
+ type in the right side. </p></td>
+</tr></table></div>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ You can use it directly with ranges too:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting">
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>
<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">left_reference</span> <span class="identifier">p</span><span
class="special">,</span>
+ <span class="special">(</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">left</span><span class="special">.</span><span
class="identifier">range</span><span class="special">(</span> <span
class="string">"1"</span> <span class="special"><=</span> <span
class="identifier">_key</span><span class="special">,</span> <span
class="identifier">_key</span> <span class="special"><</span> <span
class="string">"3"</span> <span class="special">)</span> <span
class="special">))</span>
+<span class="special">{</span>
+ <span class="special">++</span><span class="identifier">p</span><span
class="special">.</span><span class="identifier">second</span><span
class="special">;</span>
+<span class="special">}</span>
+
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>
<span class="identifier">bm_type</span><span class="special">::</span><span
class="identifier">left_const_reference</span> <span
class="identifier">p</span><span class="special">,</span>
+ <span class="special">(</span> <span
class="identifier">bm</span><span class="special">.</span><span
class="identifier">left</span><span class="special">.</span><span
class="identifier">range</span><span class="special">(</span> <span
class="string">"1"</span> <span class="special"><=</span> <span
class="identifier">_key</span><span class="special">,</span> <span
class="identifier">_key</span> <span class="special"><</span> <span
class="string">"3"</span> <span class="special">)</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">p</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">p</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>
+</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/foreach.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.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- dependencies.html 25 May 2007 04:54:06 -0000 1.1
+++ dependencies.html 31 May 2007 07:07:20 -0000 1.2
@@ -4,7 +4,7 @@
<title>Dependencies</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.70.1">
-<link rel="start" href="../../index.html" title="Chapter 1. Boost.bimap">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.Bimap">
<link rel="up" href="../bimap_and_boost.html" title="Bimap and Boost">
<link rel="prev" href="boost_libraries_that_work_well_with_boost_bimap.html"
title="Boost
Libraries that work well with Boost.Bimap">
@@ -36,7 +36,7 @@
is the heart of this library.
</p>
<div class="table">
-<a name="id2643654"></a><p class="title"><b>Table 1.4. Boost Libraries needed
by Boost.Bimap</b></p>
+<a name="id2649852"></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 +185,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id2643928"></a><p class="title"><b>Table 1.5. Optional Boost
Libraries</b></p>
+<a name="id2650126"></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 +355,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id2644214"></a><p class="title"><b>Table 1.6. Additional Boost
Libraries needed to run
+<a name="id2650413"></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