Boost logo

Boost-Commit :

From: oryol_at_[hidden]
Date: 2008-07-25 20:02:32


Author: jeremypack
Date: 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
New Revision: 47822
URL: http://svn.boost.org/trac/boost/changeset/47822

Log:
Doc updates - new second tutorial, modified tutorial 3.

Added examples.

Added:
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/generic_type_holder.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/type_holder.html (contents, props changed)
   sandbox/libs/extension/doc/html/extension/
   sandbox/libs/extension/doc/html/extension/reference.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/
   sandbox/libs/extension/doc/html/header/boost/
   sandbox/libs/extension/doc/html/header/boost/extension/
   sandbox/libs/extension/doc/html/header/boost/extension/convenience/
   sandbox/libs/extension/doc/html/header/boost/extension/convenience/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/extension/
   sandbox/libs/extension/doc/html/header/boost/extension/extension/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/factory/
   sandbox/libs/extension/doc/html/header/boost/extension/factory/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/factory_map/
   sandbox/libs/extension/doc/html/header/boost/extension/factory_map/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/filesystem/
   sandbox/libs/extension/doc/html/header/boost/extension/filesystem/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/functor/
   sandbox/libs/extension/doc/html/header/boost/extension/functor/hpp.html (contents, props changed)
   sandbox/libs/extension/doc/html/header/boost/extension/shared_library/
   sandbox/libs/extension/doc/html/header/boost/extension/shared_library/hpp.html (contents, props changed)
   sandbox/libs/extension/examples/tutorial_1/
   sandbox/libs/extension/examples/tutorial_1/hello_world.cpp (contents, props changed)
   sandbox/libs/extension/examples/tutorial_1/main.cpp (contents, props changed)
   sandbox/libs/extension/examples/tutorial_2/
   sandbox/libs/extension/examples/tutorial_2/animal.hpp (contents, props changed)
   sandbox/libs/extension/examples/tutorial_2/factories_lib.cpp (contents, props changed)
   sandbox/libs/extension/examples/tutorial_2/factories_main.cpp (contents, props changed)
Text files modified:
   sandbox/libs/extension/doc/extension.qbk | 11 +
   sandbox/libs/extension/doc/html/BOOST_EXTENSION_EXPORT_DECL.html | 10
   sandbox/libs/extension/doc/html/BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html | 10
   sandbox/libs/extension/doc/html/boost/extensions/adaptable_factory.html | 44 ++--
   sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html | 22 +-
   sandbox/libs/extension/doc/html/boost/extensions/basic_type_map.html | 24 +-
   sandbox/libs/extension/doc/html/boost/extensions/factory.html | 44 ++--
   sandbox/libs/extension/doc/html/boost/extensions/factory_map.html | 8
   sandbox/libs/extension/doc/html/boost/extensions/shared_library.html | 82 +++++++--
   sandbox/libs/extension/doc/html/boost/extensions/type_map.html | 2
   sandbox/libs/extension/doc/html/boost/reflections/basic_data_info.html | 26 +-
   sandbox/libs/extension/doc/html/boost/reflections/basic_parameter_map.html | 38 ++--
   sandbox/libs/extension/doc/html/boost/reflections/basic_reflection.html | 30 +-
   sandbox/libs/extension/doc/html/boost/reflections/basic_reflection/reflector.html | 32 ++--
   sandbox/libs/extension/doc/html/boost/reflections/conversion_not_found_exception.html | 12
   sandbox/libs/extension/doc/html/boost/reflections/data.html | 28 +-
   sandbox/libs/extension/doc/html/boost/reflections/generic_constructor.html | 24 +-
   sandbox/libs/extension/doc/html/boost/reflections/generic_parameter.html | 40 ++--
   sandbox/libs/extension/doc/html/boost/reflections/generic_parameter/basic_converter.html | 24 +-
   sandbox/libs/extension/doc/html/boost/reflections/instance.html | 20 +-
   sandbox/libs/extension/doc/html/boost/reflections/parameter.html | 36 ++--
   sandbox/libs/extension/doc/html/boost/reflections/parameter/default_converter.html | 18 +-
   sandbox/libs/extension/doc/html/boost/reflections/parameter/specialized_converter.html | 24 +-
   sandbox/libs/extension/doc/html/boost/reflections/parameter_map.html | 2
   sandbox/libs/extension/doc/html/boost/reflections/parameter_unavailable_exception.html | 16 +-
   sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_a.html | 2
   sandbox/libs/extension/doc/html/boost_extension/performance_analysis.html | 6
   sandbox/libs/extension/doc/html/boost_extension/reference.html | 21 +-
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html | 6
   sandbox/libs/extension/doc/html/boost_extension/tutorials.html | 50 +----
   sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial02.html | 313 +++++++++++++++++++++++++++------------
   sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial03.html | 298 ++++++++++++++++++++++++-------------
   sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial04.html | 3
   sandbox/libs/extension/doc/html/index.html | 28 ++
   sandbox/libs/extension/doc/tutorial1.qbk | 2
   sandbox/libs/extension/doc/tutorial2.qbk | 242 +++++++++++++++++++++---------
   sandbox/libs/extension/doc/tutorial3.qbk | 254 +++++++++++++++++++------------
   sandbox/libs/extension/doc/tutorials.qbk | 17 --
   sandbox/libs/extension/examples/Jamfile.v2 | 4
   sandbox/libs/extension/examples/multiple_inheritance/boat.cpp | 15 +
   sandbox/libs/extension/examples/multiple_inheritance/car.cpp | 15 +
   sandbox/libs/extension/examples/multiple_inheritance/car_of_the_future.cpp | 26 +-
   sandbox/libs/extension/examples/multiple_inheritance/computer.cpp | 14
   sandbox/libs/extension/examples/multiple_inheritance/flying_car.cpp | 24 +-
   sandbox/libs/extension/examples/multiple_inheritance/main_mi.cpp | 80 ++++-----
   sandbox/libs/extension/examples/multiple_inheritance/plane.cpp | 20 +-
   sandbox/libs/extension/examples/multiple_inheritance/vehicle.cpp | 13
   sandbox/libs/extension/test/Jamfile.v2 | 3
   48 files changed, 1232 insertions(+), 851 deletions(-)

Modified: sandbox/libs/extension/doc/extension.qbk
==============================================================================
--- sandbox/libs/extension/doc/extension.qbk (original)
+++ sandbox/libs/extension/doc/extension.qbk 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -17,11 +17,12 @@
         [@http://www.boost.org/LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt])
     ]
     [category Programming Interfaces]
- [last-revision $Date: 2008/7/23 21:36:00 $]
+ [last-revision $Date: 2008/7/25 7:36:00 $]
 ]
 
 
 [def _shared_library_ [^[classref boost::extensions::shared_library shared_library]]]
+[def _shared_library_get_ [^[funcref boost::extensions::shared_library::get shared_library::get]]]
 [def _factory_map_ [^[classref boost::extensions::factory_map factory_map]]]
 [def _factory_ [^[classref boost::extensions::factory factory]]]
 [def _type_map_ [^[classref boost::extensions::type_map type_map]]]
@@ -61,11 +62,15 @@
 
 Tutorials:
 
-* [link tutorial01 Tutorial 1: The shared_library class]
+* [link boost_extension.tutorials.tutorial01 Tutorial 1 - `shared_library` class]
+* [link boost_extension.tutorials.tutorial02 Tutorial 2 - `factory` class]
+* [link boost_extension.tutorials.tutorial03 Tutorial 3 - Multiple and Implementation Inheritance]
 
 Other Sections:
 
-* [link motivation Motivation]
+* [link boost_extension.motivation Motivation]
+* [link boost_extension.shared_libraries Shared Libraries]
+* [link boost_extension.extension_reflection Extension/Reflection Interoperability]
 
 The other sections in the documentation should be updated over the next few weeks, in
 preparation for review.

Modified: sandbox/libs/extension/doc/html/BOOST_EXTENSION_EXPORT_DECL.html
==============================================================================
--- sandbox/libs/extension/doc/html/BOOST_EXTENSION_EXPORT_DECL.html (original)
+++ sandbox/libs/extension/doc/html/BOOST_EXTENSION_EXPORT_DECL.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="boost_extension/reference.html#header.boost.extension.extension.hpp" title="Header &lt;boost/extension/extension.hpp&gt;">
-<link rel="prev" href="boost/extensions/load_single_library.html" title="Function load_single_library">
-<link rel="next" href="boost/extensions/factory.html" title="Class template factory">
+<link rel="prev" href="boost/extensions/load_single_library_id294352.html" title="Function load_single_library">
+<link rel="next" href="boost/extensions/basic_factory_map.html" title="Class template basic_factory_map">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="boost/extensions/load_single_library.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.extension.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/factory.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="boost/extensions/load_single_library_id294352.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.extension.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/basic_factory_map.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="BOOST_EXTENSION_EXPORT_DECL"></a><div class="titlepage"></div>
@@ -31,7 +31,7 @@
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">BOOST_EXTENSION_EXPORT_DECL</pre></div>
 <div class="refsect1" lang="en">
-<a name="id449932"></a><h2>Description</h2>
+<a name="id458574"></a><h2>Description</h2>
 <p>Macro to place in a function definition to cause it to be exported, if necessary on the given platform and with the current compiler settings. This is always required for MSVC and other compilers, but only required depending on compiler settings for GCC and other compilers. </p>
 </div>
 </div>
@@ -45,7 +45,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="boost/extensions/load_single_library.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.extension.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/factory.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="boost/extensions/load_single_library_id294352.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.extension.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/basic_factory_map.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html
==============================================================================
--- sandbox/libs/extension/doc/html/BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html (original)
+++ sandbox/libs/extension/doc/html/BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="boost_extension/reference.html#header.boost.extension.common.hpp" title="Header &lt;boost/extension/common.hpp&gt;">
-<link rel="prev" href="boost_extension/reference.html" title="Reference">
-<link rel="next" href="boost/extensions/load_single_library.html" title="Function load_single_library">
+<link rel="prev" href="BOOST_REFLECTION_MAX_FUNCTOR_PARAMS.html" title="Macro BOOST_REFLECTION_MAX_FUNCTOR_PARAMS">
+<link rel="next" href="BOOST_PP_ITERATION_LIMITS_id295262.html" title="Macro BOOST_PP_ITERATION_LIMITS">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="boost_extension/reference.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.common.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/load_single_library.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="BOOST_REFLECTION_MAX_FUNCTOR_PARAMS.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.common.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_PP_ITERATION_LIMITS_id295262.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="BOOST_EXTENSION_MAX_FUNCTOR_PARAMS"></a><div class="titlepage"></div>
@@ -31,7 +31,7 @@
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">BOOST_EXTENSION_MAX_FUNCTOR_PARAMS</pre></div>
 <div class="refsect1" lang="en">
-<a name="id449650"></a><h2>Description</h2>
+<a name="id462200"></a><h2>Description</h2>
 <p>This determines the maximum number of parameters that a constructor or exported shared library function can have. 10 is the same default as Boost.Function. </p>
 </div>
 </div>
@@ -45,7 +45,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="boost_extension/reference.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.common.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/extensions/load_single_library.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="BOOST_REFLECTION_MAX_FUNCTOR_PARAMS.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_extension/reference.html#header.boost.extension.common.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_PP_ITERATION_LIMITS_id295262.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/adaptable_factory.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/adaptable_factory.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/adaptable_factory.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -7,7 +7,7 @@
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.extension.adaptable_factory.hpp" title="Header &lt;boost/extension/adaptable_factory.hpp&gt;">
 <link rel="prev" href="../../boost_extension/reference.html" title="Reference">
