Boost logo

Boost-Commit :

From: oryol_at_[hidden]
Date: 2008-07-20 00:40:12


Author: jeremypack
Date: 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
New Revision: 47621
URL: http://svn.boost.org/trac/boost/changeset/47621

Log:
Add new docs html and one header.

Added:
   sandbox/boost/extension/impl/adaptable_factory_set.hpp (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/extension_reflection.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/cheese.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class_description.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_inefficiencies.html (contents, props changed)
   sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_issues.html (contents, props changed)

Added: sandbox/boost/extension/impl/adaptable_factory_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/boost/extension/impl/adaptable_factory_set.hpp 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+// No header guard - this file is intended to be included multiple times.
+
+#define N BOOST_PP_ITERATION()
+template <class Derived
+ BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class Param)>
+void set(BOOST_PP_ENUM_PARAMS(N, Info i)) {
+ parameter_names_.resize(0);
+#define BOOST_EXTENSION_ADD_TO_LIST(z, n, data) \
+parameter_names_.push_back(BOOST_PP_CAT(i, n));
+ BOOST_PP_REPEAT(N, BOOST_EXTENSION_ADD_TO_LIST, );
+#undef BOOST_EXTENSION_ADD_TO_LIST
+ func_ = &impl::create_func
+ <Interface, Derived, Info, TypeInfo
+ BOOST_PP_COMMA_IF(N)
+ BOOST_PP_ENUM_PARAMS(N, Param)>;
+ check_func_ = &impl::check_func
+ <Info, TypeInfo BOOST_PP_COMMA_IF(N)
+ BOOST_PP_ENUM_PARAMS(N, Param)>;
+}
+#undef N
+

