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">&lt;&lt;</span> 
<span class="keyword">const_cast</span><span class="special">&lt;</span><span 
class="keyword">const</span> <span class="identifier">bm_type</span><span 
class="special">&amp;&gt;(</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">&lt;&lt;</span> 
<span class="keyword">const_cast</span><span class="special">&lt;</span><span 
class="keyword">const</span> <span class="identifier">bm_type</span><span 
class="special">&amp;&gt;(</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">&lt;&lt;</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">&lt;</span> <span class="identifier">bm_type</span><span 
class="special">::</span><span class="identifier">relation</span> <span 
class="special">&gt;</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">&lt;</span> <span class="identifier">bm_type</span><span 
class="special">::</span><span class="identifier">relation</span> <span 
class="special">&gt;</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">&lt;</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">&lt;</span><span 
class="keyword">int</span><span class="special">&gt;</span> <span 
class="special">&gt;</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">&lt;&lt;</span> <span 
class="identifier">p</span><span class="special">.</span><span 
class="identifier">first</span> <span class="special">&lt;&lt;</span> <span 
class="string">"--&gt;"</span> <span class="special">&lt;&lt;</span> <span 
class="identifier">p</span><span class="special">.</span><span 
class="identifier">second</span> <span class="special">&lt;&lt;</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">&lt;=</span> <span 
class="identifier">_key</span><span class="special">,</span> <span 
class="identifier">_key</span> <span class="special">&lt;</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">&lt;=</span> <span 
class="identifier">_key</span><span class="special">,</span> <span 
class="identifier">_key</span> <span class="special">&lt;</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">&lt;&lt;</span> <span 
class="identifier">p</span><span class="special">.</span><span 
class="identifier">first</span> <span class="special">&lt;&lt;</span> <span 
class="string">"--&gt;"</span> <span class="special">&lt;&lt;</span> <span 
class="identifier">p</span><span class="special">.</span><span 
class="identifier">second</span> <span class="special">&lt;&lt;</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

Reply via email to