-<link rel="next" href="load_single_library_id292277.html" title="Function load_single_library">
+<link rel="next" href="load_single_library_id294352.html" title="Function load_single_library">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../boost_extension/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.adaptable_factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="load_single_library_id292277.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../boost_extension/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.adaptable_factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="load_single_library_id294352.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.extensions.adaptable_factory"></a><div class="titlepage"></div>
@@ -34,37 +34,37 @@
 <span class="bold"><strong>class</strong></span> adaptable_factory {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- adaptable_factory();
- adaptable_factory(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp;);
- adaptable_factory&amp; operator=(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp;);
+ adaptable_factory();
+ adaptable_factory(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp;);
+ adaptable_factory&amp; operator=(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp;);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">Interface *</span> create(boost::reflections::parameter_map &amp;) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">Interface *</span> create(boost::reflections::parameter_map &amp;) <span class="bold"><strong>const</strong></span>;
   <span class="type">std::map&lt; TypeInfo, Info &gt;</span>
- get_missing_parameter_list(<span class="bold"><strong>const</strong></span> boost::reflections::parameter_map &amp;) <span class="bold"><strong>const</strong></span>;
- <span class="type"><span class="bold"><strong>bool</strong></span></span> is_valid() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Derived, <span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> set(Info) ;
+ get_missing_parameter_list(<span class="bold"><strong>const</strong></span> boost::reflections::parameter_map &amp;) <span class="bold"><strong>const</strong></span>;
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> is_valid() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Derived, <span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> set(Info) ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id455677"></a><h2>Description</h2>
+<a name="id457818"></a><h2>Description</h2>
 <p>This class is a function object that returns new instances of type Interface, using factories that take parameters described in the variable length list Params... </p>
 <div class="refsect2" lang="en">
-<a name="id455687"></a><h3>
+<a name="id457828"></a><h3>
 <a name="boost.extensions.adaptable_factoryconstruct-copy-destruct"></a><code class="computeroutput">adaptable_factory</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><a name="id292240-bb"></a>adaptable_factory();</pre></li>
-<li><pre class="literallayout"><a name="id292244-bb"></a>adaptable_factory(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
-<li><pre class="literallayout">adaptable_factory&amp; <a name="id292255-bb"></a><span class="bold"><strong>operator</strong></span>=(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
+<li><pre class="literallayout"><a name="id294314-bb"></a>adaptable_factory();</pre></li>
+<li><pre class="literallayout"><a name="id294319-bb"></a>adaptable_factory(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
+<li><pre class="literallayout">adaptable_factory&amp; <a name="id294329-bb"></a><span class="bold"><strong>operator</strong></span>=(adaptable_factory&lt; Interface &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id455798"></a><h3>
-<a name="id292102-bb"></a><code class="computeroutput">adaptable_factory</code> public member functions</h3>
+<a name="id457939"></a><h3>
+<a name="id294176-bb"></a><code class="computeroutput">adaptable_factory</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><span class="type">Interface *</span> <a name="id292105-bb"></a>create(boost::reflections::parameter_map &amp; map) <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="type">Interface *</span> <a name="id294179-bb"></a>create(boost::reflections::parameter_map &amp; map) <span class="bold"><strong>const</strong></span>;</pre>
 <p>Returns an instance of Interface (but does NOT retain ownership of the instance).
 
 
@@ -105,7 +105,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="type">std::map&lt; TypeInfo, Info &gt;</span>
-<a name="id292138-bb"></a>get_missing_parameter_list(<span class="bold"><strong>const</strong></span> boost::reflections::parameter_map &amp; map) <span class="bold"><strong>const</strong></span>;</pre>
+<a name="id294213-bb"></a>get_missing_parameter_list(<span class="bold"><strong>const</strong></span> boost::reflections::parameter_map &amp; map) <span class="bold"><strong>const</strong></span>;</pre>
 <p>Returns a map of the TypeInfo/Info pairs describing any parameters still needed before this function can be called.
 
 
@@ -145,7 +145,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id292175-bb"></a>is_valid() <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id294250-bb"></a>is_valid() <span class="bold"><strong>const</strong></span>;</pre>
 <p>Until set is called, a adaptable_factory cannot be used. This function can be used to determine if set has been called.
 
 
@@ -173,7 +173,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Derived, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id292201-bb"></a>set(Info parameter_names...) ;</pre>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id294276-bb"></a>set(Info parameter_names...) ;</pre>
 <p>This sets the factory function to the constructor for type D. It takes as arguments Info about each parameter in the constructor.
 
 
@@ -208,7 +208,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../boost_extension/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.adaptable_factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="load_single_library_id292277.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../boost_extension/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.adaptable_factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="load_single_library_id294352.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -33,32 +33,32 @@
 <span class="bold"><strong>class</strong></span> basic_factory_map {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~basic_factory_map();
+ ~basic_factory_map();
 
- <span class="emphasis"><em>// public member functions</em></span>
+ <span class="emphasis"><em>// public member functions</em></span>
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;</span> get() ;
+ <span class="type">std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;</span> get() ;
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...&gt;
- operator std::map< Info, factory< Interface, Params...> > &() ;
+ operator std::map< Info, factory< Interface, Params...> > &() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id456712"></a><h2>Description</h2>
+<a name="id458846"></a><h2>Description</h2>
 <p>
 </p>
 <div class="refsect2" lang="en">
-<a name="id456720"></a><h3>
+<a name="id458853"></a><h3>
 <a name="boost.extensions.basic_factory_mapconstruct-copy-destruct"></a><code class="computeroutput">basic_factory_map</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id292467-bb"></a>~basic_factory_map();</pre></li></ol></div>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id294537-bb"></a>~basic_factory_map();</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id456760"></a><h3>
-<a name="id292397-bb"></a><code class="computeroutput">basic_factory_map</code> public member functions</h3>
+<a name="id458893"></a><h3>
+<a name="id294466-bb"></a><code class="computeroutput">basic_factory_map</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;</span> <a name="id292400-bb"></a>get() ;</pre>
+ <span class="type">std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;</span> <a name="id294469-bb"></a>get() ;</pre>
 <p>
 
 This returns a map of the given type of factories. It can return an empty map if no such factories are found. </p>
@@ -73,7 +73,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <a name="id292436-bb"></a><span class="bold"><strong>operator</strong></span> std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;() ;</pre>
+ <a name="id294506-bb"></a><span class="bold"><strong>operator</strong></span> std::map&lt; Info, factory&lt; Interface, Params...&gt; &gt; &amp;() ;</pre>
 <p>A conversion operator for convenience in calling functions that take a map of factories. This is identical to the get() function. </p>
 </li>
 </ol></div>

Modified: sandbox/libs/extension/doc/html/boost/extensions/basic_type_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/basic_type_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_type_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -38,7 +38,7 @@
 
     <span class="bold"><strong>struct</strong></span> generic_type_holder {
       <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~generic_type_holder();
+ ~generic_type_holder();
     };
     <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt;
     <span class="bold"><strong>struct</strong></span> type_holder : <span class="bold"><strong>public</strong></span> boost::extensions::basic_type_map&lt; TypeInfo &gt;::type_map_convertible::generic_type_holder
@@ -46,26 +46,26 @@
       <span class="type">T</span> val;
     };
     <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~type_map_convertible();
+ ~type_map_convertible();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; operator Type &() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; operator Type &() ;
   };
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">type_map_convertible &amp;</span> get() ;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; <span class="type">Type &amp;</span> get() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">type_map_convertible &amp;</span> get() ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; <span class="type">Type &amp;</span> get() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id458116"></a><h2>Description</h2>
+<a name="id460386"></a><h2>Description</h2>
 <p>
 </p>
 <div class="refsect2" lang="en">
-<a name="id458124"></a><h3>
-<a name="id292787-bb"></a><code class="computeroutput">basic_type_map</code> public member functions</h3>
+<a name="id460393"></a><h3>
+<a name="id294902-bb"></a><code class="computeroutput">basic_type_map</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><span class="type">type_map_convertible &amp;</span> <a name="id292790-bb"></a>get() ;</pre></li>
-<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; <span class="type">Type &amp;</span> <a name="id292797-bb"></a>get() ;</pre></li>
+<li><pre class="literallayout"><span class="type">type_map_convertible &amp;</span> <a name="id294905-bb"></a>get() ;</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; <span class="type">Type &amp;</span> <a name="id294912-bb"></a>get() ;</pre></li>
 </ol></div>
 </div>
 </div>

Added: sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class type_map_convertible</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../basic_type_map.html#id460386" title="Description">
+<link rel="prev" href="../shared_library.html" title="Class shared_library">
+<link rel="next" href="type_map_convertible/generic_type_holder.html" title="Struct generic_type_holder">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../shared_library.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_type_map.html#id460386"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_map_convertible/generic_type_holder.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_type_map.type_map_convertible"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class type_map_convertible</span></h2>
+<p>boost::extensions::basic_type_map::type_map_convertible &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+
+<span class="bold"><strong>class</strong></span> type_map_convertible {
+<span class="bold"><strong>public</strong></span>:
+
+ <span class="bold"><strong>struct</strong></span> generic_type_holder {
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ ~generic_type_holder();
+ };
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt;
+ <span class="bold"><strong>struct</strong></span> type_holder : <span class="bold"><strong>public</strong></span> boost::extensions::basic_type_map&lt; TypeInfo &gt;::type_map_convertible::generic_type_holder
+ {
+ <span class="type">T</span> val;
+ };
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ ~type_map_convertible();
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; operator Type &() ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id460645"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id460650"></a><h3>
+<a name="boost.extensions.basic_type_map.type_map_convertibleconstruct-copy-destruct"></a><code class="computeroutput">type_map_convertible</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id294901-bb"></a>~type_map_convertible();</pre></li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id460693"></a><h3>
+<a name="id294885-bb"></a><code class="computeroutput">type_map_convertible</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Type&gt; <a name="id294888-bb"></a><span class="bold"><strong>operator</strong></span> Type &amp;() ;</pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../shared_library.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_type_map.html#id460386"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_map_convertible/generic_type_holder.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/generic_type_holder.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/generic_type_holder.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct generic_type_holder</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../type_map_convertible.html#id460645" title="Description">
+<link rel="prev" href="../../shared_library.html" title="Class shared_library">
+<link rel="next" href="type_holder.html" title="Struct template type_holder">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../shared_library.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../type_map_convertible.html#id460645"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_holder.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_type_map.type_map_convertible.generic_type_holder"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct generic_type_holder</span></h2>
+<p>boost::extensions::basic_type_map::type_map_convertible::generic_type_holder &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+
+<span class="bold"><strong>struct</strong></span> generic_type_holder {
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ ~generic_type_holder();
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id460810"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id460815"></a><h3>
+<a name="boost.extensions.basic_type_map.type_map_convertible.generic_type_holderconstruct-copy-destruct"></a><code class="computeroutput">generic_type_holder</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id294865-bb"></a>~generic_type_holder();</pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../shared_library.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../type_map_convertible.html#id460645"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_holder.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/type_holder.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_type_map/type_map_convertible/type_holder.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template type_holder</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../type_map_convertible.html#id460645" title="Description">
+<link rel="prev" href="generic_type_holder.html" title="Struct generic_type_holder">
+<link rel="next" href="../../type_map.html" title="Type definition type_map">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generic_type_holder.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../type_map_convertible.html#id460645"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../type_map.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_type_map.type_map_convertible.type_holder"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template type_holder</span></h2>
+<p>boost::extensions::basic_type_map::type_map_convertible::type_holder &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt;
+<span class="bold"><strong>struct</strong></span> type_holder : <span class="bold"><strong>public</strong></span> boost::extensions::basic_type_map&lt; TypeInfo &gt;::type_map_convertible::generic_type_holder
+{
+ <span class="type">T</span> val;
+};</pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generic_type_holder.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../type_map_convertible.html#id460645"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../type_map.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/factory.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/factory.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/factory.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,8 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.extension.factory.hpp" title="Header &lt;boost/extension/factory.hpp&gt;">
-<link rel="prev" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id293418.html" title="Macro BOOST_REFLECTION_CONSTRUCTI_FUNCTION">
-<link rel="next" href="../../BOOST_PP_ITERATION_LIMITS_id293579.html" title="Macro BOOST_PP_ITERATION_LIMITS">
+<link rel="prev" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id295534.html" title="Macro BOOST_REFLECTION_CONSTRUCTI_FUNCTION">
+<link rel="next" href="../../BOOST_PP_ITERATION_LIMITS_id295694.html" title="Macro BOOST_PP_ITERATION_LIMITS">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id293418.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id293579.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id295534.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id295694.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.extensions.factory"></a><div class="titlepage"></div>
@@ -33,39 +33,39 @@
 <span class="bold"><strong>class</strong></span> factory {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- factory();
- factory(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp;);
- factory&amp; operator=(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp;);
-
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> set() ;
- <span class="type"><span class="bold"><strong>bool</strong></span></span> is_valid() <span class="bold"><strong>const</strong></span>;
- <span class="type">T *</span> create(Params...) <span class="bold"><strong>const</strong></span>;
+ factory();
+ factory(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp;);
+ factory&amp; operator=(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp;);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> set() ;
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> is_valid() <span class="bold"><strong>const</strong></span>;
+ <span class="type">T *</span> create(Params...) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id461460"></a><h2>Description</h2>
+<a name="id463734"></a><h2>Description</h2>
 <p>This class is a function object that returns new instances of type T, using factories that take parameters described in the variable length list Params... </p>
 <div class="refsect2" lang="en">
-<a name="id461470"></a><h3>
+<a name="id463744"></a><h3>
 <a name="boost.extensions.factoryconstruct-copy-destruct"></a><code class="computeroutput">factory</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><a name="id293537-bb"></a>factory();</pre></li>
-<li><pre class="literallayout"><a name="id293541-bb"></a>factory(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
-<li><pre class="literallayout">factory&amp; <a name="id293552-bb"></a><span class="bold"><strong>operator</strong></span>=(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
+<li><pre class="literallayout"><a name="id295652-bb"></a>factory();</pre></li>
+<li><pre class="literallayout"><a name="id295657-bb"></a>factory(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
+<li><pre class="literallayout">factory&amp; <a name="id295667-bb"></a><span class="bold"><strong>operator</strong></span>=(factory&lt; T &gt; <span class="bold"><strong>const</strong></span> &amp; first);</pre></li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id461577"></a><h3>
-<a name="id293461-bb"></a><code class="computeroutput">factory</code> public member functions</h3>
+<a name="id463851"></a><h3>
+<a name="id295576-bb"></a><code class="computeroutput">factory</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293464-bb"></a>set() ;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id295579-bb"></a>set() ;</pre>
 <p>This sets the factory function to the constructor for type D. Example: factory&lt;Base, int, int&gt; f; f.set&lt;Derived&gt;(); </p>
 </li>
 <li>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id293485-bb"></a>is_valid() <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id295600-bb"></a>is_valid() <span class="bold"><strong>const</strong></span>;</pre>
 <p>Until set is called, a factory cannot be used. This function can be used to determine if set has been called.
 
 
@@ -92,7 +92,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="type">T *</span> <a name="id293511-bb"></a>create(Params...) <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="type">T *</span> <a name="id295626-bb"></a>create(Params...) <span class="bold"><strong>const</strong></span>;</pre>
 <p>Returns an instance of T (but does NOT retain ownership of the instance).
 
 
@@ -133,7 +133,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id293418.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id293579.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_REFLECTION_CONSTRUCTI_FUNCTION_id295534.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id295694.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/factory_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/factory_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/factory_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -7,7 +7,7 @@
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.extension.factory_map.hpp" title="Header &lt;boost/extension/factory_map.hpp&gt;">
 <link rel="prev" href="basic_factory_map.html" title="Class template basic_factory_map">
-<link rel="next" href="../../BOOST_PP_ITERATION_LIMITS_id292527.html" title="Macro BOOST_PP_ITERATION_LIMITS">
+<link rel="next" href="../../BOOST_PP_ITERATION_LIMITS_id294597.html" title="Macro BOOST_PP_ITERATION_LIMITS">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory_map.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id292527.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory_map.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id294597.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.extensions.factory_map"></a><div class="titlepage"></div>
@@ -32,7 +32,7 @@
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
 <span class="bold"><strong>typedef</strong></span> basic_factory_map&lt; default_type_info &gt; factory_map;</pre></div>
 <div class="refsect1" lang="en">
-<a name="id456938"></a><h2>Description</h2>
+<a name="id459072"></a><h2>Description</h2>
 <p>A typedef for convenience - provides the most common type of basic_factory_map. </p>
 </div>
 </div>
@@ -46,7 +46,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory_map.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id292527.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.factory_map.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PP_ITERATION_LIMITS_id294597.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/shared_library.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/shared_library.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/shared_library.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.extension.shared_library.hpp" title="Header &lt;boost/extension/shared_library.hpp&gt;">
-<link rel="prev" href="../../BOOST_PP_FILENAME_1_id292533.html" title="Macro BOOST_PP_FILENAME_1">
+<link rel="prev" href="../../BOOST_PP_FILENAME_1_id294603.html" title="Macro BOOST_PP_FILENAME_1">
 <link rel="next" href="basic_type_map.html" title="Class template basic_type_map">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../BOOST_PP_FILENAME_1_id292533.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.shared_library.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_type_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_PP_FILENAME_1_id294603.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.shared_library.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_type_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.extensions.shared_library"></a><div class="titlepage"></div>
@@ -33,28 +33,29 @@
 <span class="bold"><strong>class</strong></span> shared_library {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- shared_library(<span class="bold"><strong>const</strong></span> std::string &amp;, <span class="bold"><strong>bool</strong></span> = false);
- ~shared_library();
+ shared_library(<span class="bold"><strong>const</strong></span> std::string &amp;, <span class="bold"><strong>bool</strong></span> = false);
+ ~shared_library();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>bool</strong></span></span> is_open() <span class="bold"><strong>const</strong></span>;
- <span class="type"><span class="bold"><strong>bool</strong></span></span> open() ;
- <span class="type"><span class="bold"><strong>bool</strong></span></span> close() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> is_open() <span class="bold"><strong>const</strong></span>;
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> open() ;
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> close() ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> call(basic_type_map&lt; TypeInfo &gt; &amp;) ;
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> RetValue, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">FunctionPtr&lt; ReturnValue(Params...)&gt;</span> get(<span class="bold"><strong>const</strong></span> std::string &amp;) <span class="bold"><strong>const</strong></span>;
+ <span class="type">FunctionPtr&lt; ReturnValue(Params...)&gt;</span> get(<span class="bold"><strong>const</strong></span> std::string &amp;) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id457366"></a><h2>Description</h2>
+<a name="id459537"></a><h2>Description</h2>
 <p>
 </p>
 <div class="refsect2" lang="en">
-<a name="id457373"></a><h3>
+<a name="id459544"></a><h3>
 <a name="boost.extensions.shared_libraryconstruct-copy-destruct"></a><code class="computeroutput">shared_library</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><a name="id292685-bb"></a>shared_library(<span class="bold"><strong>const</strong></span> std::string &amp; location, <span class="bold"><strong>bool</strong></span> auto_close = false);</pre>
+<pre class="literallayout"><a name="id294800-bb"></a>shared_library(<span class="bold"><strong>const</strong></span> std::string &amp; location, <span class="bold"><strong>bool</strong></span> auto_close = false);</pre>
 <p>shared_library constructor
 </p>
 <div class="variablelist"><table border="0">
@@ -81,17 +82,17 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><a name="id292711-bb"></a>~shared_library();</pre>
+<pre class="literallayout"><a name="id294826-bb"></a>~shared_library();</pre>
 <p>shared_library destructor If auto_close_ was set to true in the constructor, this closes the library if it is currently open. </p>
 </li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id457490"></a><h3>
-<a name="id292558-bb"></a><code class="computeroutput">shared_library</code> public member functions</h3>
+<a name="id459660"></a><h3>
+<a name="id294628-bb"></a><code class="computeroutput">shared_library</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id292561-bb"></a>is_open() <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id294630-bb"></a>is_open() <span class="bold"><strong>const</strong></span>;</pre>
 <p>
 
 
@@ -118,7 +119,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id292582-bb"></a>open() ;</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id294652-bb"></a>open() ;</pre>
 <p>
 
 
@@ -145,7 +146,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id292606-bb"></a>close() ;</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id294676-bb"></a>close() ;</pre>
 <p>
 
 
@@ -172,8 +173,49 @@
 </table></div>
 </li>
 <li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id294703-bb"></a>call(basic_type_map&lt; TypeInfo &gt; &amp; types) ;</pre>
+<p>There is a special function called boost_extension_exported_type_map_function which is commonly used by shared libraries. The call function attempts to find and call that function, given a type_map.</p>
+<p>
+
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">Parameters:</span></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><code class="computeroutput">types</code></span></td>
+<td><p>A type_map that will be sent to the function. </p></td>
+</tr></tbody>
+</table></div></td>
+</tr>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>is_open() == true </p></td>
+</tr>
+<tr>
+<td>
+<span class="term">Postconditions:</span></td>
+<td><p>None. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term">Returns:</span></td>
+<td><p>true on success. </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> RetValue, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">FunctionPtr&lt; ReturnValue(Params...)&gt;</span> <a name="id292633-bb"></a>get(<span class="bold"><strong>const</strong></span> std::string &amp; name) <span class="bold"><strong>const</strong></span>;</pre>
+ <span class="type">FunctionPtr&lt; ReturnValue(Params...)&gt;</span> <a name="id294749-bb"></a>get(<span class="bold"><strong>const</strong></span> std::string &amp; name) <span class="bold"><strong>const</strong></span>;</pre>
 <p>A templated function taking as template arguments the type of the return value and parameters of a function to look up in the shared library.</p>
 <p>This function must have been declared with the same parameters and return type and marked as extern "C".</p>
 <p>Depending on platform and compiler settings, it may also be necessary to prefix the function with BOOST_EXTENSION_DECL, to make it externally visible.</p>
@@ -212,7 +254,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../BOOST_PP_FILENAME_1_id292533.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.shared_library.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_type_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_PP_FILENAME_1_id294603.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.extension.shared_library.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_type_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/extensions/type_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/extensions/type_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/extensions/type_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -32,7 +32,7 @@
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
 <span class="bold"><strong>typedef</strong></span> basic_type_map&lt; default_type_info &gt; type_map;</pre></div>
 <div class="refsect1" lang="en">
-<a name="id458690"></a><h2>Description</h2>
+<a name="id460960"></a><h2>Description</h2>
 <p>A typedef for convenience - provides the most common type of basic_factory_map. </p>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/basic_data_info.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/basic_data_info.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/basic_data_info.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -32,32 +32,32 @@
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> TypeInfo&gt;
 <span class="bold"><strong>struct</strong></span> basic_data_info {
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- basic_data_info(TypeInfo, Info);
- basic_data_info(<span class="bold"><strong>const</strong></span> basic_data_info &amp;);
- basic_data_info&amp; operator=(basic_data_info &amp;);
+ basic_data_info(TypeInfo, Info);
+ basic_data_info(<span class="bold"><strong>const</strong></span> basic_data_info &amp;);
+ basic_data_info&amp; operator=(basic_data_info &amp;);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"></span> BOOST_CONCEPT_ASSERT((LessThanComparable&lt; TypeInfo &gt;)) ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"></span> BOOST_CONCEPT_ASSERT((LessThanComparable&lt; TypeInfo &gt;)) ;
   <span class="type">TypeInfo</span> type_info_;
   <span class="type">Info</span> info_;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id460891"></a><h2>Description</h2>
+<a name="id463163"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id460896"></a><h3>
+<a name="id463168"></a><h3>
 <a name="boost.reflections.basic_data_infoconstruct-copy-destruct"></a><code class="computeroutput">basic_data_info</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><a name="id293346-bb"></a>basic_data_info(TypeInfo t, Info i);</pre></li>
-<li><pre class="literallayout"><a name="id293357-bb"></a>basic_data_info(<span class="bold"><strong>const</strong></span> basic_data_info &amp; s);</pre></li>
-<li><pre class="literallayout">basic_data_info&amp; <a name="id293363-bb"></a><span class="bold"><strong>operator</strong></span>=(basic_data_info &amp; s);</pre></li>
+<li><pre class="literallayout"><a name="id295461-bb"></a>basic_data_info(TypeInfo t, Info i);</pre></li>
+<li><pre class="literallayout"><a name="id295473-bb"></a>basic_data_info(<span class="bold"><strong>const</strong></span> basic_data_info &amp; s);</pre></li>
+<li><pre class="literallayout">basic_data_info&amp; <a name="id295479-bb"></a><span class="bold"><strong>operator</strong></span>=(basic_data_info &amp; s);</pre></li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id460983"></a><h3>
-<a name="id293331-bb"></a><code class="computeroutput">basic_data_info</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"></span> <a name="id293334-bb"></a>BOOST_CONCEPT_ASSERT((LessThanComparable&lt; TypeInfo &gt;)) ;</pre></li></ol></div>
+<a name="id463255"></a><h3>
+<a name="id295447-bb"></a><code class="computeroutput">basic_data_info</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"></span> <a name="id295450-bb"></a>BOOST_CONCEPT_ASSERT((LessThanComparable&lt; TypeInfo &gt;)) ;</pre></li></ol></div>
 </div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/basic_parameter_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/basic_parameter_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/basic_parameter_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -38,42 +38,42 @@
   <span class="bold"><strong>typedef</strong></span> std::multimap&lt; Info, generic_parameter&lt; TypeInfo &gt; * &gt; <a name="boost.reflections.basic_parameter_map.map_type"></a>map_type;
 
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~basic_parameter_map();
- ~basic_parameter_map();
+ ~basic_parameter_map();
+ ~basic_parameter_map();
 
- <span class="emphasis"><em>// public member functions</em></span>
+ <span class="emphasis"><em>// public member functions</em></span>
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) ;
+ <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) ;
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; <span class="bold"><strong>const</strong></span> generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) <span class="bold"><strong>const</strong></span>;
+ <span class="type">std::vector&lt; <span class="bold"><strong>const</strong></span> generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) <span class="bold"><strong>const</strong></span>;
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) ;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> has(Info) <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type">generic_parameter&lt; TypeInfo &gt; *</span> get_first(Info) ;
+ <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> get(Info) ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> has(Info) <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type">generic_parameter&lt; TypeInfo &gt; *</span> get_first(Info) ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id459291"></a><h2>Description</h2>
+<a name="id461560"></a><h2>Description</h2>
 <p>The basic_parameter_map is designed to hold arbitrary data indexed by the value of the Info parameter, and can return all items that match a certain type and Info parameter, ie all integers called "foobar". </p>
 <div class="refsect2" lang="en">
-<a name="id459302"></a><h3>
+<a name="id461570"></a><h3>
 <a name="boost.reflections.basic_parameter_mapconstruct-copy-destruct"></a><code class="computeroutput">basic_parameter_map</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><a name="id293095-bb"></a>~basic_parameter_map();</pre>
+<pre class="literallayout"><a name="id295211-bb"></a>~basic_parameter_map();</pre>
 <p>The destructor deletes all of the parameters that it references. </p>
 </li>
-<li><pre class="literallayout"><a name="id293101-bb"></a>~basic_parameter_map();</pre></li>
+<li><pre class="literallayout"><a name="id295216-bb"></a>~basic_parameter_map();</pre></li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id459362"></a><h3>
-<a name="id292890-bb"></a><code class="computeroutput">basic_parameter_map</code> public member functions</h3>
+<a name="id461631"></a><h3>
+<a name="id295005-bb"></a><code class="computeroutput">basic_parameter_map</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id292893-bb"></a>get(Info info) ;</pre>
+ <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id295008-bb"></a>get(Info info) ;</pre>
 <p>Given an Info value and a type, this will return all parameters that either match the given type or are convertible to the given type.
 
 
@@ -115,7 +115,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; <span class="bold"><strong>const</strong></span> generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id292935-bb"></a>get(Info info) <span class="bold"><strong>const</strong></span>;</pre>
+ <span class="type">std::vector&lt; <span class="bold"><strong>const</strong></span> generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id295051-bb"></a>get(Info info) <span class="bold"><strong>const</strong></span>;</pre>
 <p>Given an Info value and a type, this will return all parameters that either match the given type or are convertible to the given type. This function is const.
 
 
@@ -157,7 +157,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt;
- <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id292979-bb"></a>get(Info info) ;</pre>
+ <span class="type">std::vector&lt; generic_parameter&lt; TypeInfo &gt; * &gt;</span> <a name="id295094-bb"></a>get(Info info) ;</pre>
 <p>Given a type (D) and Info (ie, string describing the parameter), return a vector containing all generic_parameters that match, or can be converted to the given type.</p>
 <p>
 
@@ -187,7 +187,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id293019-bb"></a>has(Info info) <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id295134-bb"></a>has(Info info) <span class="bold"><strong>const</strong></span>;</pre>
 <p>Given a type (D) and Info (ie, string describing the parameter), return true if the element exists in the parameter_map.</p>
 <p>
 
@@ -217,7 +217,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type">generic_parameter&lt; TypeInfo &gt; *</span> <a name="id293057-bb"></a>get_first(Info info) ;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> D&gt; <span class="type">generic_parameter&lt; TypeInfo &gt; *</span> <a name="id295172-bb"></a>get_first(Info info) ;</pre>
 <p>Given a type (D) and Info (ie, string describing the parameter), return first parameter matching, or that can be converted to that type.</p>
 <p>
 

Modified: sandbox/libs/extension/doc/html/boost/reflections/basic_reflection.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/basic_reflection.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/basic_reflection.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -44,30 +44,30 @@
     <span class="bold"><strong>typedef</strong></span> basic_constructor_info&lt; TypeInfo, ParameterInfo &gt; constructor_info;
 
     <span class="emphasis"><em>// construct/copy/destruct</em></span>
- reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; *);
+ reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; *);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> constructor() ;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> data(Data T::*, Info) ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> constructor() ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> data(Data T::*, Info) ;
     <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> ReturnValue = <span class="bold"><strong>void</strong></span>, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">reflector &amp;</span> function(<span class="bold"><strong>void</strong></span>(T::*)(), Info) ;
+ <span class="type">reflector &amp;</span> function(<span class="bold"><strong>void</strong></span>(T::*)(), Info) ;
   };
 
- <span class="emphasis"><em>// public member functions</em></span>
+ <span class="emphasis"><em>// public member functions</em></span>
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">instance_constructor&lt; Params...&gt;</span> get_constructor() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">data&lt; Data &gt;</span> get_data(Info) <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">reflector&lt; T &gt;</span> reflect() ;
+ <span class="type">instance_constructor&lt; Params...&gt;</span> get_constructor() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">data&lt; Data &gt;</span> get_data(Info) <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">reflector&lt; T &gt;</span> reflect() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id465290"></a><h2>Description</h2>
+<a name="id467550"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id465295"></a><h3>
-<a name="id294252-bb"></a><code class="computeroutput">basic_reflection</code> public member functions</h3>
+<a name="id467556"></a><h3>
+<a name="id296368-bb"></a><code class="computeroutput">basic_reflection</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">instance_constructor&lt; Params...&gt;</span> <a name="id294255-bb"></a>get_constructor() <span class="bold"><strong>const</strong></span>;</pre>
+ <span class="type">instance_constructor&lt; Params...&gt;</span> <a name="id296370-bb"></a>get_constructor() <span class="bold"><strong>const</strong></span>;</pre>
 <p>
 
 Attempt to retrieve any constructor whose Params match the list in Params... For example: </p>
@@ -103,7 +103,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">data&lt; Data &gt;</span> <a name="id294293-bb"></a>get_data(Info info) <span class="bold"><strong>const</strong></span>;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">data&lt; Data &gt;</span> <a name="id296409-bb"></a>get_data(Info info) <span class="bold"><strong>const</strong></span>;</pre>
 <p>
 
 Attempt to retrieve any data of type Data and the same Info. For example: </p>
@@ -140,7 +140,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">reflector&lt; T &gt;</span> <a name="id294336-bb"></a>reflect() ;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">reflector&lt; T &gt;</span> <a name="id296455-bb"></a>reflect() ;</pre>
 <p>
 
 

Modified: sandbox/libs/extension/doc/html/boost/reflections/basic_reflection/reflector.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/basic_reflection/reflector.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/basic_reflection/reflector.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -5,7 +5,7 @@
 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../../index.html" title="Chapter 1. Boost.Extension">
-<link rel="up" href="../basic_reflection.html#id465290" title="Description">
+<link rel="up" href="../basic_reflection.html#id467550" title="Description">
 <link rel="prev" href="../parameter/specialized_converter.html" title="Class template specialized_converter">
 <link rel="next" href="../../../boost_extension/appendices/appendix_a.html" title=" Appendix A -
       Windows Export and Import Declarations">
@@ -21,7 +21,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../parameter/specialized_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_reflection.html#id465290"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost_extension/appendices/appendix_a.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../parameter/specialized_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_reflection.html#id467550"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost_extension/appendices/appendix_a.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.basic_reflection.reflector"></a><div class="titlepage"></div>
@@ -40,16 +40,16 @@
   <span class="bold"><strong>typedef</strong></span> basic_constructor_info&lt; TypeInfo, ParameterInfo &gt; <a name="boost.reflections.basic_reflection.reflector.constructor_info"></a>constructor_info;
 
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; *);
+ reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; *);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> constructor() ;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> data(Data T::*, Info) ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> constructor() ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> data(Data T::*, Info) ;
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> ReturnValue = <span class="bold"><strong>void</strong></span>, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">reflector &amp;</span> function(<span class="bold"><strong>void</strong></span>(T::*)(), Info) ;
+ <span class="type">reflector &amp;</span> function(<span class="bold"><strong>void</strong></span>(T::*)(), Info) ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id465794"></a><h2>Description</h2>
+<a name="id468055"></a><h2>Description</h2>
 <p>The reflector class is returned by the reflect method, and can then be used to reflect constructors, functions or data. It is normally used chained: </p>
 <pre class="programlisting"> reflection r;
  r.reflect&lt;MyClass&gt;()
@@ -58,12 +58,12 @@
 </pre>
 <p> </p>
 <div class="refsect2" lang="en">
-<a name="id465812"></a><h3>
+<a name="id468073"></a><h3>
 <a name="boost.reflections.basic_reflection.reflectorconstruct-copy-destruct"></a><code class="computeroutput">reflector</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1"><li>
-<pre class="literallayout"><a name="id294223-bb"></a>reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; * current_reflection);</pre>
+<pre class="literallayout"><a name="id296338-bb"></a>reflector(basic_reflection&lt; Info, ParameterInfo, TypeInfo &gt; * current_reflection);</pre>
 <p>Initialize with a pointer to the reflection this reflector will be reflecting into. This is called by the reflection::reflect function.
 
 
@@ -98,11 +98,11 @@
 </li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id465902"></a><h3>
-<a name="id294089-bb"></a><code class="computeroutput">reflector</code> public member functions</h3>
+<a name="id468163"></a><h3>
+<a name="id296204-bb"></a><code class="computeroutput">reflector</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> <a name="id294092-bb"></a>constructor() ;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Params...&gt; <span class="type">reflector &amp;</span> <a name="id296207-bb"></a>constructor() ;</pre>
 <p>
 
 
@@ -130,7 +130,7 @@
 </table></div>
 </li>
 <li>
-<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> <a name="id294124-bb"></a>data(Data T::* data_ptr, Info info) ;</pre>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Data&gt; <span class="type">reflector &amp;</span> <a name="id296240-bb"></a>data(Data T::* data_ptr, Info info) ;</pre>
 <p>
 
 
@@ -173,7 +173,7 @@
 </li>
 <li>
 <pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> ReturnValue = <span class="bold"><strong>void</strong></span>, <span class="bold"><strong>typename</strong></span> Params...&gt;
- <span class="type">reflector &amp;</span> <a name="id294170-bb"></a>function(<span class="bold"><strong>void</strong></span>(T::*)() func, Info info) ;</pre>
+ <span class="type">reflector &amp;</span> <a name="id296286-bb"></a>function(<span class="bold"><strong>void</strong></span>(T::*)() func, Info info) ;</pre>
 <p>
 
 
@@ -228,7 +228,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../parameter/specialized_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_reflection.html#id465290"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost_extension/appendices/appendix_a.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../parameter/specialized_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_reflection.html#id467550"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost_extension/appendices/appendix_a.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/conversion_not_found_exception.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/conversion_not_found_exception.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/conversion_not_found_exception.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -33,15 +33,15 @@
 <span class="bold"><strong>class</strong></span> conversion_not_found_exception {
 <span class="bold"><strong>public</strong></span>:
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id462930"></a><h2>Description</h2>
+<a name="id465200"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id462935"></a><h3>
-<a name="id293755-bb"></a><code class="computeroutput">conversion_not_found_exception</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id293758-bb"></a>what() ;</pre></li></ol></div>
+<a name="id465205"></a><h3>
+<a name="id295870-bb"></a><code class="computeroutput">conversion_not_found_exception</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id295873-bb"></a>what() ;</pre></li></ol></div>
 </div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/data.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/data.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/data.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.reflection.data.hpp" title="Header &lt;boost/reflection/data.hpp&gt;">
-<link rel="prev" href="../../basic_constructor_info_TypeInfo__id293156.html" title="Struct template basic_constructor_info&lt;TypeInfo&gt;">
+<link rel="prev" href="../../basic_constructor_info_TypeInfo__id295272.html" title="Struct template basic_constructor_info&lt;TypeInfo&gt;">
 <link rel="next" href="basic_data_info.html" title="Struct template basic_data_info">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../basic_constructor_info_TypeInfo__id293156.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.data.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_data_info.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../basic_constructor_info_TypeInfo__id295272.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.data.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_data_info.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.data"></a><div class="titlepage"></div>
@@ -33,28 +33,28 @@
 <span class="bold"><strong>class</strong></span> data {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- data(impl::MemberPtr = 0, T &amp;(*)(<span class="bold"><strong>void</strong></span> *, impl::MemberPtr) = 0);
+ data(impl::MemberPtr = 0, T &amp;(*)(<span class="bold"><strong>void</strong></span> *, impl::MemberPtr) = 0);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">T &amp;</span> operator()(instance &amp;) <span class="bold"><strong>const</strong></span>;
- <span class="type"><span class="bold"><strong>bool</strong></span></span> valid() <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">T &amp;</span> operator()(instance &amp;) <span class="bold"><strong>const</strong></span>;
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> valid() <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id460553"></a><h2>Description</h2>
+<a name="id462824"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id460558"></a><h3>
+<a name="id462829"></a><h3>
 <a name="boost.reflections.dataconstruct-copy-destruct"></a><code class="computeroutput">data</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id293250-bb"></a>data(impl::MemberPtr data_ptr = 0,
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id295366-bb"></a>data(impl::MemberPtr data_ptr = 0,
      T &amp;(*)(<span class="bold"><strong>void</strong></span> *, impl::MemberPtr) conversion_function = 0);</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id460605"></a><h3>
-<a name="id293229-bb"></a><code class="computeroutput">data</code> public member functions</h3>
+<a name="id462877"></a><h3>
+<a name="id295344-bb"></a><code class="computeroutput">data</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><span class="type">T &amp;</span> <a name="id293232-bb"></a><span class="bold"><strong>operator</strong></span>()(instance &amp; inst) <span class="bold"><strong>const</strong></span>;</pre></li>
-<li><pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id293244-bb"></a>valid() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">T &amp;</span> <a name="id295347-bb"></a><span class="bold"><strong>operator</strong></span>()(instance &amp; inst) <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id295359-bb"></a>valid() <span class="bold"><strong>const</strong></span>;</pre></li>
 </ol></div>
 </div>
 </div>
@@ -69,7 +69,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../basic_constructor_info_TypeInfo__id293156.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.data.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_data_info.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../basic_constructor_info_TypeInfo__id295272.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.data.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_data_info.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/generic_constructor.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/generic_constructor.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/generic_constructor.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../../boost_extension/reference.html#header.boost.reflection.generic_constructor.hpp" title="Header &lt;boost/reflection/generic_constructor.hpp&gt;">
-<link rel="prev" href="../../basic_function_info_Info,_TypeInfo__id293588.html" title="Struct template basic_function_info&lt;Info, TypeInfo&gt;">
+<link rel="prev" href="../../basic_function_info_Info,_TypeInfo__id295704.html" title="Struct template basic_function_info&lt;Info, TypeInfo&gt;">
 <link rel="next" href="instance.html" title="Class instance">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../basic_function_info_Info,_TypeInfo__id293588.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.generic_constructor.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="instance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../basic_function_info_Info,_TypeInfo__id295704.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.generic_constructor.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="instance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.generic_constructor"></a><div class="titlepage"></div>
@@ -33,24 +33,24 @@
 <span class="bold"><strong>class</strong></span> generic_constructor {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~generic_constructor();
+ ~generic_constructor();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">T *</span> create(<span class="bold"><strong>void</strong></span> **) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">T *</span> create(<span class="bold"><strong>void</strong></span> **) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id462348"></a><h2>Description</h2>
+<a name="id464619"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id462353"></a><h3>
+<a name="id464624"></a><h3>
 <a name="boost.reflections.generic_constructorconstruct-copy-destruct"></a><code class="computeroutput">generic_constructor</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id293699-bb"></a>~generic_constructor();</pre></li></ol></div>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id295814-bb"></a>~generic_constructor();</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id462394"></a><h3>
-<a name="id293684-bb"></a><code class="computeroutput">generic_constructor</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type">T *</span> <a name="id293687-bb"></a>create(<span class="bold"><strong>void</strong></span> ** params) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
+<a name="id464665"></a><h3>
+<a name="id295799-bb"></a><code class="computeroutput">generic_constructor</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type">T *</span> <a name="id295802-bb"></a>create(<span class="bold"><strong>void</strong></span> ** params) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
 </div>
 </div>
 </div>
@@ -64,7 +64,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../basic_function_info_Info,_TypeInfo__id293588.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.generic_constructor.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="instance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../basic_function_info_Info,_TypeInfo__id295704.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_extension/reference.html#header.boost.reflection.generic_constructor.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="instance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/generic_parameter.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/generic_parameter.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/generic_parameter.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -38,42 +38,42 @@
   <span class="bold"><strong>class</strong></span> basic_converter {
   <span class="bold"><strong>public</strong></span>:
     <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~basic_converter();
+ ~basic_converter();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
   };
 
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- generic_parameter(<span class="bold"><strong>void</strong></span> *);
- ~generic_parameter();
+ generic_parameter(<span class="bold"><strong>void</strong></span> *);
+ ~generic_parameter();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">TypeInfo</span> type() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> can_cast() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type">S</span> cast() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> cast(S *) ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">TypeInfo</span> type() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> can_cast() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type">S</span> cast() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> cast(S *) ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id463318"></a><h2>Description</h2>
+<a name="id465584"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id463323"></a><h3>
+<a name="id465589"></a><h3>
 <a name="boost.reflections.generic_parameterconstruct-copy-destruct"></a><code class="computeroutput">generic_parameter</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><a name="id293863-bb"></a>generic_parameter(<span class="bold"><strong>void</strong></span> * value);</pre></li>
-<li><pre class="literallayout"><a name="id293859-bb"></a>~generic_parameter();</pre></li>
+<li><pre class="literallayout"><a name="id295979-bb"></a>generic_parameter(<span class="bold"><strong>void</strong></span> * value);</pre></li>
+<li><pre class="literallayout"><a name="id295975-bb"></a>~generic_parameter();</pre></li>
 </ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id463386"></a><h3>
-<a name="id293805-bb"></a><code class="computeroutput">generic_parameter</code> public member functions</h3>
+<a name="id465652"></a><h3>
+<a name="id295921-bb"></a><code class="computeroutput">generic_parameter</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><span class="type">TypeInfo</span> <a name="id293808-bb"></a>type() <span class="bold"><strong>const</strong></span>;</pre></li>
-<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id293815-bb"></a>can_cast() <span class="bold"><strong>const</strong></span>;</pre></li>
-<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type">S</span> <a name="id293828-bb"></a>cast() <span class="bold"><strong>const</strong></span>;</pre></li>
-<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293841-bb"></a>cast(S * dest) ;</pre></li>
+<li><pre class="literallayout"><span class="type">TypeInfo</span> <a name="id295924-bb"></a>type() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id295930-bb"></a>can_cast() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type">S</span> <a name="id295944-bb"></a>cast() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id295957-bb"></a>cast(S * dest) ;</pre></li>
 </ol></div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/generic_parameter/basic_converter.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/generic_parameter/basic_converter.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/generic_parameter/basic_converter.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -5,7 +5,7 @@
 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../../index.html" title="Chapter 1. Boost.Extension">
-<link rel="up" href="../generic_parameter.html#id463318" title="Description">
+<link rel="up" href="../generic_parameter.html#id465584" title="Description">
 <link rel="prev" href="../conversion_not_found_exception.html" title="Class conversion_not_found_exception">
 <link rel="next" href="../parameter.html" title="Class template parameter">
 </head>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../conversion_not_found_exception.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generic_parameter.html#id463318"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../parameter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../conversion_not_found_exception.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generic_parameter.html#id465584"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../parameter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.generic_parameter.basic_converter"></a><div class="titlepage"></div>
@@ -34,24 +34,24 @@
 <span class="bold"><strong>class</strong></span> basic_converter {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- ~basic_converter();
+ ~basic_converter();
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id463654"></a><h2>Description</h2>
+<a name="id465919"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id463660"></a><h3>
+<a name="id465924"></a><h3>
 <a name="boost.reflections.generic_parameter.basic_converterconstruct-copy-destruct"></a><code class="computeroutput">basic_converter</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id293799-bb"></a>~basic_converter();</pre></li></ol></div>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id295914-bb"></a>~basic_converter();</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id463701"></a><h3>
-<a name="id293779-bb"></a><code class="computeroutput">basic_converter</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293782-bb"></a>convert(<span class="bold"><strong>void</strong></span> * src, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
+<a name="id465965"></a><h3>
+<a name="id295894-bb"></a><code class="computeroutput">basic_converter</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id295897-bb"></a>convert(<span class="bold"><strong>void</strong></span> * src, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
 </div>
 </div>
 </div>
@@ -65,7 +65,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../conversion_not_found_exception.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generic_parameter.html#id463318"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../parameter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../conversion_not_found_exception.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generic_parameter.html#id465584"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../parameter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/instance.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/instance.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/instance.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -33,23 +33,23 @@
 <span class="bold"><strong>class</strong></span> instance {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- instance(<span class="bold"><strong>void</strong></span> * = 0, <span class="bold"><strong>void</strong></span>(*)(<span class="bold"><strong>void</strong></span> *val) = 0);
- instance(<span class="bold"><strong>const</strong></span> instance &amp;);
- instance&amp; operator=(instance &amp;);
- ~instance();
+ instance(<span class="bold"><strong>void</strong></span> * = 0, <span class="bold"><strong>void</strong></span>(*)(<span class="bold"><strong>void</strong></span> *val) = 0);
+ instance(<span class="bold"><strong>const</strong></span> instance &amp;);
+ instance&amp; operator=(instance &amp;);
+ ~instance();
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id462614"></a><h2>Description</h2>
+<a name="id464885"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id462620"></a><h3>
+<a name="id464890"></a><h3>
 <a name="boost.reflections.instanceconstruct-copy-destruct"></a><code class="computeroutput">instance</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><a name="id293714-bb"></a>instance(<span class="bold"><strong>void</strong></span> * val = 0, <span class="bold"><strong>void</strong></span>(*)(<span class="bold"><strong>void</strong></span> *val) destructor = 0);</pre></li>
-<li><pre class="literallayout"><a name="id293731-bb"></a>instance(<span class="bold"><strong>const</strong></span> instance &amp; first);</pre></li>
-<li><pre class="literallayout">instance&amp; <a name="id293737-bb"></a><span class="bold"><strong>operator</strong></span>=(instance &amp; first);</pre></li>
-<li><pre class="literallayout"><a name="id293730-bb"></a>~instance();</pre></li>
+<li><pre class="literallayout"><a name="id295830-bb"></a>instance(<span class="bold"><strong>void</strong></span> * val = 0, <span class="bold"><strong>void</strong></span>(*)(<span class="bold"><strong>void</strong></span> *val) destructor = 0);</pre></li>
+<li><pre class="literallayout"><a name="id295846-bb"></a>instance(<span class="bold"><strong>const</strong></span> instance &amp; first);</pre></li>
+<li><pre class="literallayout">instance&amp; <a name="id295853-bb"></a><span class="bold"><strong>operator</strong></span>=(instance &amp; first);</pre></li>
+<li><pre class="literallayout"><a name="id295845-bb"></a>~instance();</pre></li>
 </ol></div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/parameter.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/parameter.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/parameter.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -38,8 +38,8 @@
   {
   <span class="bold"><strong>public</strong></span>:
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
   };
   <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt;
   <span class="bold"><strong>class</strong></span> specialized_converter :
@@ -47,36 +47,36 @@
   {
   <span class="bold"><strong>public</strong></span>:
     <span class="emphasis"><em>// construct/copy/destruct</em></span>
- specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *));
+ specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *));
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
   };
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- parameter(T);
+ parameter(T);
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type">TypeInfo</span> type() <span class="bold"><strong>const</strong></span>;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> converts_to_with_func(<span class="bold"><strong>void</strong></span>(*)(T *, S *)) ;
- <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> converts_to() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">TypeInfo</span> type() <span class="bold"><strong>const</strong></span>;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> converts_to_with_func(<span class="bold"><strong>void</strong></span>(*)(T *, S *)) ;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> converts_to() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id464148"></a><h2>Description</h2>
+<a name="id466409"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id464153"></a><h3>
+<a name="id466414"></a><h3>
 <a name="boost.reflections.parameterconstruct-copy-destruct"></a><code class="computeroutput">parameter</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id294006-bb"></a>parameter(T value);</pre></li></ol></div>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id296121-bb"></a>parameter(T value);</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id464194"></a><h3>
-<a name="id293965-bb"></a><code class="computeroutput">parameter</code> public member functions</h3>
+<a name="id466456"></a><h3>
+<a name="id296080-bb"></a><code class="computeroutput">parameter</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><span class="type">TypeInfo</span> <a name="id293968-bb"></a>type() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">TypeInfo</span> <a name="id296083-bb"></a>type() <span class="bold"><strong>const</strong></span>;</pre></li>
 <li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt;
- <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293974-bb"></a>converts_to_with_func(<span class="bold"><strong>void</strong></span>(*)(T *, S *) convert_func) ;</pre></li>
-<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293993-bb"></a>converts_to() ;</pre></li>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id296090-bb"></a>converts_to_with_func(<span class="bold"><strong>void</strong></span>(*)(T *, S *) convert_func) ;</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> S&gt; <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id296108-bb"></a>converts_to() ;</pre></li>
 </ol></div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/parameter/default_converter.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/parameter/default_converter.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/parameter/default_converter.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -5,7 +5,7 @@
 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../../index.html" title="Chapter 1. Boost.Extension">
-<link rel="up" href="../parameter.html#id464148" title="Description">
+<link rel="up" href="../parameter.html#id466409" title="Description">
 <link rel="prev" href="../generic_parameter/basic_converter.html" title="Class basic_converter">
 <link rel="next" href="specialized_converter.html" title="Class template specialized_converter">
 </head>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../generic_parameter/basic_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id464148"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="specialized_converter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../generic_parameter/basic_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id466409"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="specialized_converter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.parameter.default_converter"></a><div class="titlepage"></div>
@@ -36,15 +36,15 @@
 {
 <span class="bold"><strong>public</strong></span>:
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id464421"></a><h2>Description</h2>
+<a name="id466683"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id464426"></a><h3>
-<a name="id293904-bb"></a><code class="computeroutput">default_converter</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293907-bb"></a>convert(<span class="bold"><strong>void</strong></span> * val, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
+<a name="id466688"></a><h3>
+<a name="id296020-bb"></a><code class="computeroutput">default_converter</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id296022-bb"></a>convert(<span class="bold"><strong>void</strong></span> * val, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
 </div>
 </div>
 </div>
@@ -58,7 +58,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../generic_parameter/basic_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id464148"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="specialized_converter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../generic_parameter/basic_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id466409"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="specialized_converter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/parameter/specialized_converter.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/parameter/specialized_converter.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/parameter/specialized_converter.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -5,7 +5,7 @@
 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../../index.html" title="Chapter 1. Boost.Extension">
-<link rel="up" href="../parameter.html#id464148" title="Description">
+<link rel="up" href="../parameter.html#id466409" title="Description">
 <link rel="prev" href="default_converter.html" title="Class template default_converter">
 <link rel="next" href="../basic_reflection.html" title="Class template basic_reflection">
 </head>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="default_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id464148"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_reflection.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="default_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id466409"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_reflection.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="refentry" lang="en">
 <a name="boost.reflections.parameter.specialized_converter"></a><div class="titlepage"></div>
@@ -36,24 +36,24 @@
 {
 <span class="bold"><strong>public</strong></span>:
   <span class="emphasis"><em>// construct/copy/destruct</em></span>
- specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *));
+ specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *));
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>void</strong></span></span> convert(<span class="bold"><strong>void</strong></span> *, <span class="bold"><strong>void</strong></span> *) <span class="bold"><strong>const</strong></span>;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id464622"></a><h2>Description</h2>
+<a name="id466884"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id464627"></a><h3>
+<a name="id466889"></a><h3>
 <a name="boost.reflections.parameter.specialized_converterconstruct-copy-destruct"></a><code class="computeroutput">specialized_converter</code>
         public
        construct/copy/destruct</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id293958-bb"></a>specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *) convert_function);</pre></li></ol></div>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id296074-bb"></a>specialized_converter(<span class="bold"><strong>void</strong></span>(*)(T *, S *) convert_function);</pre></li></ol></div>
 </div>
 <div class="refsect2" lang="en">