Added: sandbox/libs/extension/doc/html/boost_extension/extension_reflection.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/extension_reflection.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,183 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Boost.Reflection/Boost.Extension
+ Interoperability</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="../index.html" title="Chapter 1. Boost.Extension">
+<link rel="prev" href="../boost/extensions/shared_library.html" title="Class shared_library">
+<link rel="next" href="reference.html" title="Reference">
+</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/shared_library.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="reference.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.extension_reflection"></a><a href="extension_reflection.html" title=" Boost.Reflection/Boost.Extension
+ Interoperability"> Boost.Reflection/Boost.Extension
+ Interoperability</a></h2></div></div></div>
+<p>
+ Reflections are designed to work with Boost.Extension, or with shared libraries
+ in general. A simple example is included in examples<span class="emphasis"><em>extension</em></span>.
+ </p>
+<p>
+ Declaring the reflected class itself is similar to the process for doing the
+ same in Boost.Extension.
+ </p>
+<p>
+ Here's how the Jamfile for these libraries is defined. Note that, like in Boost.Extension,
+ one can rename the shared library extensions, for consistency across platforms.
+ Here, we use the .reflection suffix for each shared library.
+</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">reflection</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>
+<span class="identifier">exe</span> <span class="identifier">extension</span><span class="special">-</span><span class="identifier">reflection</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">cpp</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">car_lib</span> <span class="special">:</span> <span class="identifier">extension</span><span class="special">/</span><span class="identifier">car_lib</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>
+</pre>
+<p>
+ </p>
+<p>
+ The code in the shared library is defined in libs/reflection/examples/extension/car_lib.cpp.
+ </p>
+<p>
+ We define two classes to export as reflections. Note that they are not derived
+ from the same base class. If we were using Boost.Extension factories, this
+ would be required.
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">suv</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">suv</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">name</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">car</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_type</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">"It's an SUV."</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">~</span><span class="identifier">suv</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">class</span> <span class="identifier">compact</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">compact</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">name</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">car</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_type</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">"It's a compact."</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">~</span><span class="identifier">compact</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ Just like Boost.Extension, an external function needs to be defined that will
+ be called by the main module.
+ </p>
+<p>
+ extern "C" void BOOST_EXTENSION_EXPORT_DECL extension_export_car(std::map&lt;std::string,
+ reflection&gt; reflection_map) { reflection_map&#8220;<span class="quote">suv"</span>&#8221; .reflect&lt;suv&gt;()
+ .constructor&lt;const char*&gt;() .function(&amp;suv::get_type, "get_type");
+ reflection_map&#8220;<span class="quote">suv"</span>&#8221; .reflect&lt;compact&gt;() .constructor&lt;const
+ char*&gt;() .function(&amp;compact::get_type, "get_type"); }
+ </p>
+<p>
+ This is all that is necessary to export one constructor and one function for
+ each class.
+ </p>
+<p>
+ Now, in extension.cpp, we combine Boost.Extension and Boost.Reflection code
+ to load and use the reflections declared in the shared library.
+ </p>
+<p>
+ Create a mapping of reflections to strings that will be populated inside the
+ shared library.
+</p>
+<pre class="programlisting"><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">reflection</span><span class="special">&gt;</span> <span class="identifier">reflection_map</span><span class="special">;</span>
+</pre>
+<p>
+ Load the shared library using Boost.Extension.
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">extensions</span><span class="special">::</span><span class="identifier">shared_library</span> <span class="identifier">lib</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">BOOST_EXTENSION_DIR_START</span><span class="special">)</span> <span class="special">+</span>
+ <span class="string">"libcar_lib.extension"</span><span class="special">).</span><span class="identifier">c_str</span><span class="special">());</span>
+<span class="identifier">lib</span><span class="special">.</span><span class="identifier">open</span><span class="special">();</span>
+</pre>
+<p>
+ Call an exported function to populate reflection_map.
+</p>
+<pre class="programlisting"><span class="identifier">lib</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="keyword">void</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">reflection</span><span class="special">&gt;</span> <span class="special">&amp;&gt;</span>
+ <span class="special">(</span><span class="string">"extension_export_car"</span><span class="special">)(</span><span class="identifier">reflection_map</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">reflection_map</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">!=</span> <span class="identifier">size_t</span><span class="special">(</span><span class="number">2</span><span class="special">))</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Could not load reflections!"</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>
+ Pull out two reflections that were named "suv" and "compact"
+ respectively.
+</p>
+<pre class="programlisting"><span class="identifier">reflection</span> <span class="special">&amp;</span> <span class="identifier">first_reflection</span> <span class="special">=</span>
+ <span class="identifier">reflection_map</span><span class="special">[</span><span class="string">"suv"</span><span class="special">];</span>
+<span class="identifier">reflection</span> <span class="special">&amp;</span> <span class="identifier">second_reflection</span> <span class="special">=</span>
+ <span class="identifier">reflection_map</span><span class="special">[</span><span class="string">"compact"</span><span class="special">];</span>
+</pre>
+<p>
+ Use the get_constructor function to find a constructor that takes one argument,
+ a const char*.
+</p>
+<pre class="programlisting"><span class="identifier">instance_constructor</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;</span> <span class="identifier">first_constructor</span> <span class="special">=</span>
+ <span class="identifier">first_reflection</span><span class="special">.</span><span class="identifier">get_constructor</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;();</span>
+</pre>
+<p>
+ Use the constructor retrieved to create an instance. Warning! instances should
+ only be used with functions and constructors generated by a single reflection
+ object.
+</p>
+<pre class="programlisting"><span class="identifier">instance</span> <span class="identifier">first_instance</span> <span class="special">=</span>
+ <span class="identifier">first_constructor</span><span class="special">(</span><span class="string">"First Instance"</span><span class="special">);</span>
+</pre>
+<p>
+ Get a function to call on this instance.
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">reflections</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;</span> <span class="identifier">first_function</span> <span class="special">=</span>
+ <span class="identifier">first_reflection</span><span class="special">.</span><span class="identifier">get_function</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;(</span><span class="string">"get_type"</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">"First reflection: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">first_function</span><span class="special">(</span><span class="identifier">first_instance</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>
+ </pre>
+<p>
+ Repeat the steps for the second reflection.
+</p>
+<pre class="programlisting"><span class="identifier">instance_constructor</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;</span> <span class="identifier">second_constructor</span> <span class="special">=</span>
+ <span class="identifier">second_reflection</span><span class="special">.</span><span class="identifier">get_constructor</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;();</span>
+<span class="identifier">instance</span> <span class="identifier">second_instance</span> <span class="special">=</span>
+ <span class="identifier">second_constructor</span><span class="special">(</span><span class="string">"Second Instance"</span><span class="special">);</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">reflections</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;</span> <span class="identifier">second_function</span> <span class="special">=</span>
+ <span class="identifier">second_reflection</span><span class="special">.</span><span class="identifier">get_function</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*&gt;(</span><span class="string">"get_type"</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">"Second reflection: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">second_function</span><span class="special">(</span><span class="identifier">second_instance</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>
+</pre>
+<p>
+ </p>
+</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/shared_library.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="reference.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,41 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title></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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="shared_library_class.html" title="shared_library
+ class">
+<link rel="next" href="../reference.html" title="Reference">
+</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_class.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="../reference.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="boost_extension.shared_libraries."></a>???</h3></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, Mariano G. Consoni<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_class.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="../reference.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/cheese.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/cheese.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Chees Section</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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="shared_library_issues.html" title="
+ Other Issues with Shared Libraries">
+<link rel="next" href="shared_library_inefficiencies.html" title="
+ Possible Inefficiencies in Shared Libraries">
+</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_issues.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="shared_library_inefficiencies.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="boost_extension.shared_libraries.cheese"></a> Chees Section</h3></div></div></div>
+<p>
+ Some cheese.
+ </p>
+</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_issues.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="shared_library_inefficiencies.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>shared_library
+ class</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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="shared_library_inefficiencies.html" title="
+ Possible Inefficiencies in Shared Libraries">
+<link rel="next" href="../reference.html" title="Reference">
+</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_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="../reference.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="boost_extension.shared_libraries.shared_library_class"></a><a href="shared_library_class.html" title="shared_library
+ class">shared_library
+ class</a></h3></div></div></div>
+<p>
+ Provides for automatic loading of named modules, and retrieval of functions
+ in those modules:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">shared_library</span> <span class="identifier">m</span><span class="special">(</span><span class="string">"my_module_name"</span><span class="special">);</span>
+<span class="comment">// Call a function that returns an int and takes a float parameter.
+</span><span class="keyword">int</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;(</span><span class="string">"function_name"</span><span class="special">)(</span><span class="number">5.0f</span><span class="special">);</span>
+<span class="identifier">m</span><span class="special">.</span><span class="identifier">close</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
+ function returns a function pointer that can be wrapped in Boost.Function
+ objects or used by itself.
+ </p>
+<p>
+ Reference: <code class="literal"><code class="computeroutput">shared_library</code></code>
+ </p>
+</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_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="../reference.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class_description.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_class_description.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ shared_library class</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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="shared_library_inefficiencies.html" title="
+ Possible Inefficiencies in Shared Libraries">
+<link rel="next" href="../reference.html" title="Reference">
+</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_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="../reference.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="boost_extension.shared_libraries.shared_library_class_description"></a><a href="shared_library_class_description.html" title="
+ shared_library class">
+ shared_library class</a></h3></div></div></div>
+<p>
+ Provides for automatic loading of named modules, and retrieval of functions
+ in those modules:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">shared_library</span> <span class="identifier">m</span><span class="special">(</span><span class="string">"my_module_name"</span><span class="special">);</span>
+<span class="comment">// Call a function that returns an int and takes a float parameter.
+</span><span class="keyword">int</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;(</span><span class="string">"function_name"</span><span class="special">)(</span><span class="number">5.0f</span><span class="special">);</span>
+<span class="identifier">m</span><span class="special">.</span><span class="identifier">close</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">get</span><span class="special">()</span></code>
+ function returns a function pointer that can be wrapped in Boost.Function
+ objects or used by itself.
+ </p>
+<p>
+ Reference: <code class="literal"><code class="computeroutput">shared_library</code></code>
+ </p>
+</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, Mariano G. Consoni<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_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="../reference.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_inefficiencies.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_inefficiencies.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Possible Inefficiencies in Shared Libraries</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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="cheese.html" title=" Chees Section">
+<link rel="next" href="shared_library_class.html" title="shared_library
+ class">
+</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="cheese.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="shared_library_class.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="boost_extension.shared_libraries.shared_library_inefficiencies"></a><a href="shared_library_inefficiencies.html" title="
+ Possible Inefficiencies in Shared Libraries">
+ Possible Inefficiencies in Shared Libraries</a></h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Position Independent Code:
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Since the shared library could be loaded to any part of the address
+ space, it cannot hard code addresses of its functions and data. This
+ must be resolved when the library is loaded.
+ </li>
+<li>
+ They can take a really long time to load.
+ </li>
+<li>
+ OS's attempt to mitigate this in various ways.
+ </li>
+</ul></div>
+</li>
+<li>
+ Extra levels of indirection in non-virtual function calls.
+ <div class="itemizedlist"><ul type="circle"><li>
+ No inlining across library boundaries.
+ </li></ul></div>
+</li>
+</ul></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="cheese.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="shared_library_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_issues.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries/shared_library_issues.html 2008-07-20 00:40:09 EDT (Sun, 20 Jul 2008)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Other Issues with Shared Libraries</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="../shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="../shared_libraries.html" title=" Shared Libraries">
+<link rel="next" href="cheese.html" title=" Chees Section">
+</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_libraries.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="cheese.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="boost_extension.shared_libraries.shared_library_issues"></a><a href="shared_library_issues.html" title="
+ Other Issues with Shared Libraries">
+ Other Issues with Shared Libraries</a></h3></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Separate symbol tables are required in each shared library.
+ </li>
+<li>
+ RTTI merging: Some compilers do it. Some don't.
+ </li>
+<li>
+ Optimizations are harder because the code must be position independent.
+ </li>
+<li>
+ The following may break binary compatibility between an application and
+ a shared library (among other things):
+ <div class="itemizedlist"><ul type="circle">
+<li>
+ Any part of shared class changes. Variable ordering, public<span class="emphasis"><em>private</em></span>
+ protected, virtual function implementations, add<span class="emphasis"><em>remove variables</em></span>
+ functions etc.
+ </li>
+<li>
+ Different compiler or compiler options used, or headers included differently.
+ </li>
+</ul></div>
+</li>
+</ul></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_libraries.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="cheese.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>


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