-<a name="id464676"></a><h3>
-<a name="id293938-bb"></a><code class="computeroutput">specialized_converter</code> public member functions</h3>
-<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id293941-bb"></a>convert(<span class="bold"><strong>void</strong></span> * val, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
+<a name="id466937"></a><h3>
+<a name="id296054-bb"></a><code class="computeroutput">specialized_converter</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id296057-bb"></a>convert(<span class="bold"><strong>void</strong></span> * val, <span class="bold"><strong>void</strong></span> * dest) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
 </div>
 </div>
 </div>
@@ -67,7 +67,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="default_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id464148"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_reflection.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="default_converter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameter.html#id466409"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basic_reflection.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost/reflections/parameter_map.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/parameter_map.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/parameter_map.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -32,7 +32,7 @@
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
 <span class="bold"><strong>typedef</strong></span> basic_parameter_map parameter_map;</pre></div>
 <div class="refsect1" lang="en">
-<a name="id459807"></a><h2>Description</h2>
+<a name="id462075"></a><h2>Description</h2>
 <p>The most common version of basic_parameter_map. </p>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost/reflections/parameter_unavailable_exception.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost/reflections/parameter_unavailable_exception.html (original)
+++ sandbox/libs/extension/doc/html/boost/reflections/parameter_unavailable_exception.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -33,18 +33,18 @@
 <span class="bold"><strong>class</strong></span> parameter_unavailable_exception {
 <span class="bold"><strong>public</strong></span>:
 
- <span class="emphasis"><em>// public member functions</em></span>
- <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
- <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
+ <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> what() ;
 };</pre></div>
 <div class="refsect1" lang="en">
-<a name="id458908"></a><h2>Description</h2>
+<a name="id461177"></a><h2>Description</h2>
 <div class="refsect2" lang="en">
-<a name="id458913"></a><h3>
-<a name="id292834-bb"></a><code class="computeroutput">parameter_unavailable_exception</code> public member functions</h3>
+<a name="id461182"></a><h3>
+<a name="id294949-bb"></a><code class="computeroutput">parameter_unavailable_exception</code> public member functions</h3>
 <div class="orderedlist"><ol type="1">
-<li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id292837-bb"></a>what() ;</pre></li>
-<li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id292844-bb"></a>what() ;</pre></li>
+<li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id294952-bb"></a>what() ;</pre></li>
+<li><pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> *</span> <a name="id294959-bb"></a>what() ;</pre></li>
 </ol></div>
 </div>
 </div>

Modified: sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_a.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_a.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_a.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -45,7 +45,7 @@
         how this is done.
       </p>
 <a name="boost_extension.appendices.appendix_a.warning"></a><h3>
-<a name="id466257"></a>
+<a name="id468514"></a>
         <a href="appendix_a.html#boost_extension.appendices.appendix_a.warning">Warning</a>
       </h3>
 <p>

Modified: sandbox/libs/extension/doc/html/boost_extension/performance_analysis.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/performance_analysis.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/performance_analysis.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -41,7 +41,7 @@
       Boost) more optimization will be performed.
     </p>
 <a name="boost_extension.performance_analysis.first_comparison"></a><h1>
-<a name="id454716"></a>
+<a name="id456856"></a>
       <a href="performance_analysis.html#boost_extension.performance_analysis.first_comparison">First
       comparison</a>
     </h1>
@@ -74,7 +74,7 @@
       So Boost.Extension is (aprox.) three times slower.
     </p>
 <a name="boost_extension.performance_analysis.multiple_calls_and_libraries"></a><h1>
-<a name="id454802"></a>
+<a name="id456943"></a>
       <a href="performance_analysis.html#boost_extension.performance_analysis.multiple_calls_and_libraries">Multiple
       calls and libraries</a>
     </h1>
@@ -124,7 +124,7 @@
       RTTI works across shared libraries.
     </p>
 <a name="boost_extension.performance_analysis.boost__function_overhead"></a><h1>
-<a name="id454809"></a>
+<a name="id456950"></a>
       <a href="performance_analysis.html#boost_extension.performance_analysis.boost__function_overhead">boost::function
       overhead</a>
     </h1>

Modified: sandbox/libs/extension/doc/html/boost_extension/reference.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/reference.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/reference.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -69,11 +69,10 @@
 <a name="header.boost.extension.convenience.hpp"></a>Header &lt;boost/extension/convenience.hpp&gt;</h4></div></div></div>
 <pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
   <span class="bold"><strong>namespace</strong></span> extensions {
- <span class="type"><span class="bold"><strong>bool</strong></span></span> load_single_library(factory_map &amp;, <span class="bold"><strong>const</strong></span> std::string &amp;,
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> load_single_library(factory_map &amp;, <span class="bold"><strong>const</strong></span> std::string &amp;,
                              <span class="bold"><strong>const</strong></span> std::string &amp;);
- <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.extensions.load_single_library_id292336"></a>load_single_library(type_map &amp; current_type_map,
- <span class="bold"><strong>const</strong></span> std::string &amp; library_path,
- <span class="bold"><strong>const</strong></span> std::string &amp; external_function_name);
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.extensions.load_single_library_id294411"></a>load_single_library(type_map &amp; current_type_map,
+ <span class="bold"><strong>const</strong></span> std::string &amp; library_path);
   }
 }</pre>
 </div>
@@ -111,8 +110,8 @@
 <a name="header.boost.extension.functor.hpp"></a>Header &lt;boost/extension/functor.hpp&gt;</h4></div></div></div>
 <pre class="synopsis">
 
-BOOST_PP_ITERATION_LIMITS
-BOOST_PP_FILENAME_1</pre>
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
@@ -165,8 +164,8 @@
 <a name="header.boost.reflection.constructor.hpp"></a>Header &lt;boost/reflection/constructor.hpp&gt;</h4></div></div></div>
 <pre class="synopsis">
 
-BOOST_PP_ITERATION_LIMITS
-BOOST_PP_FILENAME_1</pre>
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
 </div>
 <div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
 <a name="header.boost.reflection.constructor_info.hpp"></a>Header &lt;boost/reflection/constructor_info.hpp&gt;</h4></div></div></div></div>
@@ -199,7 +198,7 @@
 <pre class="synopsis">
 
 <a href="../BOOST_REFLECTION_CONSTRUCT_FUNCTION.html" title="Macro BOOST_REFLECTION_CONSTRUCT_FUNCTION">BOOST_REFLECTION_CONSTRUCT_FUNCTION</a>(Z, N, _)
-BOOST_REFLECTION_CONSTRUCTI_FUNCTION(Z, N, _)</pre>
+BOOST_REFLECTION_CONSTRUCTI_FUNCTION(Z, N, _)</pre>
 <pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
   <span class="bold"><strong>namespace</strong></span> reflections {
      <a href="../boost/reflections/BOOST_REFLECTION_CONSTRUCTI_FUNCTION.html" title="Global BOOST_REFLECTION_CONSTRUCTI_FUNCTION">BOOST_REFLECTION_CONSTRUCTI_FUNCTION</a>;
@@ -222,8 +221,8 @@
 <a name="header.boost.reflection.function.hpp"></a>Header &lt;boost/reflection/function.hpp&gt;</h4></div></div></div>
 <pre class="synopsis">
 
-BOOST_PP_ITERATION_LIMITS
-BOOST_PP_FILENAME_1</pre>
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
 <pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
   <span class="bold"><strong>namespace</strong></span> reflections {
     <span class="bold"><strong>namespace</strong></span> impl {

Modified: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -9,7 +9,7 @@
 <link rel="up" href="../shared_libraries.html" title=" Shared Libraries">
 <link rel="prev" href="shared_library_inefficiencies.html" title="
       Possible Inefficiencies in Shared Libraries">
-<link rel="next" href="../factories.html" title=" Factories">
+<link rel="next" href="../tutorials.html" title="Tutorials">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,7 +22,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="shared_library_inefficiencies.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../shared_libraries.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../factories.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="shared_library_inefficiencies.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../shared_libraries.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../tutorials.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
@@ -62,7 +62,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="shared_library_inefficiencies.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../shared_libraries.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../factories.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="shared_library_inefficiencies.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../shared_libraries.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../tutorials.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost_extension/tutorials.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/tutorials.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/tutorials.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,8 +6,10 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../index.html" title="Chapter 1. Boost.Extension">
-<link rel="prev" href="factories.html" title=" Factories">
-<link rel="next" href="tutorials/tutorial02.html" title=" Tutorial 2">
+<link rel="prev" href="shared_libraries/shared_library_class.html" title="shared_library
+ class">
+<link rel="next" href="tutorials/tutorial02.html" title=" Tutorial 2 - Basic
+ Factories">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,27 +22,26 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="factories.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/tutorial02.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="shared_libraries/shared_library_class.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/tutorial02.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_extension.tutorials"></a>Tutorials</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="tutorials.html#boost_extension.tutorials.tutorial01"> Tutorial 1 - Using
- the <code class="literal"><code class="computeroutput">shared_library</code></code>
- class</a></span></dt>
-<dt><span class="section"> Tutorial 2</span></dt>
-<dt><span class="section"> Tutorial 3</span></dt>
+ the <code class="computeroutput"><span class="identifier">shared_library</span></code> class</a></span></dt>
+<dt><span class="section"><a href="tutorials/tutorial02.html"> Tutorial 2 - Basic
+ Factories</a></span></dt>
+<dt><span class="section"><a href="tutorials/tutorial03.html"> Tutorial 3 - Multiple
+ and Implementation Inheritance</a></span></dt>
 <dt><span class="section"> Tutorial 4</span></dt>
 <dt><span class="section"> Tutorial 5</span></dt>
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_extension.tutorials.tutorial01"></a><a href="tutorials.html#boost_extension.tutorials.tutorial01" title=" Tutorial 1 - Using
- the shared_library
- class"> Tutorial 1 - Using
- the <code class="literal"><code class="computeroutput">shared_library</code></code>
- class</a></h3></div></div></div>
+ the shared_library class"> Tutorial 1 - Using
+ the <code class="computeroutput"><span class="identifier">shared_library</span></code> class</a></h3></div></div></div>
 <p>
         The <code class="literal"><code class="computeroutput">shared_library</code></code>
         class facilitates loading shared libraries and calling functions from them.
@@ -300,31 +301,6 @@
         This will print out "Hello World" four times.
       </p>
 </div>
-<p>
- There are currently five tutorials.
- </p>
-<p>
- The first tutorial is a basic hello world example.
- </p>
-<p>
- The second tutorial is a more complex example involving multiple inheritance,
- virtual inheritance, and inheritance across shared libraries.
- </p>
-<p>
- The third tutorial shows how to register classes with multi parameter constructors.
- </p>
-<p>
- The fourth tutorial is a about multiple library loading, with some strange
- cases like loading the same library many times and loading very similar classes.
- </p>
-<p>
- The fifth tutorial is an advanced example of using the Info template parameter.
- There is a simpler usage of this parameter in the examples/info folder as well.
- </p>
-<p>
- The tutorial code can be found in the examples folder. They all share the same
- Jamfile, but the Jamfile contents are separated out for each tutorial.
- </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
@@ -336,7 +312,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="factories.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/tutorial02.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="shared_libraries/shared_library_class.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/tutorial02.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial02.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial02.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial02.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Tutorial 2</title>
+<title> Tutorial 2 - Basic
+ Factories</title>
 <link rel="stylesheet" href="../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../tutorials.html" title="Tutorials">
 <link rel="prev" href="../tutorials.html" title="Tutorials">
-<link rel="next" href="tutorial03.html" title=" Tutorial 3">
+<link rel="next" href="tutorial03.html" title=" Tutorial 3 - Multiple
+ and Implementation Inheritance">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,141 +26,264 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_extension.tutorials.tutorial02"></a> Tutorial 2</h3></div></div></div>
+<a name="boost_extension.tutorials.tutorial02"></a><a href="tutorial02.html" title=" Tutorial 2 - Basic
+ Factories"> Tutorial 2 - Basic
+ Factories</a></h3></div></div></div>
 <p>
- This tutorial shows more advanced class loading. The example described here
- is contrived, and such a convoluted design is not used as an example of good
- object-oriented program, but as a way to illustrate some of the possibilities
- with this library.
+ The easiest method for creating plugins in C++ is to use factories. Consider
+ the following base class:
       </p>
 <p>
- Let's design a class hierarchy based on the following:
- </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- There is a vehicle class
- </li>
-<li>
- There is a computer class
- </li>
-<li>
- A car is a vehicle
- </li>
-<li>
- A boat is a vehicle
- </li>
-<li>
- A plane is a vehicle
- </li>
-<li>
- A flying_car is a plane and a car
- </li>
-<li>
- A car_of_the_future is a flying_car, a boat, and a computer.
- </li>
-</ul></div>
+
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">animal</span> <span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">animal</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">age</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">age_</span><span class="special">(</span><span class="identifier">age</span><span class="special">)</span> <span class="special">{</span>
+ <span class="special">}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">animal</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span>
+ <span class="special">}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">get_name</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"A generic animal"</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">int</span> <span class="identifier">get_age</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">age_</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="keyword">protected</span><span class="special">:</span>
+ <span class="keyword">int</span> <span class="identifier">age_</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
 <p>
- In addition, we are not going to have any of these classes be interfaces.
- They will each have an implementation in a .cpp file. This will require multiple
- inheritance, as well as virtual inheritance (because otherwise a car_of_the_future
- would consist of three separate vehicle base classes!).
       </p>
 <p>
- In addition, each class will be compiled into a separate shared library.
- This is not necessary, certainly, but will serve to illustrate some of the
- more advanced capabilities of the library, as well as some of the techniques
- necessary in this situation.
+ The goal here is to create a main executable which creates and uses instances
+ of the <code class="computeroutput"><span class="identifier">animal</span></code> class. A shared
+ library will then be created which includes classes derived from the <code class="computeroutput"><span class="identifier">animal</span></code> class, which the main executable
+ will also be able to load and use as <code class="computeroutput"><span class="identifier">animal</span></code>s.
       </p>
 <p>
- To begin with, let's look at the Jamfile:
+ The main executable will use a number of Extension and other Boost headers:
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="identifier">import</span> <span class="identifier">type</span> <span class="special">:</span> <span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">suffix</span> <span class="special">;</span>
-<span class="identifier">import</span> <span class="identifier">type</span> <span class="special">:</span> <span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">prefix</span> <span class="special">;</span>
-<span class="identifier">type</span><span class="special">.</span><span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">suffix</span> <span class="identifier">SHARED_LIB</span> <span class="special">:</span> <span class="special">:</span> <span class="identifier">extension</span> <span class="special">;</span>
-<span class="identifier">type</span><span class="special">.</span><span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">prefix</span> <span class="identifier">SHARED_LIB</span> <span class="special">:</span> <span class="special">:</span> <span class="identifier">lib</span> <span class="special">;</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">map</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">factory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">shared_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">type_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">scoped_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
       </p>
 <p>
- First we must rename the generated libraries (this is required for cross-platform
- use - but the prefix and suffix are arbitrary).
+ It will also use the <code class="computeroutput"><span class="identifier">animal</span></code>
+ header, which will also be used by the shared library:
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="identifier">lib</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">vehicle</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">Car</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">car</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="string">"animal.hpp"</span>
 </pre>
 <p>
       </p>
 <p>
- Notice here that the Car library is linked to the Vehicle library - this
- is necessary because the Car class needs the implementation of the Vehicle
- class. This is unrelated to the Boost.Extension library, but just a standard
- requirement when inheriting from shared library classes. The same will be
- done with the other shared libraries.
+ The main function is similar to that from <a href="../../">Tutorial
+ 1</a>.
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="identifier">lib</span> <span class="identifier">Plane</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">plane</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">Boat</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">boat</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">Computer</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">computer</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">FlyingCar</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">flying_car</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Plane</span> <span class="identifier">Car</span> <span class="identifier">Vehicle</span>
- <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">CarOfTheFuture</span> <span class="special">:</span>
- <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">car_of_the_future</span><span class="special">.</span><span class="identifier">cpp</span>
- <span class="identifier">Plane</span> <span class="identifier">Car</span> <span class="identifier">Vehicle</span>
- <span class="identifier">FlyingCar</span> <span class="identifier">Computer</span> <span class="identifier">Boat</span>
- <span class="special">:</span>
- <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span>
-<span class="special">;</span>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">library_path</span> <span class="special">=</span> <span class="string">"libtutorial_2.extension"</span><span class="special">;</span>
+
+ <span class="comment">// Create shared_library object with the relative or absolute
+</span> <span class="comment">// path to the shared library.
+</span> <span class="identifier">shared_library</span> <span class="identifier">lib</span><span class="special">(</span><span class="identifier">library_path</span><span class="special">);</span>
 
-<span class="identifier">install</span> <span class="special">../</span><span class="identifier">bin</span> <span class="special">:</span>
- <span class="identifier">HelloWorld</span> <span class="identifier">HelloWorldLib</span> <span class="identifier">Vehicle</span> <span class="identifier">Boat</span> <span class="identifier">FlyingCar</span>
- <span class="identifier">CarOfTheFuture</span> <span class="identifier">MultipleInheritance</span>
- <span class="special">:</span>
- <span class="special">;</span>
+ <span class="comment">// Attempt to open the shared library.
+</span> <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">lib</span><span class="special">.</span><span class="identifier">open</span><span class="special">())</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special">&lt;&lt;</span> <span class="string">"Library failed to open: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">library_path</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="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</span>
 </pre>
 <p>
       </p>
 <p>
- Refer to the examples/multiple_inheritance folder for the source code of
- these classes. Only the most complex will be described here - the rest are
- similar.
+ Here though, instead of using the <code class="literal"><code class="computeroutput">shared_library::get</code></code>
+ function, we use the _shared_library<span class="underline">call</span>
+ function. It expects a function with the following signature:
       </p>
 <p>
- On the Windows platform, there are special declarations that are required
- when a dll must use a class that is defined in another dll. For interface
- only classes this is unnecessary, and is not needed on other platforms. The
- macros BOOST_EXTENSION_IMPORT_DECL and BOOST_EXTENSION_EXPORT_DECL can be
- used to insert the proper declaration. This is detailed in the appendix.
+
+</p>
+<pre class="programlisting"><span class="keyword">extern</span> <span class="string">"C"</span> <span class="keyword">void</span> <span class="identifier">boost_extension_exported_type_map_function</span>
+ <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">::</span><span class="identifier">type_map</span><span class="special">&amp;</span> <span class="identifier">types</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ A <code class="literal"><code class="computeroutput">type_map</code></code>
+ is a generic container with items indexed by type - only one item of each
+ type can be contained in it. To retrieve (or add) an integer to it, do the
+ following:
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_FLYING_CAR_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
-<span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_BOAT_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
-<span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_COMPUTER_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
-<span class="preprocessor">#include</span> <span class="string">"flying_car.hpp"</span>
-<span class="preprocessor">#include</span> <span class="string">"boat.hpp"</span>
-<span class="preprocessor">#include</span> <span class="string">"computer.hpp"</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</span><span class="special">&gt;</span>
-<span class="keyword">class</span> <span class="identifier">BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL</span>
- <span class="identifier">car_of_the_future</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">flying_car</span><span class="special">,</span> <span class="keyword">public</span> <span class="identifier">boat</span><span class="special">,</span> <span class="keyword">public</span> <span class="identifier">computer</span>
-<span class="special">{</span>
-<span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">car_of_the_future</span><span class="special">(</span><span class="keyword">void</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="string">"\nCreated a Car of the Future"</span><span class="special">;}</span>
- <span class="special">~</span><span class="identifier">car_of_the_future</span><span class="special">(</span><span class="keyword">void</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="string">"\nDestroyed a Car of the Future"</span><span class="special">;}</span>
- <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">list_capabilities</span><span class="special">(</span><span class="keyword">void</span><span class="special">);</span>
+<pre class="programlisting"><span class="keyword">int</span><span class="special">&amp;</span> <span class="identifier">my_int</span><span class="special">(</span><span class="identifier">my_type_map</span><span class="special">.</span><span class="identifier">get</span><span class="special">());</span>
+</pre>
+<p>
+ </p>
+<p>
+ For the rationale of the <code class="literal"><code class="computeroutput">type_map</code></code>
+ class, see the discussion on type safety.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="comment">// Use the shared_library::call to automatically call an
+</span><span class="comment">// Extension-specific function in the shared library,
+</span><span class="comment">// which takes a type_map.
+</span><span class="identifier">type_map</span> <span class="identifier">types</span><span class="special">;</span>
+<span class="keyword">if</span> <span class="special">(!</span><span class="identifier">lib</span><span class="special">.</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">types</span><span class="special">))</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special">&lt;&lt;</span> <span class="string">"Function not found!"</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="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Now, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code> of factories, indexed by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+ is retrieved from the <code class="literal"><code class="computeroutput">type_map</code></code>
+ that was sent to the shared library.
+ </p>
+<p>
+ The <code class="literal"><code class="computeroutput">factory</code></code>
+ is declared as <code class="computeroutput"><span class="identifier">factory</span><span class="special">&lt;</span><span class="identifier">animal</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span></code> meaning
+ it returns pointers to instances of the <code class="computeroutput"><span class="identifier">animal</span></code>
+ class, and that it is used for constructors taking integer arguments.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="comment">// Retrieve a map of all animal factories taking an int and indexed
+</span><span class="comment">// by a string from the type_map.
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">animal</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;&amp;</span> <span class="identifier">factories</span><span class="special">(</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">());</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">factories</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special">&lt;&lt;</span> <span class="string">"Animals not found!"</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="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Now, iterate through the factory, creating each available <code class="computeroutput"><span class="identifier">animal</span></code>.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"> <span class="comment">// Create each animal.
+</span> <span class="keyword">int</span> <span class="identifier">age</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">animal</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">iterator</span> <span class="identifier">it</span>
+ <span class="special">=</span> <span class="identifier">factories</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">factories</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span> <span class="special">++</span><span class="identifier">it</span><span class="special">)</span> <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">age</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="string">"Creating an animal using factory: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">first</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="identifier">boost</span><span class="special">::</span><span class="identifier">scoped_ptr</span><span class="special">&lt;</span><span class="identifier">animal</span><span class="special">&gt;</span> <span class="identifier">current_animal</span><span class="special">(</span><span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">(</span><span class="identifier">age</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="string">"Created an animal: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">current_animal</span><span class="special">-&gt;</span><span class="identifier">get_name</span><span class="special">()</span>
+ <span class="special">&lt;&lt;</span> <span class="string">" Age: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">current_animal</span><span class="special">-&gt;</span><span class="identifier">get_age</span><span class="special">()</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>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Now, the shared library will define a number of animals. It will use the
+ following headers:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">map</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">extension</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">factory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">type_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="string">"animal.hpp"</span>
+</pre>
+<p>
+ </p>
+<p>
+ The following animals will be exported:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">puma</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">animal</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">puma</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">age</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">animal</span><span class="special">(</span><span class="identifier">age</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">get_name</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"puma"</span><span class="special">;</span>
+ <span class="special">}</span>
 <span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">leopard</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">animal</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">leopard</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">age</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">animal</span><span class="special">(</span><span class="identifier">age</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">get_name</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"leopard"</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">wildcat</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">animal</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">wildcat</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">age</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">animal</span><span class="special">(</span><span class="identifier">age</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">get_name</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"wildcat"</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">cougar</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">animal</span> <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">cougar</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">age</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">animal</span><span class="special">(</span><span class="identifier">age</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">get_name</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"cougar"</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">BOOST_EXTENSION_TYPE_MAP_FUNCTION</span></code>
+ declaration can be used in place of a function declaration to automatically
+ insert the function definition referred to above, that takes a <code class="literal"><code class="computeroutput">type_map</code></code>. See <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">extension</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ for more details.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_EXTENSION_TYPE_MAP_FUNCTION</span> <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">animal</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;&amp;</span>
+ <span class="identifier">animal_factories</span><span class="special">(</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">());</span>
+ <span class="identifier">animal_factories</span><span class="special">[</span><span class="string">"Puma factory"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">puma</span><span class="special">&gt;();</span>
+ <span class="identifier">animal_factories</span><span class="special">[</span><span class="string">"Leopard factory"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">leopard</span><span class="special">&gt;();</span>
+ <span class="identifier">animal_factories</span><span class="special">[</span><span class="string">"Wildcat factory"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">wildcat</span><span class="special">&gt;();</span>
+ <span class="identifier">animal_factories</span><span class="special">[</span><span class="string">"Cougar factory"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">cougar</span><span class="special">&gt;();</span>
+<span class="special">}</span>
 </pre>
 <p>
       </p>
+<p>
+ Now, compile the shared library and main executable. Then run the main executable
+ in the directory with the compiled library. If all is successful, a message
+ will be printed out for each animal.
+ </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial03.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial03.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial03.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -1,12 +1,14 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Tutorial 3</title>
+<title> Tutorial 3 - Multiple
+ and Implementation Inheritance</title>
 <link rel="stylesheet" href="../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../tutorials.html" title="Tutorials">
-<link rel="prev" href="tutorial02.html" title=" Tutorial 2">
+<link rel="prev" href="tutorial02.html" title=" Tutorial 2 - Basic
+ Factories">
 <link rel="next" href="tutorial04.html" title=" Tutorial 4">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -24,151 +26,231 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_extension.tutorials.tutorial03"></a> Tutorial 3</h3></div></div></div>
+<a name="boost_extension.tutorials.tutorial03"></a><a href="tutorial03.html" title=" Tutorial 3 - Multiple
+ and Implementation Inheritance"> Tutorial 3 - Multiple
+ and Implementation Inheritance</a></h3></div></div></div>
 <p>
- This tutorial shows how to register and instantiate classes that have multi-argument
- constructors (not default constructors) in Boost.Extension. In the example
- that we will describe in this tutorial (examples/parameters) we create a
- dummy class with a constructor that have six arguments. We'll register this
- class in a factory map and then get it from the main file.
+ This tutorial shows more advanced class loading. The example described here
+ is contrived, and such a convoluted design is not used as an example of good
+ object-oriented program, but as a way to illustrate some of the possibilities
+ with this library.
       </p>
 <p>
- It is expected that before following this tutorial you have gone trough the
- first tutorial at least, and you are familiar with the basic use of Boost.Extension.
+ Most complications with this type of factory usage only occur on Windows,
+ or with less popular compiler options. Refer to <a href="../appendices/appendix_a.html" title=" Appendix A -
+ Windows Export and Import Declarations">Appendix
+ A</a>.
       </p>
 <p>
- Let's start defining our class. Its constructor receives six parameters (we
- chose that number because it's the default argument limit of the library),
- each one of a different type including a class defined in the interface (class
- A) and a smart pointer to this class. It shows via stdout the received parameters
- at construction.
+ Let's design a class hierarchy based on the following:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ There is a vehicle class
+ </li>
+<li>
+ There is a computer class
+ </li>
+<li>
+ A car is a vehicle
+ </li>
+<li>
+ A boat is a vehicle
+ </li>
+<li>
+ A plane is a vehicle
+ </li>
+<li>
+ A flying_car is a plane and a car
+ </li>
+<li>
+ A car_of_the_future is a flying_car, a boat, and a computer.
+ </li>
+</ul></div>
+<p>
+ In addition, we are not going to have any of these classes be interfaces.
+ They will each have an implementation in a .cpp file. This will require multiple
+ inheritance, as well as virtual inheritance (because otherwise a car_of_the_future
+ would consist of three separate vehicle base classes!).
+ </p>
+<p>
+ In addition, each class will be compiled into a separate shared library.
+ This is not necessary, certainly, but will serve to illustrate some of the
+ more advanced capabilities of the library, as well as some of the techniques
+ necessary in this situation.
+ </p>
+<p>
+ To begin with, let's look at the Jamfile:
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">six_parameters</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">lots_of_parameters_interface</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">six_parameters</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">A</span> <span class="identifier">a</span><span class="special">,</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="identifier">ptr_a</span><span class="special">)</span>
- <span class="identifier">lots_of_parameters_interface</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">ptr_a</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="string">"Constructor called."</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parameters:"</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tbool: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">b</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tunsigned int: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tchar: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">c</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tstring: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">s</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tA.i: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">i</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\tptr_a-&gt;i: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">ptr_a</span><span class="special">-&gt;</span><span class="identifier">i</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</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>
-
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">six_parameters</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
-<span class="special">};</span>
+<pre class="programlisting"><span class="identifier">import</span> <span class="identifier">type</span> <span class="special">:</span> <span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">suffix</span> <span class="special">;</span>
+<span class="identifier">import</span> <span class="identifier">type</span> <span class="special">:</span> <span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">prefix</span> <span class="special">;</span>
+<span class="identifier">type</span><span class="special">.</span><span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">suffix</span> <span class="identifier">SHARED_LIB</span> <span class="special">:</span> <span class="special">:</span> <span class="identifier">extension</span> <span class="special">;</span>
+<span class="identifier">type</span><span class="special">.</span><span class="identifier">change</span><span class="special">-</span><span class="identifier">generated</span><span class="special">-</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">prefix</span> <span class="identifier">SHARED_LIB</span> <span class="special">:</span> <span class="special">:</span> <span class="identifier">lib</span> <span class="special">;</span>
 </pre>
 <p>
- <br> The interface that we are inheriting is just the bare minimum needed
- to make it compile:
+ </p>
+<p>
+ As usual, first we must rename the generated libraries (this is required
+ for cross-platform use - but the prefix and suffix are arbitrary).
+ </p>
+<p>
+ Next, some special options are needed for certain compilers, to make sure
+ that the shared libraries are found correctly. This is only needed for this
+ example because we have shared libraries that are linked by the linker after
+ compilation to other shared libraries, rather than loaded by the shared_library
+ class at runtime. Library paths and includes need to be set as follows:
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">A</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">A</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">i</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{}</span>
- <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
-<span class="special">};</span>
+<pre class="programlisting"><span class="identifier">local</span> <span class="identifier">BOOST_ROOT</span> <span class="special">=</span> <span class="special">[</span> <span class="identifier">os</span><span class="special">.</span><span class="identifier">environ</span> <span class="identifier">BOOST_ROOT</span> <span class="special">]</span> <span class="special">;</span>
+<span class="identifier">project</span>
+ <span class="special">:</span> <span class="identifier">requirements</span>
+ <span class="special">&lt;</span><span class="identifier">include</span><span class="special">&gt;../../../</span>
+ <span class="special">&lt;</span><span class="identifier">include</span><span class="special">&gt;</span>#<span class="special">(</span><span class="identifier">BOOST_ROOT</span><span class="special">)</span>
+ <span class="special">&lt;</span><span class="identifier">toolset</span><span class="special">&gt;</span><span class="identifier">gcc</span><span class="special">:&lt;</span><span class="identifier">find</span><span class="special">-</span><span class="identifier">shared</span><span class="special">-</span><span class="identifier">library</span><span class="special">&gt;</span><span class="identifier">dl</span>
+ <span class="special">&lt;</span><span class="identifier">toolset</span><span class="special">&gt;</span><span class="identifier">gcc</span><span class="special">:&lt;</span><span class="identifier">linkflags</span><span class="special">&gt;</span><span class="string">"-Wl,-rpath,'$ORIGIN'"</span>
+ <span class="special">&lt;</span><span class="identifier">toolset</span><span class="special">&gt;</span><span class="identifier">darwin</span><span class="special">:&lt;</span><span class="identifier">define</span><span class="special">&gt;</span><span class="identifier">DYLD_LIBRARY_PATH</span><span class="special">=./</span>
+ <span class="special">:</span>
+ <span class="special">;</span>
 
+</pre>
+<p>
+ </p>
+<p>
+ The rules for building the first two libraries are the same as those from
+ earlier tutorials.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">lib</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">vehicle</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">Car</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">car</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ Notice here that the Car library is linked to the Vehicle library - this
+ is necessary because the Car class needs the implementation of the Vehicle
+ class. This is not specific to the Boost.Extension library, but just a standard
+ requirement when inheriting from shared library classes. The same will be
+ done with the other shared libraries.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">lib</span> <span class="identifier">Plane</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">plane</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">Boat</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">boat</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Vehicle</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">Computer</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">computer</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">FlyingCar</span> <span class="special">:</span> <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">flying_car</span><span class="special">.</span><span class="identifier">cpp</span> <span class="identifier">Plane</span> <span class="identifier">Car</span> <span class="identifier">Vehicle</span>
+ <span class="special">:</span> <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">CarOfTheFuture</span> <span class="special">:</span>
+ <span class="identifier">multiple_inheritance</span><span class="special">/</span><span class="identifier">car_of_the_future</span><span class="special">.</span><span class="identifier">cpp</span>
+ <span class="identifier">Plane</span> <span class="identifier">Car</span> <span class="identifier">Vehicle</span>
+ <span class="identifier">FlyingCar</span> <span class="identifier">Computer</span> <span class="identifier">Boat</span>
+ <span class="special">:</span>
+ <span class="special">&lt;</span><span class="identifier">link</span><span class="special">&gt;</span><span class="identifier">shared</span>
+<span class="special">;</span>
 
-<span class="keyword">class</span> <span class="identifier">lots_of_parameters_interface</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">lots_of_parameters_interface</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">,</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">A</span> <span class="identifier">a</span><span class="special">,</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="identifier">ptr_a</span><span class="special">)</span> <span class="special">{}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">lots_of_parameters_interface</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
-<span class="special">};</span>
+<span class="identifier">install</span> <span class="special">../</span><span class="identifier">bin</span> <span class="special">:</span>
+ <span class="identifier">HelloWorld</span> <span class="identifier">HelloWorldLib</span> <span class="identifier">Vehicle</span> <span class="identifier">Boat</span> <span class="identifier">FlyingCar</span>
+ <span class="identifier">CarOfTheFuture</span> <span class="identifier">MultipleInheritance</span>
+ <span class="special">:</span>
+ <span class="special">;</span>
 </pre>
 <p>
- <br> Having the class defined, we should write the export function to register
- the class in the passed factory map. The point here is that the factory_map::add
- method must be set with the first type as the third argument, and with the
- second type as the fourth argument and so on.
+ </p>
+<p>
+ Refer to the examples/multiple_inheritance folder for the source code of
+ these classes. Only the most complex will be described here - the rest are
+ similar.
+ </p>
+<p>
+ On the Windows platform, there are special declarations that are required
+ when a dll must use a class that is defined in another dll. For interface
+ only classes this is unnecessary, and is not needed on other platforms. The
+ macros BOOST_EXTENSION_IMPORT_DECL and BOOST_EXTENSION_EXPORT_DECL can be
+ used to insert the proper declaration. This is detailed in <a href="../appendices/appendix_a.html" title=" Appendix A -
+ Windows Export and Import Declarations">Appendix
+ A</a>.
+ </p>
+<p>
+ The macros here are defined in such a way that in the <code class="computeroutput"><span class="identifier">car_of_the_future</span></code>
+ class, the classes it depends on from other shared libraries are declared
+ as imports. The BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL must be defined by
+ any source file using this class - as <code class="computeroutput"><span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span></code>
+ by the shared library containing the <code class="computeroutput"><span class="identifier">car_of_the_future</span></code>,
+ and as <code class="computeroutput"><span class="identifier">BOOST_EXTENSION_EXPORT_DECL</span></code>
+ by any shared library or executable linking directly to that shared library.
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="keyword">extern</span> <span class="string">"C"</span> <span class="keyword">void</span> <span class="identifier">BOOST_EXTENSION_EXPORT_DECL</span>
-<span class="identifier">extension_export</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">::</span><span class="identifier">factory_map</span> <span class="special">&amp;</span> <span class="identifier">fm</span><span class="special">)</span>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_FLYING_CAR_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_BOAT_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_EXTENSION_COMPUTER_DECL</span> <span class="identifier">BOOST_EXTENSION_IMPORT_DECL</span>
+<span class="preprocessor">#include</span> <span class="string">"flying_car.hpp"</span>
+<span class="preprocessor">#include</span> <span class="string">"boat.hpp"</span>
+<span class="preprocessor">#include</span> <span class="string">"computer.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL</span>
+ <span class="identifier">car_of_the_future</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">flying_car</span><span class="special">,</span> <span class="keyword">public</span> <span class="identifier">boat</span><span class="special">,</span> <span class="keyword">public</span> <span class="identifier">computer</span>
 <span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">lots_of_parameters_interface</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">,</span>
- <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</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">A</span><span class="special">,</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="special">&gt;()[</span><span class="number">6</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">six_parameters</span><span class="special">&gt;();</span>
-<span class="special">}</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">car_of_the_future</span><span class="special">(</span><span class="keyword">void</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="string">"\nCreated a Car of the Future"</span><span class="special">;}</span>
+ <span class="special">~</span><span class="identifier">car_of_the_future</span><span class="special">(</span><span class="keyword">void</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="string">"\nDestroyed a Car of the Future"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">list_capabilities</span><span class="special">(</span><span class="keyword">void</span><span class="special">);</span>
+<span class="special">};</span>
 </pre>
 <p>
- <br> Finally, let's see how it is used in the main file.
+ </p>
+<p>
+ In the implementation file for the <code class="computeroutput"><span class="identifier">car_of_the_future</span></code>,
+ it is exported as an implementation of each of its base classes.
       </p>
 <p>
         
 </p>
-<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span>
-<span class="special">{</span>
- <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">;</span>
-
- <span class="comment">// Create the factory_map object - it will hold all of the available
-</span> <span class="comment">// constructors. Multiple factory_maps can be constructed.
-</span> <span class="identifier">factory_map</span> <span class="identifier">fm</span><span class="special">;</span>
-
- <span class="comment">// load the shared library with
-</span> <span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libParametersLib.extension"</span><span class="special">,</span> <span class="string">"extension_export"</span><span class="special">);</span>
-
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special">&lt;</span><span class="identifier">lots_of_parameters_interface</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span>
- <span class="keyword">char</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">A</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&amp;</span>
- <span class="identifier">factory_list</span> <span class="special">=</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">lots_of_parameters_interface</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</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">A</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="special">&gt;();</span>
- <span class="keyword">if</span> <span class="special">(</span><span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">!=</span> <span class="number">1</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="string">"Error - the class was not found."</span><span class="special">;</span>
- <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
- <span class="special">}</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">car_of_the_future</span><span class="special">::</span><span class="identifier">list_capabilities</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boat</span><span class="special">::</span><span class="identifier">list_capabilities</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">flying_car</span><span class="special">::</span><span class="identifier">list_capabilities</span><span class="special">()</span> <span class="special">+</span>
+ <span class="identifier">computer</span><span class="special">::</span><span class="identifier">list_capabilities</span><span class="special">()</span> <span class="special">+</span> <span class="string">"\nCosts an arm and a leg"</span><span class="special">;</span>
+<span class="special">}</span>
 
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special">&lt;</span><span class="identifier">lots_of_parameters_interface</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span>
- <span class="keyword">char</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">A</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
- <span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">par</span> <span class="special">=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special">&lt;</span><span class="identifier">lots_of_parameters_interface</span><span class="special">&gt;</span>
- <span class="identifier">par_ptr</span><span class="special">(</span><span class="identifier">par</span><span class="special">-&gt;</span><span class="identifier">create</span><span class="special">(</span><span class="keyword">true</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="char">'c'</span><span class="special">,</span> <span class="string">"test"</span><span class="special">,</span> <span class="identifier">A</span><span class="special">(</span><span class="number">2</span><span class="special">),</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;(</span><span class="keyword">new</span> <span class="identifier">A</span><span class="special">(</span><span class="number">15</span><span class="special">))));</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">::</span><span class="identifier">factory</span><span class="special">;</span>
 
- <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">BOOST_EXTENSION_TYPE_MAP_FUNCTION</span> <span class="special">{</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">vehicle</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a vehicle"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">car</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a car"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">plane</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a plane"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">flying_car</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a flying car"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">boat</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a boat"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">computer</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a computer"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
+ <span class="identifier">types</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</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">factory</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;()</span>
+ <span class="special">[</span><span class="string">"A car of the future exported as a car of the future"</span><span class="special">].</span><span class="identifier">set</span><span class="special">&lt;</span><span class="identifier">car_of_the_future</span><span class="special">&gt;();</span>
 <span class="special">}</span>
 </pre>
 <p>
       </p>
 <p>
- Please note the following details:
- </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- Shared library loading is exactly the same.
- </li>
-<li>
- When we get the factory we should specify the template parameters, as we
- did in the factory_map::add method.
- </li>
-<li>
- When we call the create method we just supply the needed arguments and
- just works!
- </li>
-</ul></div>
-<p>
- <br>
+ The main executable is relatively straightforward, but does introduce a new
+ function: <code class="computeroutput"><span class="identifier">load_single_library</span></code>,
+ which takes a <code class="literal"><code class="computeroutput">type_map</code></code>
+ and the location of the shared library, and loads the library and calls the
+ function declared as <code class="computeroutput"><span class="identifier">BOOST_EXTENSION_TYPE_MAP_FUNCTION</span></code>.
       </p>
 <p>
- It is expected that at this point you can create your own classes with multi-argument
- constructors and use them via Boost.extensions without problems.
+ Now, place all of the compiled libraries and the main executable in a directory
+ together, and run the executable.
       </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial04.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial04.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial04.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,7 +6,8 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
 <link rel="start" href="../../index.html" title="Chapter 1. Boost.Extension">
 <link rel="up" href="../tutorials.html" title="Tutorials">
-<link rel="prev" href="tutorial03.html" title=" Tutorial 3">
+<link rel="prev" href="tutorial03.html" title=" Tutorial 3 - Multiple
+ and Implementation Inheritance">
 <link rel="next" href="tutorial05.html" title=" Tutorial 5">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

Added: sandbox/libs/extension/doc/html/extension/reference.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/extension/reference.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,296 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../boost_extension/appendices.html" title=" Appendices">
+<link rel="prev" href="../boost_extension/appendices.html" title=" Appendices">
+<link rel="next" href="../boost/extensions/adaptable_factory.html" title="Class template adaptable_factory">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost_extension/appendices.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_extension/appendices.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/extensions/adaptable_factory.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="extension.reference"></a>Reference</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/extension/adaptable_factory.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/convenience.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/extension.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/factory_map.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/filesystem.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/functor.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/shared_library.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/type_map.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/adapter.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/common.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/common.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/constructor.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/constructor_info.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/data.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/data_info.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/factory.hpp></span></dt>
+<dt><span class="section">Header <boost/extension/factory.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/function.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/function_info.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/generic_constructor.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/instance.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/parameter.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/parameter_map.hpp></span></dt>
+<dt><span class="section">Header <boost/reflection/reflection.hpp></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.adaptable_factory.hpp"></a>Header &lt;boost/extension/adaptable_factory.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info = std::string,
+ <span class="bold"><strong>typename</strong></span> TypeInfo = default_type_info&gt;
+ <span class="bold"><strong>class</strong></span> adaptable_factory;
+ <span class="bold"><strong>namespace</strong></span> impl {
+ }
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.convenience.hpp"></a>Header &lt;boost/extension/convenience.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> load_single_library(factory_map &amp;, <span class="bold"><strong>const</strong></span> std::string &amp;,
+ <span class="bold"><strong>const</strong></span> std::string &amp;);
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.extensions.load_single_library_id294417"></a>load_single_library(type_map &amp; current_type_map,
+ <span class="bold"><strong>const</strong></span> std::string &amp; library_path);
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.extension.hpp"></a>Header &lt;boost/extension/extension.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_EXTENSION_EXPORT_DECL</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.factory_map.hpp"></a>Header &lt;boost/extension/factory_map.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="bold"><strong>class</strong></span> basic_factory_map;
+ <span class="bold"><strong>typedef</strong></span> basic_factory_map&lt; default_type_info &gt; factory_map;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.filesystem.hpp"></a>Header &lt;boost/extension/filesystem.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="boost.extensions.load_all_libraries"></a>load_all_libraries(factory_map &amp; current_zone,
+ <span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> * directory,
+ <span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> * external_function_name,
+ <span class="bold"><strong>int</strong></span> max_depth = 0);
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.functor.hpp"></a>Header &lt;boost/extension/functor.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.shared_library.hpp"></a>Header &lt;boost/extension/shared_library.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>class</strong></span> shared_library;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.type_map.hpp"></a>Header &lt;boost/extension/type_map.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="bold"><strong>class</strong></span> basic_type_map;
+ <span class="bold"><strong>typedef</strong></span> basic_type_map&lt; default_type_info &gt; type_map;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.adapter.hpp"></a>Header &lt;boost/reflection/adapter.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>class</strong></span> parameter_unavailable_exception;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Info = std::string,
+ <span class="bold"><strong>typename</strong></span> TypeInfo = extensions::default_type_info&gt;
+ <span class="bold"><strong>class</strong></span> basic_parameter_map;
+ <span class="bold"><strong>typedef</strong></span> basic_parameter_map parameter_map;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.common.hpp"></a>Header &lt;boost/reflection/common.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_REFLECTION_MAX_FUNCTOR_PARAMS</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.common.hpp"></a>Header &lt;boost/extension/common.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_EXTENSION_MAX_FUNCTOR_PARAMS</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.constructor.hpp"></a>Header &lt;boost/reflection/constructor.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.constructor_info.hpp"></a>Header &lt;boost/reflection/constructor_info.hpp&gt;</h4></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.data.hpp"></a>Header &lt;boost/reflection/data.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="bold"><strong>class</strong></span> data;
+ <span class="bold"><strong>namespace</strong></span> impl {
+ <span class="bold"><strong>typedef</strong></span> <span class="bold"><strong>void</strong></span> *instance::* <a name="boost.reflections.impl.MemberPtr"></a>MemberPtr;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Object, <span class="bold"><strong>typename</strong></span> Data&gt;
+ <span class="type">Data &amp;</span> <a name="boost.reflections.impl.get_data_from_ptr"></a>get_data_from_ptr(<span class="bold"><strong>void</strong></span> * inst, MemberPtr ptr);
+ }
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.data_info.hpp"></a>Header &lt;boost/reflection/data_info.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="bold"><strong>struct</strong></span> basic_data_info;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.factory.hpp"></a>Header &lt;boost/reflection/factory.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_REFLECTION_CONSTRUCT_FUNCTION(Z, N, _)
+BOOST_REFLECTION_CONSTRUCTI_FUNCTION(Z, N, _)</pre>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ BOOST_REFLECTION_CONSTRUCTI_FUNCTION;
+ <span class="type"></span> <a name="boost.reflections.BOOST_PP_REPEAT"></a>BOOST_PP_REPEAT(BOOST_PP_INC(BOOST_REFLECTION_MAX_FUNCTOR_PARAMS),
+ BOOST_REFLECTION_CONSTRUCT_FUNCTION, _);
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.extension.factory.hpp"></a>Header &lt;boost/extension/factory.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, <span class="bold"><strong>typename</strong></span> Params...&gt; <span class="bold"><strong>class</strong></span> factory;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.function.hpp"></a>Header &lt;boost/reflection/function.hpp&gt;</h4></div></div></div>
+<pre class="synopsis">
+
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>namespace</strong></span> impl {
+ <span class="bold"><strong>typedef</strong></span> <span class="bold"><strong>void</strong></span>(instance::* <a name="boost.reflections.impl.MemberFunctionPtr"></a>MemberFunctionPtr;
+ }
+ }
+}</pre>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.function_info.hpp"></a>Header &lt;boost/reflection/function_info.hpp&gt;</h4></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.generic_constructor.hpp"></a>Header &lt;boost/reflection/generic_constructor.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="bold"><strong>class</strong></span> generic_constructor;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.instance.hpp"></a>Header &lt;boost/reflection/instance.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>class</strong></span> instance;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.parameter.hpp"></a>Header &lt;boost/reflection/parameter.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>class</strong></span> conversion_not_found_exception;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo = extensions::default_type_info&gt;
+ <span class="bold"><strong>class</strong></span> generic_parameter;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, <span class="bold"><strong>typename</strong></span> TypeInfo = extensions::default_type_info&gt;
+ <span class="bold"><strong>class</strong></span> parameter;
+ }
+}</pre>
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.parameter_map.hpp"></a>Header &lt;boost/reflection/parameter_map.hpp&gt;</h4></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.reflection.reflection.hpp"></a>Header &lt;boost/reflection/reflection.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> reflections {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Info = std::string, <span class="bold"><strong>typename</strong></span> ParameterInfo = <span class="bold"><strong>void</strong></span>,
+ <span class="bold"><strong>typename</strong></span> TypeInfo = extensions::default_type_info&gt;
+ <span class="bold"><strong>class</strong></span> basic_reflection;
+
+ <span class="bold"><strong>typedef</strong></span> basic_reflection <a name="boost.reflections.reflection"></a>reflection;
+ }
+}</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost_extension/appendices.html"><img src="../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_extension/appendices.html"><img src="../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/extensions/adaptable_factory.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/convenience/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/convenience/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/convenience.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html" title="Macro BOOST_EXTENSION_MAX_FUNCTOR_PARAMS">
+<link rel="next" href="../../../../boost/extensions/load_single_library.html" title="Function load_single_library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/load_single_library.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.convenience.hpp"></a>Header &lt;boost/extension/convenience.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="type"><span class="bold"><strong>bool</strong></span></span> load_single_library(factory_map &amp;, <span class="bold"><strong>const</strong></span> std::string &amp;,
+ <span class="bold"><strong>const</strong></span> std::string &amp;);
+ }
+}</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/load_single_library.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/extension/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/extension/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/extension.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../boost/extensions/load_single_library.html" title="Function load_single_library">
+<link rel="next" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html" title="Macro BOOST_EXTENSION_EXPORT_DECL">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/load_single_library.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.extension.hpp"></a>Header &lt;boost/extension/extension.hpp&gt;</h3></div></div></div>
+<pre class="synopsis">
+
+BOOST_EXTENSION_EXPORT_DECL</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/load_single_library.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/factory/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/factory/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/factory.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html" title="Macro BOOST_EXTENSION_EXPORT_DECL">
+<link rel="next" href="../../../../boost/extensions/factory.html" title="Class template factory">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/factory.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.factory.hpp"></a>Header &lt;boost/extension/factory.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, <span class="bold"><strong>typename</strong></span> Params...&gt; <span class="bold"><strong>class</strong></span> factory;
+ }
+}</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_EXTENSION_EXPORT_DECL.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/factory.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/factory_map/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/factory_map/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/factory_map.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../boost/extensions/factory.html" title="Class template factory">
+<link rel="next" href="../../../../boost/extensions/basic_factory_map.html" title="Class template basic_factory_map">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/factory.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/basic_factory_map.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.factory_map.hpp"></a>Header &lt;boost/extension/factory_map.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> TypeInfo&gt; <span class="bold"><strong>class</strong></span> basic_factory_map;
+ <span class="bold"><strong>typedef</strong></span> basic_factory_map&lt; default_type_info &gt; factory_map;
+ }
+}</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/factory.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/basic_factory_map.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/filesystem/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/filesystem/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/filesystem.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../boost/extensions/factory_map.html" title="Type definition factory_map">
+<link rel="next" href="../functor/hpp.html" title="Header &lt;boost/extension/functor.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/factory_map.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../functor/hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.filesystem.hpp"></a>Header &lt;boost/extension/filesystem.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="boost.extensions.load_all_libraries"></a>load_all_libraries(factory_map &amp; current_zone,
+ <span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> * directory,
+ <span class="bold"><strong>const</strong></span> <span class="bold"><strong>char</strong></span> * external_function_name,
+ <span class="bold"><strong>int</strong></span> max_depth = 0);
+ }
+}</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../boost/extensions/factory_map.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../functor/hpp.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/functor/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/functor/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/functor.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../filesystem/hpp.html" title="Header &lt;boost/extension/filesystem.hpp&gt;">
+<link rel="next" href="../../../../BOOST_PP_ITERATION_LIMITS.html" title="Macro BOOST_PP_ITERATION_LIMITS">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../filesystem/hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../BOOST_PP_ITERATION_LIMITS.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.functor.hpp"></a>Header &lt;boost/extension/functor.hpp&gt;</h3></div></div></div>
+<pre class="synopsis">
+
+BOOST_PP_ITERATION_LIMITS
+BOOST_PP_FILENAME_1</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../filesystem/hpp.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../BOOST_PP_ITERATION_LIMITS.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/header/boost/extension/shared_library/hpp.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/header/boost/extension/shared_library/hpp.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Header &lt;boost/extension/shared_library.hpp&gt;</title>
+<link rel="stylesheet" href="../../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.2">
+<link rel="start" href="../../../../index.html" title="Chapter 1. Boost.Extension">
+<link rel="up" href="../../../../boost_extension/reference.html" title="Reference">
+<link rel="prev" href="../../../../BOOST_PP_FILENAME_1.html" title="Macro BOOST_PP_FILENAME_1">
+<link rel="next" href="../../../../boost/extensions/shared_library.html" title="Class shared_library">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_PP_FILENAME_1.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/shared_library.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.shared_library.hpp"></a>Header &lt;boost/extension/shared_library.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> extensions {
+ <span class="bold"><strong>class</strong></span> shared_library;
+ }
+}</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 Jeremy Pack<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../../BOOST_PP_FILENAME_1.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../../boost_extension/reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../../boost/extensions/shared_library.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: sandbox/libs/extension/doc/html/index.html
==============================================================================
--- sandbox/libs/extension/doc/html/index.html (original)
+++ sandbox/libs/extension/doc/html/index.html 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -50,14 +50,14 @@
 <dt><span class="section"><a href="boost_extension/shared_libraries/shared_library_class.html">shared_library
       class</a></span></dt>
 </dl></dd>
-<dt><span class="section"> Factories</span></dt>
 <dt><span class="section">Tutorials</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="boost_extension/tutorials.html#boost_extension.tutorials.tutorial01"> Tutorial 1 - Using
- the <code class="literal"><code class="computeroutput">shared_library</code></code>
- class</a></span></dt>
-<dt><span class="section"> Tutorial 2</span></dt>
-<dt><span class="section"> Tutorial 3</span></dt>
+ the <code class="computeroutput"><span class="identifier">shared_library</span></code> class</a></span></dt>
+<dt><span class="section"><a href="boost_extension/tutorials/tutorial02.html"> Tutorial 2 - Basic
+ Factories</a></span></dt>
+<dt><span class="section"><a href="boost_extension/tutorials/tutorial03.html"> Tutorial 3 - Multiple
+ and Implementation Inheritance</a></span></dt>
 <dt><span class="section"> Tutorial 4</span></dt>
 <dt><span class="section"> Tutorial 5</span></dt>
 </dl></dd>
@@ -127,11 +127,25 @@
 <p>
       Tutorials:
     </p>
-<div class="itemizedlist"><ul type="disc"><li>Tutorial 1: The shared_library class</li></ul></div>
+<div class="itemizedlist"><ul type="disc">
+<li><a href="boost_extension/tutorials.html#boost_extension.tutorials.tutorial01" title=" Tutorial 1 - Using
+ the shared_library class">Tutorial 1 - <code class="computeroutput"><span class="identifier">shared_library</span></code> class</a></li>
+<li><a href="boost_extension/tutorials/tutorial02.html" title=" Tutorial 2 - Basic
+ Factories">Tutorial 2 - <code class="computeroutput"><span class="identifier">factory</span></code> class</a></li>
+<li><a href="boost_extension/tutorials/tutorial03.html" title=" Tutorial 3 - Multiple
+ and Implementation Inheritance">Tutorial 3 - Multiple
+ and Implementation Inheritance</a></li>
+</ul></div>
 <p>
       Other Sections:
     </p>
-<div class="itemizedlist"><ul type="disc"><li>Motivation</li></ul></div>
+<div class="itemizedlist"><ul type="disc">
+<li>Motivation</li>
+<li>Shared Libraries</li>
+<li><a href="boost_extension/extension_reflection.html" title=" Boost.Reflection/Boost.Extension
+ Interoperability">Extension/Reflection
+ Interoperability</a></li>
+</ul></div>
 <p>
       The other sections in the documentation should be updated over the next few
       weeks, in preparation for review.

Modified: sandbox/libs/extension/doc/tutorial1.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial1.qbk (original)
+++ sandbox/libs/extension/doc/tutorial1.qbk 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -6,7 +6,7 @@
 [/ See http://www.boost.org/ for latest version. ]
 
 
-[section:tutorial01 Tutorial 1 - Using the _shared_library_ class]
+[section:tutorial01 Tutorial 1 - Using the `shared_library` class]
 
 The _shared_library_ class facilitates loading shared libraries
 and calling functions from them.

Modified: sandbox/libs/extension/doc/tutorial2.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial2.qbk (original)
+++ sandbox/libs/extension/doc/tutorial2.qbk 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -5,117 +5,207 @@
 [/ http://www.boost.org/LICENSE_1_0.txt) ]
 [/ See http://www.boost.org/ for latest version. ]
 
-[section:tutorial02 Tutorial 2]
+[section:tutorial02 Tutorial 2 - Basic Factories]
 
-This tutorial shows more advanced class loading. The example described here is
-contrived, and such a convoluted design is not used as an example of good
-object-oriented program, but as a way to illustrate some of the possibilities
-with this library.
-
-Let's design a class hierarchy based on the following:
+The easiest method for creating plugins in C++ is to use factories.
+Consider the following base class:
 
+``
+class animal {
+public:
+ animal(int age) : age_(age) {
+ }
+ virtual ~animal(void) {
+ }
+ virtual std::string get_name(void) {
+ return "A generic animal";
+ }
+ int get_age(void) {
+ return age_;
+ }
+protected:
+ int age_;
+};
+``
 
-* There is a vehicle class
-* There is a computer class
-* A car is a vehicle
-* A boat is a vehicle
-* A plane is a vehicle
-* A flying_car is a plane and a car
-* A car_of_the_future is a flying_car, a boat, and a computer.
+The goal here is to create a main executable which creates and uses
+instances of the `animal` class. A shared library will then be created
+which includes classes derived from the `animal` class, which the main
+executable will also be able to load and use as `animal`s.
 
+The main executable will use a number of Extension and other Boost headers:
 
-In addition, we are not going to have any of these classes be interfaces. They
-will each have an implementation in a .cpp file. This will require multiple
-inheritance, as well as virtual inheritance (because otherwise a
-car_of_the_future would consist of three separate vehicle base classes!).
+``
 
+#include <iostream>
+#include <map>
 
-In addition, each class will be compiled into a separate shared library. This
-is not necessary, certainly, but will serve to illustrate some of the more
-advanced capabilities of the library, as well as some of the techniques
-necessary in this situation.
+#include <boost/extension/factory.hpp>
+#include <boost/extension/shared_library.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/function.hpp>
+#include <boost/scoped_ptr.hpp>
+``
 
+It will also use the `animal` header, which will also be used by the
+shared library:
 
-To begin with, let's look at the Jamfile:
+``
+#include "animal.hpp"
+``
 
+The main function is similar to that from [link tutorial01 Tutorial 1].
 
 ``
-import type : change-generated-target-suffix ;
-import type : change-generated-target-prefix ;
-type.change-generated-target-suffix SHARED_LIB : : extension ;
-type.change-generated-target-prefix SHARED_LIB : : lib ;
-``
+int main() {
+ using namespace boost::extensions;
+ std::string library_path = "libtutorial_2.extension";
 
+ // Create shared_library object with the relative or absolute
+ // path to the shared library.
+ shared_library lib(library_path);
 
-First we must rename the generated libraries (this is required for
-cross-platform use - but the prefix and suffix are arbitrary).
+ // Attempt to open the shared library.
+ if (!lib.open()) {
+ std::cerr << "Library failed to open: " << library_path << std::endl;
+ return 1;
+ }
+``
 
+Here though, instead of using the _shared_library_get_ function, we use the
+_shared_library_call_ function. It expects a function with the following signature:
 
 ``
-lib Vehicle : multiple_inheritance/vehicle.cpp : <link>shared ;
-lib Car : multiple_inheritance/car.cpp Vehicle : <link>shared ;
+extern "C" void boost_extension_exported_type_map_function
+ (boost::extensions::type_map& types);
 ``
 
+A _type_map_ is a generic container with items indexed by type - only one
+item of each type can be contained in it. To retrieve (or add) an integer
+to it, do the following:
 
-Notice here that the Car library is linked to the Vehicle library - this is
-necessary because the Car class needs the implementation of the Vehicle class.
-This is unrelated to the Boost.Extension library, but just a standard
-requirement when inheriting from shared library classes. The same will be done
-with the other shared libraries.
+``
+int& my_int(my_type_map.get());
+``
 
+For the rationale of the _type_map_ class, see the discussion on
+[link type_safety type safety].
 
 ``
-lib Plane : multiple_inheritance/plane.cpp Vehicle : <link>shared ;
-lib Boat : multiple_inheritance/boat.cpp Vehicle : <link>shared ;
-lib Computer : multiple_inheritance/computer.cpp : <link>shared ;
-lib FlyingCar : multiple_inheritance/flying_car.cpp Plane Car Vehicle
- : <link>shared ;
-lib CarOfTheFuture :
- multiple_inheritance/car_of_the_future.cpp
- Plane Car Vehicle
- FlyingCar Computer Boat
- :
- <link>shared
-;
 
-install ../bin :
- HelloWorld HelloWorldLib Vehicle Boat FlyingCar
- CarOfTheFuture MultipleInheritance
- :
- ;
+ // Use the shared_library::call to automatically call an
+ // Extension-specific function in the shared library,
+ // which takes a type_map.
+ type_map types;
+ if (!lib.call(types)) {
+ std::cerr << "Function not found!" << std::endl;
+ return 1;
+ }
 ``
 
+Now, a `std::map` of factories, indexed by `std::string` is retrieved from
+the _type_map_ that was sent to the shared library.
 
-Refer to the examples/multiple_inheritance folder for the source code of these
-classes. Only the most complex will be described here - the rest are similar.
+The _factory_ is declared as `factory<animal, int>` meaning it returns pointers
+to instances of the `animal` class, and that it is used for constructors taking
+integer arguments.
 
+``
+ // Retrieve a map of all animal factories taking an int and indexed
+ // by a string from the type_map.
+ std::map<std::string, factory<animal, int> >& factories(types.get());
+ if (factories.empty()) {
+ std::cerr << "Animals not found!" << std::endl;
+ return 1;
+ }
+``
 
-On the Windows platform, there are special declarations that are required when
-a dll must use a class that is defined in another dll. For interface only
-classes this is unnecessary, and is not needed on other platforms. The macros
-BOOST_EXTENSION_IMPORT_DECL and BOOST_EXTENSION_EXPORT_DECL can be used
-to insert the proper declaration. This is detailed in the appendix.
+Now, iterate through the factory, creating each available `animal`.
 
+``
+ // Create each animal.
+ int age = 1;
+ for (std::map<std::string, factory<animal, int> >::iterator it
+ = factories.begin();
+ it != factories.end(); ++it) {
+ ++age;
+ std::cout << "Creating an animal using factory: " << it->first << std::endl;
+ boost::scoped_ptr<animal> current_animal(it->second.create(age));
+ std::cout << "Created an animal: " << current_animal->get_name()
+ << " Age: " << current_animal->get_age() << std::endl;
+ }
+}
+``
+
+Now, the shared library will define a number of animals. It will
+use the following headers:
 
 ``
-#define BOOST_EXTENSION_FLYING_CAR_DECL BOOST_EXTENSION_IMPORT_DECL
-#define BOOST_EXTENSION_BOAT_DECL BOOST_EXTENSION_IMPORT_DECL
-#define BOOST_EXTENSION_COMPUTER_DECL BOOST_EXTENSION_IMPORT_DECL
-#include "flying_car.hpp"
-#include "boat.hpp"
-#include "computer.hpp"
 #include <iostream>
-#include <typeinfo>
-class BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL
- car_of_the_future : public flying_car, public boat, public computer
-{
-public:
- car_of_the_future(void){std::cout << "\nCreated a Car of the Future";}
- ~car_of_the_future(void){std::cout << "\nDestroyed a Car of the Future";}
- virtual std::string list_capabilities(void);
-};
+#include <map>
+
+#include <boost/extension/extension.hpp>
+#include <boost/extension/factory.hpp>
+#include <boost/extension/type_map.hpp>
+
+#include "animal.hpp"
+``
+
+The following animals will be exported:
+
 ``
+class puma : public animal {
+ public:
+ puma(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "puma";
+ }
+};
+
+class leopard : public animal {
+ public:
+ leopard(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "leopard";
+ }
+};
 
+class wildcat : public animal {
+ public:
+ wildcat(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "wildcat";
+ }
+};
+
+class cougar : public animal {
+ public:
+ cougar(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "cougar";
+ }
+};
+``
 
+The `BOOST_EXTENSION_TYPE_MAP_FUNCTION` declaration can be used in place
+of a function declaration to automatically insert the function definition
+referred to above, that takes a _type_map_. See `<boost/extension/extension.hpp>`
+for more details.
+
+``
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ using namespace boost::extensions;
+ std::map<std::string, factory<animal, int> >&
+ animal_factories(types.get());
+ animal_factories["Puma factory"].set<puma>();
+ animal_factories["Leopard factory"].set<leopard>();
+ animal_factories["Wildcat factory"].set<wildcat>();
+ animal_factories["Cougar factory"].set<cougar>();
+}
+``
+
+Now, compile the shared library and main executable. Then run the main executable
+in the directory with the compiled library. If all is successful, a message will
+be printed out for each animal.
 
 [endsect]
\ No newline at end of file

Modified: sandbox/libs/extension/doc/tutorial3.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial3.qbk (original)
+++ sandbox/libs/extension/doc/tutorial3.qbk 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -1,135 +1,189 @@
-[/ Boost.Extension - third tutorial ]
-[/ Copyright 2008 Mariano G. Consoni ]
+[/ Boost.Extension - second tutorial ]
+[/ Copyright 2008 Jeremy Pack ]
 [/ Distributed under 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) ]
 [/ See http://www.boost.org/ for latest version. ]
 
+[section:tutorial03 Tutorial 3 - Multiple and Implementation Inheritance]
 
-[section:tutorial03 Tutorial 3]
+This tutorial shows more advanced class loading. The example described here is
+contrived, and such a convoluted design is not used as an example of good
+object-oriented program, but as a way to illustrate some of the possibilities
+with this library.
 
-This tutorial shows how to register and instantiate classes that have
-multi-argument constructors (not default constructors) in Boost.Extension.
-In the example that we will describe in this tutorial (examples/parameters)
-we create a dummy class with a constructor that have six arguments. We'll
-register this class in a factory map and then get it from the main file.
+Most complications with this type of factory usage only occur on Windows, or with
+less popular compiler options. Refer to
+[link boost_extension.appendices.appendix_a Appendix A].
 
-It is expected that before following this tutorial you have gone trough the
-first tutorial at least, and you are familiar with the basic use of
-Boost.Extension.
+Let's design a class hierarchy based on the following:
 
 
-Let's start defining our class. Its constructor receives six parameters (we
-chose that number because it's the default argument limit of the library),
-each one of a different type including a class defined in the interface
-(class A) and a smart pointer to this class. It shows via stdout the received
-parameters at construction.
+* There is a vehicle class
+* There is a computer class
+* A car is a vehicle
+* A boat is a vehicle
+* A plane is a vehicle
+* A flying_car is a plane and a car
+* A car_of_the_future is a flying_car, a boat, and a computer.
+
+
+In addition, we are not going to have any of these classes be interfaces. They
+will each have an implementation in a .cpp file. This will require multiple
+inheritance, as well as virtual inheritance (because otherwise a
+car_of_the_future would consist of three separate vehicle base classes!).
+
+
+In addition, each class will be compiled into a separate shared library. This
+is not necessary, certainly, but will serve to illustrate some of the more
+advanced capabilities of the library, as well as some of the techniques
+necessary in this situation.
+
+
+To begin with, let's look at the Jamfile:
 
 
 ``
-class six_parameters : public lots_of_parameters_interface
-{
- public:
- six_parameters(bool b, unsigned int i, char c, std::string s, A a,
- boost::shared_ptr<A> ptr_a)
- lots_of_parameters_interface(b, i, c, s, a, ptr_a)
- {
- std::cout << "Constructor called." << std::endl << std::endl;
- std::cout << "Parameters:" << std::endl;
- std::cout << "\tbool: " << b << std::endl;
- std::cout << "\tunsigned int: " << i << std::endl;
- std::cout << "\tchar: " << c << std::endl;
- std::cout << "\tstring: " << s << std::endl;
- std::cout << "\tA.i: " << a.i << std::endl;
- std::cout << "\tptr_a->i: " << ptr_a->i << std::endl;
- std::cout << std::endl;
- }
+import type : change-generated-target-suffix ;
+import type : change-generated-target-prefix ;
+type.change-generated-target-suffix SHARED_LIB : : extension ;
+type.change-generated-target-prefix SHARED_LIB : : lib ;
+``
+
+As usual, first we must rename the generated libraries (this is required for
+cross-platform use - but the prefix and suffix are arbitrary).
+
+Next, some special options are needed for certain compilers, to make sure
+that the shared libraries are found correctly. This is only needed for this
+example because we have shared libraries that are linked by the linker after
+compilation to other shared libraries, rather than loaded by the shared_library
+class at runtime. Library paths and includes need to be set as follows:
 
- virtual ~six_parameters(void) {}
-};
 ``
-\n
-The interface that we are inheriting is just the bare minimum needed to make it
-compile:
+local BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
+project
+ : requirements
+ <include>../../../
+ <include>$(BOOST_ROOT)
+ <toolset>gcc:<find-shared-library>dl
+ <toolset>gcc:<linkflags>"-Wl,-rpath,'$ORIGIN'"
+ <toolset>darwin:<define>DYLD_LIBRARY_PATH=./
+ :
+ ;
 
 ``
-class A
-{
- public:
- A(unsigned int i) : i(i) {}
- int i;
-};
 
+The rules for building the first two libraries are the same
+as those from earlier tutorials.
 
-class lots_of_parameters_interface
-{
- public:
- lots_of_parameters_interface(bool b, unsigned int i, char c,
- std::string s, A a,
- boost::shared_ptr<A> ptr_a) {}
- virtual ~lots_of_parameters_interface(void) {}
-};
 ``
-\n
-Having the class defined, we should write the export function to register the
-class in the passed factory map. The point here is that the factory_map::add
-method must be set with the first type as the third argument, and with the
-second type as the fourth argument and so on.
+lib Vehicle : multiple_inheritance/vehicle.cpp : <link>shared ;
+lib Car : multiple_inheritance/car.cpp Vehicle : <link>shared ;
+``
+
+
+Notice here that the Car library is linked to the Vehicle library - this is
+necessary because the Car class needs the implementation of the Vehicle class.
+This is not specific to the Boost.Extension library, but just a standard
+requirement when inheriting from shared library classes. The same will be done
+with the other shared libraries.
+
 
 ``
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & fm)
-{
- fm.get<lots_of_parameters_interface, int, bool,
- unsigned int, char, std::string, A,
- boost::shared_ptr<A> >()[6].set<six_parameters>();
-}
+lib Plane : multiple_inheritance/plane.cpp Vehicle : <link>shared ;
+lib Boat : multiple_inheritance/boat.cpp Vehicle : <link>shared ;
+lib Computer : multiple_inheritance/computer.cpp : <link>shared ;
+lib FlyingCar : multiple_inheritance/flying_car.cpp Plane Car Vehicle
+ : <link>shared ;
+lib CarOfTheFuture :
+ multiple_inheritance/car_of_the_future.cpp
+ Plane Car Vehicle
+ FlyingCar Computer Boat
+ :
+ <link>shared
+;
+
+install ../bin :
+ HelloWorld HelloWorldLib Vehicle Boat FlyingCar
+ CarOfTheFuture MultipleInheritance
+ :
+ ;
 ``
-\n
-Finally, let's see how it is used in the main file.
+
+
+Refer to the examples/multiple_inheritance folder for the source code of these
+classes. Only the most complex will be described here - the rest are similar.
+
+
+On the Windows platform, there are special declarations that are required when
+a dll must use a class that is defined in another dll. For interface only
+classes this is unnecessary, and is not needed on other platforms. The macros
+BOOST_EXTENSION_IMPORT_DECL and BOOST_EXTENSION_EXPORT_DECL can be used
+to insert the proper declaration. This is detailed in
+[link boost_extension.appendices.appendix_a Appendix A].
+
+The macros here are defined in such a way that in the `car_of_the_future`
+class, the classes it depends on from other shared libraries are
+declared as imports. The BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL must be
+defined by any source file using this class - as `BOOST_EXTENSION_IMPORT_DECL`
+by the shared library containing the `car_of_the_future`, and as
+`BOOST_EXTENSION_EXPORT_DECL` by any shared library or executable linking
+directly to that shared library.
 
 ``
-int main(void)
+#define BOOST_EXTENSION_FLYING_CAR_DECL BOOST_EXTENSION_IMPORT_DECL
+#define BOOST_EXTENSION_BOAT_DECL BOOST_EXTENSION_IMPORT_DECL
+#define BOOST_EXTENSION_COMPUTER_DECL BOOST_EXTENSION_IMPORT_DECL
+#include "flying_car.hpp"
+#include "boat.hpp"
+#include "computer.hpp"
+#include <iostream>
+#include <typeinfo>
+class BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL
+ car_of_the_future : public flying_car, public boat, public computer
 {
- using namespace boost::extensions;
+public:
+ car_of_the_future(void){std::cout << "\nCreated a Car of the Future";}
+ ~car_of_the_future(void){std::cout << "\nDestroyed a Car of the Future";}
+ virtual std::string list_capabilities(void);
+};
+``
 
- // Create the factory_map object - it will hold all of the available
- // constructors. Multiple factory_maps can be constructed.
- factory_map fm;
-
- // load the shared library with
- load_single_library(fm, "libParametersLib.extension", "extension_export");
-
- std::map<int, factory<lots_of_parameters_interface, bool, unsigned int,
- char, std::string, A, boost::shared_ptr<A> > > &
- factory_list =
- fm.get<lots_of_parameters_interface, int, bool, unsigned int, char,
- std::string, A, boost::shared_ptr<A> >();
- if (factory_list.size() != 1) {
- std::cout << "Error - the class was not found.";
- return 1;
- }
-
- std::map<int, factory<lots_of_parameters_interface, bool, unsigned int,
- char, std::string, A, boost::shared_ptr<A> > >
- ::iterator par = factory_list.begin();
- std::auto_ptr<lots_of_parameters_interface>
- par_ptr(par->create(true, 4, 'c', "test", A(2),
- boost::shared_ptr<A>(new A(15))));
+In the implementation file for the `car_of_the_future`, it is exported
+as an implementation of each of its base classes.
 
- return 0;
-}
 ``
+std::string car_of_the_future::list_capabilities() {
+ return boat::list_capabilities() + flying_car::list_capabilities() +
+ computer::list_capabilities() + "\nCosts an arm and a leg";
+}
 
-Please note the following details:
+using boost::extensions::factory;
 
-* Shared library loading is exactly the same.
-* When we get the factory we should specify the template parameters, as we did in the factory_map::add method.
-* When we call the create method we just supply the needed arguments and just works!
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A car of the future exported as a vehicle"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<car> > >()
+ ["A car of the future exported as a car"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<plane> > >()
+ ["A car of the future exported as a plane"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<flying_car> > >()
+ ["A car of the future exported as a flying car"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<boat> > >()
+ ["A car of the future exported as a boat"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<computer> > >()
+ ["A car of the future exported as a computer"].set<car_of_the_future>();
+ types.get<std::map<std::string, factory<car_of_the_future> > >()
+ ["A car of the future exported as a car of the future"].set<car_of_the_future>();
+}
+``
 
-\n
+The main executable is relatively straightforward, but does introduce a new
+function: `load_single_library`, which takes a _type_map_ and the location
+of the shared library, and loads the library and calls the function declared
+as `BOOST_EXTENSION_TYPE_MAP_FUNCTION`.
 
-It is expected that at this point you can create your own classes with
-multi-argument constructors and use them via Boost.extensions without problems.
+Now, place all of the compiled libraries and the main executable in a directory together,
+and run the executable.
 
 [endsect]
\ No newline at end of file

Modified: sandbox/libs/extension/doc/tutorials.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorials.qbk (original)
+++ sandbox/libs/extension/doc/tutorials.qbk 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -12,21 +12,4 @@
 [include tutorial4.qbk]
 [include tutorial5.qbk]
 
-There are currently five tutorials.
-
-The first tutorial is a basic hello world example.
-
-The second tutorial is a more complex example involving multiple inheritance,
-virtual inheritance, and inheritance across shared libraries.
-
-The third tutorial shows how to register classes with multi parameter
-constructors.
-
-The fourth tutorial is a about multiple library loading, with some strange cases
-like loading the same library many times and loading very similar classes.
-
-The fifth tutorial is an advanced example of using the Info template parameter.
-There is a simpler usage of this parameter in the examples/info folder as well.
-
-The tutorial code can be found in the examples folder. They all share the same Jamfile, but the Jamfile contents are separated out for each tutorial.
 [endsect]
\ No newline at end of file

Modified: sandbox/libs/extension/examples/Jamfile.v2
==============================================================================
--- sandbox/libs/extension/examples/Jamfile.v2 (original)
+++ sandbox/libs/extension/examples/Jamfile.v2 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -56,8 +56,12 @@
 lib tutorial_1 : tutorial_1/hello_world.cpp : <link>shared ;
 exe tutorial_1_bin : tutorial_1/main.cpp ;
 
+lib tutorial_2 : tutorial_2/factories_lib.cpp : <link>shared ;
+exe tutorial_2_bin : tutorial_2/factories_main.cpp ;
+
 install ../test/ :
   tutorial_1 tutorial_1_bin
+ tutorial_2 tutorial_2_bin
   Parameters ParametersLib
   MultilanguageWord MultilanguageHelloWorld
   IM IMPlugins

Modified: sandbox/libs/extension/examples/multiple_inheritance/boat.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/boat.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/boat.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -22,7 +22,8 @@
 #include <boost/extension/extension.hpp>
 #define BOOST_EXTENSION_BOAT_DECL BOOST_EXTENSION_EXPORT_DECL
 #include "boat.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 
 
 std::string boat::list_capabilities()
@@ -30,9 +31,11 @@
   return "\nIt floats on water.";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle, std::string>()["A boat exported as a vehicle"].set<boat>();
- z.get<boat, std::string>()["A boat exported as a boat"].set<boat>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A boat exported as a vehicle"].set<boat>();
+ types.get<std::map<std::string, factory<boat> > >()
+ ["A boat exported as a boat"].set<boat>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/car.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/car.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/car.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -25,15 +25,18 @@
 
 
 #include "car.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 std::string car::list_capabilities()
 {
   return "\nIt travels on roads.";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle, std::string>()["A car exported as a vehicle"].set<car>();
- z.get<car, std::string>()["A car exported as a car"].set<car>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A car exported as a vehicle"].set<car>();
+ types.get<std::map<std::string, factory<car> > >()
+ ["A car exported as a car"].set<car>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/car_of_the_future.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/car_of_the_future.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/car_of_the_future.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -23,30 +23,30 @@
 #define BOOST_EXTENSION_CAR_OF_THE_FUTURE_DECL BOOST_EXTENSION_EXPORT_DECL
 
 #include "car_of_the_future.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 #include <string>
 
-std::string car_of_the_future::list_capabilities()
-{
+std::string car_of_the_future::list_capabilities() {
   return boat::list_capabilities() + flying_car::list_capabilities() +
          computer::list_capabilities() + "\nCosts an arm and a leg";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle, std::string>()
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
     ["A car of the future exported as a vehicle"].set<car_of_the_future>();
- z.get<car, std::string>()
+ types.get<std::map<std::string, factory<car> > >()
     ["A car of the future exported as a car"].set<car_of_the_future>();
- z.get<plane, std::string>()
+ types.get<std::map<std::string, factory<plane> > >()
     ["A car of the future exported as a plane"].set<car_of_the_future>();
- z.get<flying_car, std::string>()
+ types.get<std::map<std::string, factory<flying_car> > >()
     ["A car of the future exported as a flying car"].set<car_of_the_future>();
- z.get<boat, std::string>()
+ types.get<std::map<std::string, factory<boat> > >()
     ["A car of the future exported as a boat"].set<car_of_the_future>();
- z.get<computer, std::string>()
+ types.get<std::map<std::string, factory<computer> > >()
     ["A car of the future exported as a computer"].set<car_of_the_future>();
- z.get<car_of_the_future, std::string>()
+ types.get<std::map<std::string, factory<car_of_the_future> > >()
     ["A car of the future exported as a car of the future"].set<car_of_the_future>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/computer.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/computer.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/computer.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -23,17 +23,17 @@
 
 
 #include "computer.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 
 std::string computer::list_capabilities()
 {
   return "\nIt computes.";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<computer,
- std::string>()["\nA computer exported as a computer"]
- .set<computer>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<computer> > >()
+ ["\nA computer exported as a computer"].set<computer>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/flying_car.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/flying_car.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/flying_car.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -25,7 +25,8 @@
 
 
 #include "flying_car.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 
 std::string flying_car::list_capabilities()
 {
@@ -33,14 +34,15 @@
     + "\nIt takes off from your driveway";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle,
- std::string>()["A flying car exported as a vehicle"].set<flying_car>();
- z.get<plane, std::string>()["A flying car exported as a plane"]
- .set<flying_car>();
- z.get<car, std::string>()["A flying car exported as a car"].set<flying_car>();
- z.get<flying_car,
- std::string>()["A flying car exported as a flying car"].set<flying_car>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A flying car exported as a vehicle"].set<flying_car>();
+ types.get<std::map<std::string, factory<plane> > >()
+ ["A flying car exported as a plane"].set<flying_car>();
+ types.get<std::map<std::string, factory<car> > >()
+ ["A flying car exported as a car"].set<flying_car>();
+ types.get<std::map<std::string, factory<flying_car> > >()
+ ["A flying car exported as a flying car"].set<flying_car>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/main_mi.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/main_mi.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/main_mi.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -9,7 +9,7 @@
  * See http://www.boost.org/ for latest version.
  */
 
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
 #include <boost/extension/shared_library.hpp>
 // See the FAQ for info about why the following is necessary
 // here, but usually isn't.
@@ -18,71 +18,67 @@
 #include "vehicle.hpp"
 #include "computer.hpp"
 #include <iostream>
-#include <memory>
+#include <boost/scoped_ptr.hpp>
 #include <boost/extension/convenience.hpp>
-// #include <boost/extension/filesystem.hpp>
 
-
-int main()
-{
+int main() {
   using namespace boost::extensions;
- // Create the factory_map object - it will hold all of the available
- // constructors. Multiple zones can be constructed.
- factory_map twilight;
+ // Create the type_map object - it will hold all of the available
+ // constructors.
+ type_map types;
   // Load the constructors and information into the factory_map.
- load_single_library(twilight, "libVehicle.extension", "extension_export");
- load_single_library(twilight, "libCar.extension", "extension_export");
- load_single_library(twilight, "libComputer.extension", "extension_export");
- load_single_library(twilight, "libBoat.extension", "extension_export");
- load_single_library(twilight, "libFlyingCar.extension", "extension_export");
- load_single_library(twilight, "libCarOfTheFuture.extension",
- "extension_export");
- load_single_library(twilight, "libPlane.extension", "extension_export");
- // load_all_libraries(twilight, "./", "extension_export_word");
+ load_single_library(types, "libVehicle.extension");
+ load_single_library(types, "libCar.extension");
+ load_single_library(types, "libComputer.extension");
+ load_single_library(types, "libBoat.extension");
+ load_single_library(types, "libFlyingCar.extension");
+ load_single_library(types, "libCarOfTheFuture.extension");
+ load_single_library(types, "libPlane.extension");
+
   // Get a reference to the list of constructors.
   // Note that the factories can be copied just fine - meaning that the
- // factory list
- // can be copied from the factory_map object into a different data
- // structure, and the factory_map can be destroyed.
+ // map of factories can be copied from the type_map object into a
+ // different data structure, and the type_map can be destroyed.
+ // Here, we just use the efficient std::map::swap function.
   std::cout << "\n>>>>>>>>>>>>\nComputers:\n>>>>>>>>>>>>>>>>>>>";
- std::map<std::string, factory<computer> > & factory_list =
- twilight.get<computer, std::string>();
- if (factory_list.size() < 1)
+ std::map<std::string, factory<computer> > computers;
+ computers.swap(types.get());
+ if (computers.empty()) {
     std::cout << "Error - no computers were found.";
+ return 1;
+ }
   for (std::map<std::string, factory<computer> >::iterator comp =
- factory_list.begin(); comp != factory_list.end(); ++comp)
- {
- // Using auto_ptr to avoid needing delete. Using smart_ptrs is
+ computers.begin(); comp != computers.end(); ++comp) {
+ // Using scoped_ptr to avoid needing delete. Using smart_ptrs is
     // recommended.
     // Note that this has a zero argument constructor - currently constructors
     // with up to six arguments can be used.
- std::auto_ptr<computer> computer_ptr(comp->second.create());
+ boost::scoped_ptr<computer> computer_ptr(comp->second.create());
     std::cout << "\n--------\nLoaded the class described as: ";
     std::cout << comp->first;
     std::cout << "\n\nIt claims the following capabilities: ";
- std::cout << computer_ptr->list_capabilities() << "\n";
+ std::cout << computer_ptr->list_capabilities() << std::endl;
   }
   std::cout << "\n\n";
-
-
-
- std::cout << "\n>>>>>>>>>>>>\nVehicles:\n>>>>>>>>>>>>>>>>>>>";
- std::map<std::string, factory<vehicle> > & factory_list2 =
- twilight.get<vehicle, std::string>();
- if (factory_list2.size() < 1)
+
+ std::cout << "\n>>>>>>>>>>>>\nVehicles:\n>>>>>>>>>>>>>>>>>>>" << std::endl;
+ std::map<std::string, factory<vehicle> > vehicles;
+ vehicles.swap(types.get());
+ if (vehicles.empty()) {
     std::cout << "Error - no vehicles were found.";
- for (std::map<std::string, factory<vehicle> >::iterator comp =
- factory_list2.begin(); comp != factory_list2.end(); ++comp)
- {
+ return 1;
+ }
+ for (std::map<std::string, factory<vehicle> >::iterator v =
+ vehicles.begin(); v != vehicles.end(); ++v) {
     // Using auto_ptr to avoid needing delete. Using smart_ptrs is
     // recommended.
     // Note that this has a zero argument constructor - currently constructors
     // with up to six arguments can be used.
- std::auto_ptr<vehicle> computer_ptr(comp->second.create());
+ std::auto_ptr<vehicle> vehicle_ptr(v->second.create());
     std::cout << "\n--------\nLoaded the class described as: ";
- std::cout << comp->first;
+ std::cout << v->first;
     std::cout << "\n\nIt claims the following capabilities: ";
- std::cout << computer_ptr->list_capabilities() << "\n";
+ std::cout << vehicle_ptr->list_capabilities() << std::endl;
   }
   std::cout << "\n\n";
   return 0;

Modified: sandbox/libs/extension/examples/multiple_inheritance/plane.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/plane.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/plane.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -23,18 +23,18 @@
 
 
 #include "plane.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 
-std::string plane::list_capabilities()
-{
+std::string plane::list_capabilities() {
   return "\nIt flies in the air.";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle, std::string>()["A plane exported as a vehicle"]
- .set<plane>();
- z.get<plane, std::string>()["A plane exported as a plane"]
- .set<plane>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A plane exported as a vehicle"].set<plane>();
+ types.get<std::map<std::string, factory<plane> > >()
+ ["A plane exported as a plane"].set<plane>();
 }

Modified: sandbox/libs/extension/examples/multiple_inheritance/vehicle.cpp
==============================================================================
--- sandbox/libs/extension/examples/multiple_inheritance/vehicle.cpp (original)
+++ sandbox/libs/extension/examples/multiple_inheritance/vehicle.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -22,16 +22,17 @@
 #define BOOST_EXTENSION_VEHICLE_DECL BOOST_EXTENSION_EXPORT_DECL
 
 #include "vehicle.hpp"
-#include <boost/extension/factory_map.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/extension/factory.hpp>
 
 std::string vehicle::list_capabilities()
 {
   return "\nIt is some sort of vehicle.";
 }
 
-extern "C" void BOOST_EXTENSION_EXPORT_DECL
-extension_export(boost::extensions::factory_map & z)
-{
- z.get<vehicle, std::string>()["A vehicle exported as a vehicle"]
- .set<vehicle>();
+using boost::extensions::factory;
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ types.get<std::map<std::string, factory<vehicle> > >()
+ ["A vehicle exported as a vehicle"].set<vehicle>();
 }

Added: sandbox/libs/extension/examples/tutorial_1/hello_world.cpp
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/examples/tutorial_1/hello_world.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,28 @@
+/*
+ * Boost.Extension / hello world implementations
+ *
+ * (C) Copyright Jeremy Pack 2007-2008
+ * Distributed under 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)
+ *
+ * See http://www.boost.org/ for latest version.
+ */
+
+#include <iostream>
+
+#include <boost/extension/extension.hpp>
+
+// Any exported function or variable must be declared
+// extern "C" to avoid C++ name mangling.
+extern "C"
+// Depending on the compiler and settings,
+// it may be necessary to add a specific export
+// declaration. The BOOST_EXTENSION_EXPORT_DECL
+// adds this if necessary.
+void BOOST_EXTENSION_EXPORT_DECL
+boost_extension_hello_world(int repetitions) {
+ for (int i = 0; i < repetitions; ++i) {
+ std::cout << "Hello World" << std::endl;
+ }
+}

Added: sandbox/libs/extension/examples/tutorial_1/main.cpp
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/examples/tutorial_1/main.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,54 @@
+/*
+ * Boost.Extension / hello world example main
+ *
+ * (C) Copyright Jeremy Pack 2008
+ * Distributed under 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)
+ *
+ * See http://www.boost.org/ for latest version.
+ */
+
+#include <iostream>
+
+#include <boost/extension/shared_library.hpp>
+#include <boost/function.hpp>
+
+int main() {
+ using namespace boost::extensions;
+
+ // In the Jamfile, shared libraries are set to have the same
+ // prefix and extension, even on different operating systems.
+ // This is for convenience in writing cross-platform code, but
+ // is not required. All shared libraries are set to start with
+ // "lib" and end with "extension".
+ std::string library_path = "libtutorial_1.extension";
+
+ // Create shared_library object with the relative or absolute
+ // path to the shared library.
+ shared_library lib(library_path);
+
+ // Attempt to open the shared library.
+ if (!lib.open()) {
+ std::cerr << "Library failed to open: " << library_path << std::endl;
+ return 1;
+ }
+
+ // Retrieve a function from the library, and store it in a Boost.Function
+ // object. It is also possible to use function pointers, but the syntax
+ // for Boost.Function is easier to understand. This retrieves a function
+ // called "boost_extension_hello_world" with a void return type and a single
+ // parameter of type int.
+ boost::function<void (int)>
+ f(lib.get<void, int>("boost_extension_hello_world"));
+
+ // Check that the function was found.
+ if (!f) {
+ std::cerr << "Function not found!" << std::endl;
+ return 1;
+ }
+
+ // Call the function from the shared library with
+ // an integer parameter.
+ f(4);
+}

Added: sandbox/libs/extension/examples/tutorial_2/animal.hpp
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/examples/tutorial_2/animal.hpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,32 @@
+/*
+ * Boost.Extension / factory example (car)
+ *
+ * (C) Copyright Jeremy Pack 2007
+ * Distributed under 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)
+ *
+ * See http://www.boost.org/ for latest version.
+ */
+
+#ifndef BOOST_EXTENSION_ANIMAL_HPP
+#define BOOST_EXTENSION_ANIMAL_HPP
+
+#include <iostream>
+class animal {
+public:
+ animal(int age) : age_(age) {
+ }
+ virtual ~animal(void) {
+ }
+ virtual std::string get_name(void) {
+ return "A generic animal";
+ }
+ int get_age(void) {
+ return age_;
+ }
+protected:
+ int age_;
+};
+
+#endif

Added: sandbox/libs/extension/examples/tutorial_2/factories_lib.cpp
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/examples/tutorial_2/factories_lib.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,62 @@
+/*
+ * Boost.Extension / hello world implementations
+ *
+ * (C) Copyright Jeremy Pack 2007-2008
+ * Distributed under 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)
+ *
+ * See http://www.boost.org/ for latest version.
+ */
+
+#include <iostream>
+#include <map>
+
+#include <boost/extension/extension.hpp>
+#include <boost/extension/factory.hpp>
+#include <boost/extension/type_map.hpp>
+
+#include "animal.hpp"
+
+class puma : public animal {
+ public:
+ puma(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "puma";
+ }
+};
+
+class leopard : public animal {
+ public:
+ leopard(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "leopard";
+ }
+};
+
+class wildcat : public animal {
+ public:
+ wildcat(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "wildcat";
+ }
+};
+
+class cougar : public animal {
+ public:
+ cougar(int age) : animal(age) {}
+ virtual std::string get_name() {
+ return "cougar";
+ }
+};
+
+
+BOOST_EXTENSION_TYPE_MAP_FUNCTION {
+ using namespace boost::extensions;
+ std::map<std::string, factory<animal, int> >&
+ animal_factories(types.get());
+ animal_factories["Puma factory"].set<puma>();
+ animal_factories["Leopard factory"].set<leopard>();
+ animal_factories["Wildcat factory"].set<wildcat>();
+ animal_factories["Cougar factory"].set<cougar>();
+}

Added: sandbox/libs/extension/examples/tutorial_2/factories_main.cpp
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/examples/tutorial_2/factories_main.cpp 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -0,0 +1,71 @@
+/*
+ * Boost.Extension / hello world example main
+ *
+ * (C) Copyright Jeremy Pack 2008
+ * Distributed under 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)
+ *
+ * See http://www.boost.org/ for latest version.
+ */
+
+#include <iostream>
+#include <map>
+
+#include <boost/extension/factory.hpp>
+#include <boost/extension/shared_library.hpp>
+#include <boost/extension/type_map.hpp>
+#include <boost/function.hpp>
+#include <boost/scoped_ptr.hpp>
+
+#include "animal.hpp"
+
+int main() {
+ using namespace boost::extensions;
+
+ // In the Jamfile, shared libraries are set to have the same
+ // prefix and extension, even on different operating systems.
+ // This is for convenience in writing cross-platform code, but
+ // is not required. All shared libraries are set to start with
+ // "lib" and end with "extension".
+ std::string library_path = "libtutorial_2.extension";
+
+ // Create shared_library object with the relative or absolute
+ // path to the shared library.
+ shared_library lib(library_path);
+
+ // Attempt to open the shared library.
+ if (!lib.open()) {
+ std::cerr << "Library failed to open: " << library_path << std::endl;
+ return 1;
+ }
+
+ // Use the shared_library::call to automatically call an
+ // Extension-specific function in the shared library,
+ // which takes a type_map.
+ type_map types;
+ if (!lib.call(types)) {
+ std::cerr << "Function not found!" << std::endl;
+ return 1;
+ }
+
+ // Retrieve a map of all animal factories taking an int and indexed
+ // by a string from the type_map.
+ std::map<std::string, factory<animal, int> >& factories(types.get());
+ if (factories.empty()) {
+ std::cerr << "Animals not found!" << std::endl;
+ return 1;
+ }
+
+ // Create each animal.
+ int age = 1;
+ for (std::map<std::string, factory<animal, int> >::iterator it
+ = factories.begin();
+ it != factories.end(); ++it) {
+ ++age;
+ std::cout << "Creating an animal using factory: " << it->first << std::endl;
+ boost::scoped_ptr<animal> current_animal(it->second.create(age));
+ std::cout << "Created an animal: " << current_animal->get_name()
+ << " Age: " << current_animal->get_age() << std::endl;
+ }
+}

Modified: sandbox/libs/extension/test/Jamfile.v2
==============================================================================
--- sandbox/libs/extension/test/Jamfile.v2 (original)
+++ sandbox/libs/extension/test/Jamfile.v2 2008-07-25 20:02:26 EDT (Fri, 25 Jul 2008)
@@ -38,7 +38,8 @@
   # [ run lib_caching_test.cpp ]
   # [ run versions_test.cpp ]
   [ run parameters_test.cpp ]
- [ run multiple_inheritance_test.cpp ]
+ [ run executables_test.cpp ]
+ # [ run multiple_inheritance_test.cpp ] # redundant
   [ run extension_test.cpp ]
   # [ run counted_factory_test.cpp ]
   # [ run registry_test.cpp ]


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk