|
Boost-Commit : |
From: oryol_at_[hidden]
Date: 2008-07-15 15:09:40
Author: jeremypack
Date: 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
New Revision: 47453
URL: http://svn.boost.org/trac/boost/changeset/47453
Log:
Doc changes, minor fixes etc.
Added:
sandbox/libs/extension/doc/html/boost/
sandbox/libs/extension/doc/html/boost/extensions/
sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/
sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/generic_map_holder.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/map_holder.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/factory.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/factory_map.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/load_single_library.html (contents, props changed)
sandbox/libs/extension/doc/html/boost/extensions/shared_library.html (contents, props changed)
sandbox/libs/extension/doc/html/boost_extension/reference.html (contents, props changed)
sandbox/libs/extension/doc/html/images/
sandbox/libs/extension/doc/html/images/blank.png (contents, props changed)
sandbox/libs/extension/doc/html/images/caution.png (contents, props changed)
sandbox/libs/extension/doc/html/images/draft.png (contents, props changed)
sandbox/libs/extension/doc/html/images/home.png (contents, props changed)
sandbox/libs/extension/doc/html/images/important.png (contents, props changed)
sandbox/libs/extension/doc/html/images/next.png (contents, props changed)
sandbox/libs/extension/doc/html/images/next_disabled.png (contents, props changed)
sandbox/libs/extension/doc/html/images/note.png (contents, props changed)
sandbox/libs/extension/doc/html/images/prev.png (contents, props changed)
sandbox/libs/extension/doc/html/images/prev_disabled.png (contents, props changed)
sandbox/libs/extension/doc/html/images/tip.png (contents, props changed)
sandbox/libs/extension/doc/html/images/toc-blank.png (contents, props changed)
sandbox/libs/extension/doc/html/images/toc-minus.png (contents, props changed)
sandbox/libs/extension/doc/html/images/toc-plus.png (contents, props changed)
sandbox/libs/extension/doc/html/images/up.png (contents, props changed)
sandbox/libs/extension/doc/html/images/up_disabled.png (contents, props changed)
sandbox/libs/extension/doc/html/images/warning.png (contents, props changed)
Binary files modified:
sandbox/libs/extension/doc/html/boost_extension/appendices.html
Text files modified:
sandbox/boost/extension/common.hpp | 4
sandbox/boost/extension/convenience.hpp | 32 ++++-
sandbox/boost/extension/extension.hpp | 13 +
sandbox/boost/extension/factory.hpp | 74 ++++++++++++
sandbox/boost/extension/factory_map.hpp | 64 ++++++++-
sandbox/boost/extension/impl/factory.hpp | 31 +---
sandbox/boost/extension/impl/library_impl.hpp | 10
sandbox/boost/extension/impl/shared_library.hpp | 10 +
sandbox/boost/extension/impl/typeinfo.hpp | 5
sandbox/boost/extension/shared_library.hpp | 96 ++++++++++++++-
sandbox/boost/reflection/adapter.hpp | 19 +++
sandbox/boost/reflection/constructor_info.hpp | 2
sandbox/boost/reflection/data.hpp | 4
sandbox/boost/reflection/generic_constructor.hpp | 2
sandbox/boost/reflection/impl/function.hpp | 6
sandbox/boost/reflection/impl/reflection.hpp | 8
sandbox/boost/reflection/impl/reflection_functions.hpp | 8
sandbox/boost/reflection/parameter.hpp | 16 +-
sandbox/boost/reflection/parameter_map.hpp | 2
sandbox/libs/extension/doc/Jamfile.v2 | 48 ++++++--
sandbox/libs/extension/doc/appendices.qbk | 2
sandbox/libs/extension/doc/appendix_a.qbk | 2
sandbox/libs/extension/doc/appendix_b.qbk | 2
sandbox/libs/extension/doc/extension.qbk | 12 +
sandbox/libs/extension/doc/factories.qbk | 2
sandbox/libs/extension/doc/faq.qbk | 10
sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_b.html | 22 ++-
sandbox/libs/extension/doc/html/boost_extension/factories.html | 21 +-
sandbox/libs/extension/doc/html/boost_extension/info.html | 132 ++++++++++-----------
sandbox/libs/extension/doc/html/boost_extension/performance_analysis.html | 31 ++--
sandbox/libs/extension/doc/html/boost_extension/shared_libraries.html | 75 +++++++-----
sandbox/libs/extension/doc/html/boost_extension/tutorials.html | 162 +++++++++++++++++++++++++-
sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial02.html | 80 ++++++-------
sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial03.html | 106 ++++++++---------
sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial04.html | 141 ++++++++++-------------
sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial05.html | 236 +++++++++++++++++++--------------------
sandbox/libs/extension/doc/html/index.html | 74 ++++++++++--
sandbox/libs/extension/doc/info.qbk | 2
sandbox/libs/extension/doc/introduction.qbk | 2
sandbox/libs/extension/doc/performance_analysis.qbk | 2
sandbox/libs/extension/doc/quick_start.qbk | 2
sandbox/libs/extension/doc/shared_libraries.qbk | 2
sandbox/libs/extension/doc/tutorial1.qbk | 2
sandbox/libs/extension/doc/tutorial2.qbk | 2
sandbox/libs/extension/doc/tutorial3.qbk | 2
sandbox/libs/extension/doc/tutorial4.qbk | 2
sandbox/libs/extension/doc/tutorial5.qbk | 2
sandbox/libs/extension/doc/tutorial6.qbk | 2
sandbox/libs/extension/doc/tutorials.qbk | 2
sandbox/libs/extension/test/construction.cpp | 4
sandbox/libs/extension/test/double_param_test.cpp | 7
sandbox/libs/extension/test/single_param_test.cpp | 4
sandbox/libs/reflection/examples/Jamfile.v2 | 2
sandbox/libs/reflection/examples/extension/car_lib.cpp | 18 +-
sandbox/libs/reflection/examples/extension/extension.cpp | 8
sandbox/libs/reflection/test/shared_library_test.cpp | 25 ++-
56 files changed, 1046 insertions(+), 610 deletions(-)
Modified: sandbox/boost/extension/common.hpp
==============================================================================
--- sandbox/boost/extension/common.hpp (original)
+++ sandbox/boost/extension/common.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -19,6 +19,10 @@
#include <boost/preprocessor/repetition.hpp>
#include <boost/preprocessor/iteration/iterate.hpp>
#include <boost/concept_check.hpp>
+/** 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.
+ */
#ifndef BOOST_EXTENSION_MAX_FUNCTOR_PARAMS
#define BOOST_EXTENSION_MAX_FUNCTOR_PARAMS 10
#endif
Modified: sandbox/boost/extension/convenience.hpp
==============================================================================
--- sandbox/boost/extension/convenience.hpp (original)
+++ sandbox/boost/extension/convenience.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -18,20 +18,38 @@
namespace boost {
namespace extensions {
-
-inline void load_single_library(factory_map & current_factory_map,
- const char * library_path,
- const char * external_function_name) {
+/** \brief Load factories from the given library and function.
+ *
+ * Add any exported factories from the given library with the
+ * given function name. This uses shared_library::get internally.
+ * The function must have the signature void (factory_map&).
+ * For more general loading of shared libraries, use the shared_library
+ * class directly.
+ * If the function is not found, false is returned.
+ *
+ * \param current_factory_map The factory map to load classes into. It is
+ * not required to be empty.
+ * \param library_path The relative or absolute path to the library to load.
+ * \param external_function_name The name of an exported function in the library
+ * with the signature void (factory_map&).
+ * \return True on success.
+ * \pre None.
+ * \post None.
+ */
+inline bool load_single_library(factory_map& current_factory_map,
+ const std::string& library_path,
+ const std::string& external_function_name) {
shared_library lib(library_path);
if (!lib.open()) {
- return;
+ return false;
}
- void (*func)(factory_map &) =
+ void (*func)(factory_map&) =
lib.shared_library::get<void, factory_map &>(external_function_name);
if (!func) {
- return;
+ return false;
}
(*func)(current_factory_map);
+ return true;
}
} // namespace extensions
} // namespace boost
Modified: sandbox/boost/extension/extension.hpp
==============================================================================
--- sandbox/boost/extension/extension.hpp (original)
+++ sandbox/boost/extension/extension.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,6 +12,15 @@
#ifndef BOOST_EXTENSION_EXTENSION_HPP
#define BOOST_EXTENSION_EXTENSION_HPP
-
+#ifdef BOOST_EXTENSION_DOXYGEN_INVOKED
+/** 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.
+ */
+#define BOOST_EXTENSION_EXPORT_DECL
+#else
#include <boost/extension/impl/decl.hpp>
-#endif
+#endif // BOOST_EXTENSION_EXPORT_DECL
+#endif // BOOST_EXTENSION_EXTENSION_HPP
Modified: sandbox/boost/extension/factory.hpp
==============================================================================
--- sandbox/boost/extension/factory.hpp (original)
+++ sandbox/boost/extension/factory.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -17,16 +17,83 @@
namespace boost {
namespace extensions {
+/* For Doxygen, and for easier readability by users, a
+ * simplified version of this class is provided, but never
+ * compiled. The actual class definition is in impl/factory.hpp.
+ */
+#ifdef BOOST_EXTENSION_DOXYGEN_INVOKED
+/** 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...
+ */
+template <class T, class Params... >
+class factory {
+public:
+ /** \brief Set the factory function for this factory.
+ *
+ * This sets the factory function
+ * to the constructor for type D.
+ * Example: factory<Base, int, int> f; f.set<Derived>();
+ */
+ template <class D>
+ void set() {
+ this->func = &impl::create_function<
+ T, D BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N,Param)
+ >::create;
+ }
+
+ /** \brief Default constructor.
+ * On creation, this factory is empty.
+ */
+ factory() : func(0) {}
+
+ /** \brief Standard copy constructor.
+ */
+ factory(factory<T> const& first) : func(first.func) {}
+
+ /** \brief Standard assignment operator.
+ */
+ factory& operator=(factory<T> const& first) {
+ this->func = first->func;
+ return *this;
+ }
+
+ /** \brief Returns true if set has been called.
+ *
+ * Until set is called, a factory cannot be used. This
+ * function can be used to determine if set has been called.
+ * \pre None.
+ * \post None.
+ * \return True if the factory is initialized (ie, set has been called).
+ */
+ bool is_valid() const { return this->func != 0; }
+
+ /** Returns an instance of T (but does NOT retain ownership of the instance).
+ * \param Params... The parameters described in the type of this factory.
+ * \return An instance of T.
+ * \pre is_valid() == true.
+ * \post None.
+ */
+ T* create(Params...) const {
+ if (this->func) {
+ return this->func(BOOST_PP_ENUM_PARAMS(N, p));
+ }
+ else {
+ return 0;
+ }
+ }
+};
-
+#else
#define N BOOST_EXTENSION_MAX_FUNCTOR_PARAMS
-
+namespace impl {
template <class T, class D
BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
BOOST_PP_INC(N), class Param, void) >
struct create_function;
-
+} // namespace impl
#undef N
#define N BOOST_EXTENSION_MAX_FUNCTOR_PARAMS
@@ -44,6 +111,7 @@
(0, BOOST_PP_INC(BOOST_EXTENSION_MAX_FUNCTOR_PARAMS) - 1)
# define BOOST_PP_FILENAME_1 <boost/extension/impl/factory.hpp>
# include BOOST_PP_ITERATE()
+#endif
} // namespace extensions
} // namespace boost
Modified: sandbox/boost/extension/factory_map.hpp
==============================================================================
--- sandbox/boost/extension/factory_map.hpp (original)
+++ sandbox/boost/extension/factory_map.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -20,12 +20,58 @@
namespace boost {
namespace extensions {
+/** \brief A collection of factories of various types.
+ * \tparam TypeInfo The type used for TypeInfo. By default,
+ * RTTI is used, but users can define their own TypeInfo.
+ * See impl/typeinfo.hpp.
+ */
template <class TypeInfo>
-class basic_factory_map
-{
-
+class basic_factory_map {
public:
+ ~basic_factory_map() {
+ for (typename std::map<TypeInfo, generic_map_holder*>::iterator
+ it =maps_.begin(); it != maps_.end(); ++it) {
+ delete it->second;
+ }
+ }
+/* Include simplified versions of the get and conversion member
+ * functions for Doxygen, and to make it easier for readers of
+ * this file.
+ */
+#ifdef BOOST_EXTENSION_DOXYGEN_INVOKED
+ /** \brief Return a map of the factories that match the given interface.
+ * \tparam Interface The type of the interface returned by factories in
+ * the requested map.
+ * \tparam Info An arbitrary type that is stored with each factory,
+ * to differentiate them. By default, strings are used.
+ * \tparam Params The constructor params for the requested factories.
+ * \return A map of the requested factory type.
+ *
+ * This returns a map of the given type of factories. It can return
+ * an empty map if no such factories are found.
+ */
+ template <class Interface, class Info, class Params...>
+ std::map<Info, factory<Interface, Params...> >& get() {
+ // EMPTY - THIS IS ONLY HERE FOR DOXYGEN.
+ }
+
+ /** \brief A conversion operator that calls get().
+ *
+ * A conversion operator for convenience in calling functions
+ * that take a map of factories.
+ * This is identical to the get() function.
+ */
+ template <class Interface, class Info, class Params...>
+ operator
+ std::map<
+ Info,
+ factory<Interface, Params...>
+ >
+ () {
+ // EMPTY - THIS IS ONLY HERE FOR DOXYGEN.
+ }
+#else
// generate get and conversion template member functions from the
// specification in impl/
# define BOOST_PP_ITERATION_LIMITS (0, \
@@ -33,13 +79,6 @@
# define BOOST_PP_FILENAME_1 <boost/extension/impl/factory_map.hpp>
# include BOOST_PP_ITERATE()
- ~basic_factory_map() {
- for (typename std::map<TypeInfo, generic_map_holder*>::iterator
- it =maps_.begin(); it != maps_.end(); ++it) {
- delete it->second;
- }
- }
-
private:
struct generic_map_holder {
@@ -50,8 +89,11 @@
struct map_holder : generic_map_holder, T {};
std::map<TypeInfo, generic_map_holder*> maps_;
+#endif
};
-
+/** A typedef for convenience - provides the most common
+ * type of basic_factory_map.
+ */
typedef basic_factory_map<default_type_info> factory_map;
} // namespace extensions
Modified: sandbox/boost/extension/impl/factory.hpp
==============================================================================
--- sandbox/boost/extension/impl/factory.hpp (original)
+++ sandbox/boost/extension/impl/factory.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -11,7 +11,7 @@
// No header guard - this file is intended to be included multiple times.
# define N BOOST_PP_ITERATION()
-
+namespace impl {
template <
class T,
class D
@@ -21,14 +21,12 @@
T,
D
BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, Param)
->
-{
- static T * create(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p) )
- {
+> {
+ static T * create(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p) ) {
return new D(BOOST_PP_ENUM_PARAMS(N, p));
}
};
-
+} // namespace impl
template <class T BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class Param) >
@@ -37,9 +35,8 @@
public:
template <class D>
- void set()
- {
- this->func = &create_function<
+ void set() {
+ this->func = &impl::create_function<
T, D BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N,Param)
>::create;
}
@@ -48,31 +45,25 @@
factory(factory<T> const& first) : func(first.func) {}
- factory& operator=(factory<T> const& first)
- {
+ factory& operator=(factory<T> const& first) {
this->func = first->func;
return *this;
}
- bool is_valid() { return this->func != 0; }
+ bool is_valid() const { return this->func != 0; }
- T* create(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p))
- {
- if (this->func)
- {
+ T* create(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) const {
+ if (this->func) {
return this->func(BOOST_PP_ENUM_PARAMS(N, p));
}
- else
- {
+ else {
return 0;
}
}
private:
-
typedef T* (*func_ptr_type)(BOOST_PP_ENUM_PARAMS(N, Param));
func_ptr_type func;
-
};
#undef N
\ No newline at end of file
Modified: sandbox/boost/extension/impl/library_impl.hpp
==============================================================================
--- sandbox/boost/extension/impl/library_impl.hpp (original)
+++ sandbox/boost/extension/impl/library_impl.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -34,11 +34,11 @@
namespace impl {
typedef HMODULE library_handle;
typedef FARPROC generic_function_ptr;
- inline library_handle load_shared_library(const char * libraryName) {
- return LoadLibraryA(libraryName);
+ inline library_handle load_shared_library(const char* library_name) {
+ return LoadLibraryA(library_name);
}
inline generic_function_ptr get_function(library_handle handle,
- const char * function_name) {
+ const char* function_name) {
return GetProcAddress(handle, function_name);
}
inline bool close_shared_library(library_handle handle) {
@@ -56,11 +56,11 @@
namespace impl {
typedef void * library_handle;
typedef void * generic_function_ptr;
- inline library_handle load_shared_library(const char * library_name) {
+ inline library_handle load_shared_library(const char* library_name) {
return dlopen(library_name, RTLD_LAZY);
}
inline generic_function_ptr get_function(library_handle handle,
- const char * function_name) {
+ const char* function_name) {
return dlsym(handle, function_name);
}
inline bool close_shared_library(library_handle handle) {
Modified: sandbox/boost/extension/impl/shared_library.hpp
==============================================================================
--- sandbox/boost/extension/impl/shared_library.hpp (original)
+++ sandbox/boost/extension/impl/shared_library.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -10,10 +10,14 @@
*/
# define N BOOST_PP_ITERATION()
// No ifndef headers - this is meant to be included multiple times.
-template <class ReturnValue BOOST_PP_COMMA_IF(N)
+template <class ReturnValue
+ BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS(N, class Param) >
-ReturnValue (*get(const std::string& name))(BOOST_PP_ENUM_PARAMS(N, Param)) {
+ReturnValue (*get(const std::string& name))
+ (BOOST_PP_ENUM_PARAMS(N, Param)) {
+ // Cast the handle or pointer to the function to the correct type.
+ // This is NOT typesafe. See the documentation of shared_library::get
return reinterpret_cast<ReturnValue (*)(BOOST_PP_ENUM_PARAMS(N, Param))>
(impl::get_function(handle_, name.c_str()));
}
-#undef N
\ No newline at end of file
+#undef N
Modified: sandbox/boost/extension/impl/typeinfo.hpp
==============================================================================
--- sandbox/boost/extension/impl/typeinfo.hpp (original)
+++ sandbox/boost/extension/impl/typeinfo.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -16,8 +16,7 @@
#include <typeinfo>
namespace boost { namespace extensions {
template <class TypeInfo, class ClassType>
-struct type_info_handler
-{
+struct type_info_handler {
static TypeInfo get_class_type();
};
@@ -30,7 +29,7 @@
template <class ClassType>
struct type_info_handler<default_type_info, ClassType>
{
- static default_type_info get_class_type(){
+ static default_type_info get_class_type() {
return default_type_info(typeid(ClassType));
}
};
Modified: sandbox/boost/extension/shared_library.hpp
==============================================================================
--- sandbox/boost/extension/shared_library.hpp (original)
+++ sandbox/boost/extension/shared_library.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,6 +1,7 @@
/*
* Boost.Extension / shared_library:
- * functions for shared_library loading
+ * Functions for shared_library loading.
+ * A basic wrapper around the OS-specific calls.
*
* (C) Copyright Jeremy Pack 2008
* Distributed under the Boost Software License, Version 1.0. (See
@@ -12,34 +13,111 @@
#ifndef BOOST_EXTENSION_SHARED_LIBRARY_HPP
#define BOOST_EXTENSION_SHARED_LIBRARY_HPP
+
#include <string>
-#include <boost/extension/impl/library_impl.hpp>
+
#include <boost/extension/common.hpp>
+#include <boost/extension/impl/library_impl.hpp>
#include <boost/preprocessor/iteration/iterate.hpp>
-namespace boost { namespace extensions {
+namespace boost {
+namespace extensions {
-class shared_library
-{
+/** \brief A wrapper around OS-specific shared library functions.
+ * \warning This class is inherently not type-safe. Carefully
+ * check the signature of the function or type in the shared library
+ * against the template arguments of the get functions.
+ */
+class shared_library {
public:
- bool is_open() { return handle_ != 0; }
+
+ /** shared_library constructor
+ * \param location The relative or absolute path of the shared library.
+ * \param auto_close An optional parameter which defaults to false.
+ * If set to true, the destructor will close this shared library
+ * if necessary.
+ */
+ shared_library(const std::string& location, bool auto_close = false)
+ : location_(location), handle_(0), auto_close_(auto_close) {
+ }
+
+ /** shared_library destructor
+ * If auto_close_ was set to true in the constructor, this closes
+ * the library if it is currently open.
+ */
+ ~shared_library() {
+ if (handle_ && auto_close_)
+ close();
+ }
+
+ /** \return true if the shared library is currently open
+ * and referenced by this object.
+ * \pre None.
+ * \post None.
+ */
+ bool is_open() const { return handle_ != 0; }
+
+ /** \brief Open the shared library.
+ * \return true if the shared library was opened successfully.
+ * \pre None.
+ * \post If true is returned, the shared library is opened and
+ * get() can be called.
+ */
bool open() {
+ if (handle_)
+ close();
return (handle_ = impl::load_shared_library(location_.c_str())) != 0;
}
+
+ /** \brief Close the shared library.
+ * This calls the OS specific close function for shared libraries.
+ * Usually, this decrements the reference count of the shared library.
+ * Once a shared library has a reference count of 0, it can be actually
+ * unloaded at any time.
+ * \return true if the close function was successful.
+ * \pre is_open() == true.
+ * \post is_open() == false.
+ */
bool close() {
return impl::close_shared_library(handle_);
}
- shared_library(const std::string& location, bool auto_close = false)
- : location_(location), handle_(0), auto_close_(auto_close) {
+
+// If Doxygen is being run, use more readable definitions for the
+// documentation.
+#ifdef BOOST_EXTENSION_DOXYGEN_INVOKED
+ /** \brief Get a function reference.
+ *
+ * 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.
+ *
+ * This function must have been declared with the same
+ * parameters and return type and marked as extern "C".
+ *
+ * Depending on platform and compiler settings, it may also
+ * be necessary to prefix the function with BOOST_EXTENSION_DECL,
+ * to make it externally visible.
+ *
+ * \warning If the function signature does not match, strange errors
+ * can occur.
+ * \pre is_open() == true.
+ * \post None.
+ */
+ template <class RetValue, class Params...>
+ FunctionPtr<ReturnValue (Params...)>
+ get(const std::string& name) const {
}
+#else
#define BOOST_PP_ITERATION_LIMITS (0, \
BOOST_PP_INC(BOOST_EXTENSION_MAX_FUNCTOR_PARAMS) - 1)
#define BOOST_PP_FILENAME_1 <boost/extension/impl/shared_library.hpp>
#include BOOST_PP_ITERATE()
+#endif
protected:
std::string location_;
impl::library_handle handle_;
bool auto_close_;
};
-}}
+} // namespace extensions
+} // namespace boost
#endif // BOOST_EXTENSION_SHARED_LIBRARY_HPP
Modified: sandbox/boost/reflection/adapter.hpp
==============================================================================
--- sandbox/boost/reflection/adapter.hpp (original)
+++ sandbox/boost/reflection/adapter.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -45,7 +45,8 @@
template <class D>
std::vector<generic_parameter<TypeInfo>*> get(Info info) {
std::vector<generic_parameter<TypeInfo>*> parameters;
- std::pair<typename map_type::iterator, typename map_type::iterator> its
+ std::pair<typename map_type::iterator,
+ typename map_type::iterator> its
= equal_range(info);
for (typename map_type::iterator current = its->first;
current != its->second; ++current) {
@@ -56,6 +57,22 @@
}
return parameters;
}
+
+ template <class D>
+ std::vector<const generic_parameter<TypeInfo>*> get(Info info) const {
+ std::vector<generic_parameter<TypeInfo>*> parameters;
+ std::pair<typename map_type::const_iterator,
+ typename map_type::const_iterator> its
+ = equal_range(info);
+ for (typename map_type::const_iterator current = its->first;
+ current != its->second; ++current) {
+ const generic_parameter<TypeInfo>& p = *current->second;
+ if (p.template can_cast<D>()) {
+ parameters.push_back(current->second);
+ }
+ }
+ return parameters;
+ }
};
typedef basic_parameter_map<> parameter_map;
}}
Modified: sandbox/boost/reflection/constructor_info.hpp
==============================================================================
--- sandbox/boost/reflection/constructor_info.hpp (original)
+++ sandbox/boost/reflection/constructor_info.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -37,7 +37,7 @@
: type_info_(s.type_info_) {
}
- basic_constructor_info & operator=(basic_constructor_info & s) {
+ basic_constructor_info& operator=(basic_constructor_info & s) {
type_info_ = s.type_info_;
}
Modified: sandbox/boost/reflection/data.hpp
==============================================================================
--- sandbox/boost/reflection/data.hpp (original)
+++ sandbox/boost/reflection/data.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -35,10 +35,10 @@
: data_ptr_(data_ptr),
conversion_function_(conversion_function) {
}
- T& operator()(instance & inst) {
+ T& operator()(instance & inst) const {
return (*conversion_function_)(inst.val_, data_ptr_);
}
- bool valid() {
+ bool valid() const {
return conversion_function_ != 0 && data_ptr_ != 0;
}
private:
Modified: sandbox/boost/reflection/generic_constructor.hpp
==============================================================================
--- sandbox/boost/reflection/generic_constructor.hpp (original)
+++ sandbox/boost/reflection/generic_constructor.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -16,7 +16,7 @@
class generic_constructor {
public:
virtual ~generic_constructor() {}
- virtual T * create(void ** params) = 0;
+ virtual T * create(void ** params) const = 0;
};
} // namespace reflections
} // namespace boost
Modified: sandbox/boost/reflection/impl/function.hpp
==============================================================================
--- sandbox/boost/reflection/impl/function.hpp (original)
+++ sandbox/boost/reflection/impl/function.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -25,16 +25,16 @@
member_function_(member_function) {
}
ReturnValue call(instance & inst BOOST_PP_COMMA_IF(N)
- BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) {
+ BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) const {
return (*func_)(inst.val_, member_function_ BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS(N, p));
}
ReturnValue operator()(instance & inst BOOST_PP_COMMA_IF(N)
- BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) {
+ BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) const {
return (*func_)(inst.val_, member_function_ BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS(N, p));
}
- bool valid() {
+ bool valid() const {
return member_function_ != 0 && func_ != 0;
}
private:
Modified: sandbox/boost/reflection/impl/reflection.hpp
==============================================================================
--- sandbox/boost/reflection/impl/reflection.hpp (original)
+++ sandbox/boost/reflection/impl/reflection.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -95,10 +95,10 @@
BOOST_PP_INC(BOOST_REFLECTION_MAX_FUNCTOR_PARAMS) - 1)
#define BOOST_PP_FILENAME_1 <boost/reflection/impl/reflection_functions.hpp>
#include BOOST_PP_ITERATE()
- instance_constructor<> get_constructor() {
+ instance_constructor<> get_constructor() const {
constructor_info t(reflections::type_info_handler<TypeInfo,
instance (*)()>::get_class_type());
- typename std::map<constructor_info, impl::FunctionPtr>::iterator it =
+ typename std::map<constructor_info, impl::FunctionPtr>::const_iterator it =
constructors_.find(t);
if (it == constructors_.end()) {
return instance_constructor<>();
@@ -108,14 +108,14 @@
}
template <class Data>
- data<Data> get_data(Info info) {
+ data<Data> get_data(Info info) const {
// Construct a data_info structure to look up the function in the map.
data_info d(reflections::type_info_handler<TypeInfo, Data>
::get_class_type(), info);
// Look up the function.
typename std::map<data_info,
- std::pair<impl::MemberPtr, impl::FunctionPtr> >::iterator it =
+ std::pair<impl::MemberPtr, impl::FunctionPtr> >::const_iterator it =
data_.find(d);
if (it == data_.end()) {
Modified: sandbox/boost/reflection/impl/reflection_functions.hpp
==============================================================================
--- sandbox/boost/reflection/impl/reflection_functions.hpp (original)
+++ sandbox/boost/reflection/impl/reflection_functions.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -16,7 +16,7 @@
template <class ParamFirst BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS(N, class Param)>
instance_constructor<ParamFirst BOOST_PP_COMMA_IF(N)
- BOOST_PP_ENUM_PARAMS(N, Param)> get_constructor() {
+ BOOST_PP_ENUM_PARAMS(N, Param)> get_constructor() const {
// Create a constructor_info structure to use for looking up
// a constructor in the constructor map. Initialize it with the
// function type requested.
@@ -26,7 +26,7 @@
::get_class_type());
// Determine whether or not such a constructor exists.
- typename std::map<constructor_info, impl::FunctionPtr>::iterator it =
+ typename std::map<constructor_info, impl::FunctionPtr>::const_iterator it =
constructors_.find(ctr_info);
if (it == constructors_.end()) {
@@ -45,7 +45,7 @@
template <class ReturnValue BOOST_PP_COMMA_IF(N)
BOOST_PP_ENUM_PARAMS(N, class Param)>
function<ReturnValue BOOST_PP_COMMA_IF(N)
- BOOST_PP_ENUM_PARAMS(N, Param)> get_function(Info info) {
+ BOOST_PP_ENUM_PARAMS(N, Param)> get_function(Info info) const {
// Construct a function_info structure to look up the function in the map.
// has_return is set to true here because it makes no difference when doing
// a lookup in the map.
@@ -55,7 +55,7 @@
// Look up the function.
typename std::map<function_info,
- std::pair<impl::MemberFunctionPtr, impl::FunctionPtr> >::iterator it =
+ std::pair<impl::MemberFunctionPtr, impl::FunctionPtr> >::const_iterator it =
functions_.find(func_info);
if (it == functions_.end()) {
Modified: sandbox/boost/reflection/parameter.hpp
==============================================================================
--- sandbox/boost/reflection/parameter.hpp (original)
+++ sandbox/boost/reflection/parameter.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -36,17 +36,17 @@
delete it->second;
}
}
- virtual TypeInfo type() = 0;
+ virtual TypeInfo type() const = 0;
template <class T>
- bool can_cast() {
+ bool can_cast() const {
TypeInfo i = type_info_handler<TypeInfo, T>::get_class_type();
return (converters_.find(i) != converters_.end());
}
template <class S>
- S cast() {
+ S cast() const {
S dest;
TypeInfo i = type_info_handler<TypeInfo, S>::get_class_type();
- typename std::map<TypeInfo, basic_converter*>::iterator it =
+ typename std::map<TypeInfo, basic_converter*>::const_iterator it =
converters_.find(i);
if (it != converters_.end()) {
it->second->convert(value_, reinterpret_cast<void*>(&dest));
@@ -63,7 +63,7 @@
}
class basic_converter {
public:
- virtual void convert(void* src, void* dest) = 0;
+ virtual void convert(void* src, void* dest) const = 0;
virtual ~basic_converter() {}
};
std::map<TypeInfo, basic_converter*> converters_;
@@ -77,7 +77,7 @@
template <class A, class B>
friend class basic_parameter_map;
- virtual TypeInfo type() {
+ virtual TypeInfo type() const {
return reflections::type_info_handler<TypeInfo, T>::get_class_type();
}
explicit parameter(T value)
@@ -109,7 +109,7 @@
class default_converter :
public generic_parameter<TypeInfo>::basic_converter {
public:
- virtual void convert(void* val, void* dest) {
+ virtual void convert(void* val, void* dest) const {
S* s = reinterpret_cast<S*>(dest);
*s = static_cast<S>(*reinterpret_cast<T*>(val));
}
@@ -121,7 +121,7 @@
explicit specialized_converter(void (*convert_function)(T*, S*))
: convert_function_(convert_function) {
}
- virtual void convert(void* val, void* dest) {
+ virtual void convert(void* val, void* dest) const {
S* s = reinterpret_cast<S*>(dest);
(*convert_function_)(reinterpret_cast<T*>(val), s);
}
Modified: sandbox/boost/reflection/parameter_map.hpp
==============================================================================
--- sandbox/boost/reflection/parameter_map.hpp (original)
+++ sandbox/boost/reflection/parameter_map.hpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -43,7 +43,7 @@
using map_type::end;
using map_type::insert;
template <class D>
- std::vector<generic_parameter<TypeInfo>*> get(Info info) {
+ std::vector<generic_parameter<TypeInfo>*> get(Info info) const {
std::vector<generic_parameter<TypeInfo>*> parameters;
std::pair<typename map_type::iterator, typename map_type::iterator> its
= equal_range(info);
Modified: sandbox/libs/extension/doc/Jamfile.v2
==============================================================================
--- sandbox/libs/extension/doc/Jamfile.v2 (original)
+++ sandbox/libs/extension/doc/Jamfile.v2 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,6 +1,6 @@
# Boost.Extension - documentation Jamfile
#
-# Copyright 2007 Jeremy Pack
+# 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)
@@ -8,20 +8,44 @@
# See http://www.boost.org/ for latest version.
#
-using quickbook ;
-xml extension : extension.qbk : : :
- <xsl:param>toc.max.depth=5
- <xsl:param>toc.section.depth=5
- <xsl:param>chunk.section.depth=5 ;
+import doxygen ;
+import quickbook ;
+
+import os ;
+local BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
+
+doxygen autodoc
+ :
+ [ glob ../../../boost/extension/*.hpp ]
+ :
+ <doxygen:param>EXTRACT_ALL=NO
+ <doxygen:param>"PREDEFINED=\"BOOST_EXTENSION_DOXYGEN_INVOKED\" \\
+ \"U_EXPORT2=\""
+ <doxygen:param>HIDE_UNDOC_MEMBERS=NO
+ <doxygen:param>EXTRACT_PRIVATE=NO
+ <doxygen:param>ENABLE_PREPROCESSING=YES
+ <doxygen:param>MACRO_EXPANSION=YES
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES
+ <doxygen:param>SEARCH_INCLUDES=YES
+ <doxygen:param>INCLUDE_PATH=$(BOOST_ROOT)
+ ;
+
+xml extension : extension.qbk ;
+
boostbook standalone
:
extension
:
- <xsl:param>generate.section.toc.level=3
- <xsl:param>chunk.first.sections=1
- <xsl:param>admon.graphics=1
-
+ <xsl:param>toc.max.depth=3
+ <xsl:param>toc.section.depth=3
+ <xsl:param>chunk.section.depth=3
+ <dependency>autodoc
;
-install html : $(BOOST_ROOT)/doc/html/boostbook.css ;
-install ../ : $(BOOST_ROOT)/boost.png ;
+install css : [ glob $(BOOST_ROOT)/doc/src/*.css ]
+ : <location>html ;
+install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ]
+ : <location>html/images ;
+
+install main_image : [ glob $(BOOST_ROOT)/boost.png ]
+ : <location>../ ;
\ No newline at end of file
Modified: sandbox/libs/extension/doc/appendices.qbk
==============================================================================
--- sandbox/libs/extension/doc/appendices.qbk (original)
+++ sandbox/libs/extension/doc/appendices.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - appendices ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/appendix_a.qbk
==============================================================================
--- sandbox/libs/extension/doc/appendix_a.qbk (original)
+++ sandbox/libs/extension/doc/appendix_a.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - windows export and import decs ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/appendix_b.qbk
==============================================================================
--- sandbox/libs/extension/doc/appendix_b.qbk (original)
+++ sandbox/libs/extension/doc/appendix_b.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - optional libraries ]
-[/ Copyright 2007 Mariano G. Consoni ]
+[/ Copyright 2008 Mariano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/extension.qbk
==============================================================================
--- sandbox/libs/extension/doc/extension.qbk (original)
+++ sandbox/libs/extension/doc/extension.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - main doc ]
-[/ Copyright 2007-2008 Jeremy Pack and Mariano Consoni ]
+[/ Copyright 2008-2008 Jeremy Pack and Mariano Consoni ]
[/ 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) ]
@@ -7,7 +7,7 @@
[library Boost.Extension
[quickbook 1.4]
- [copyright 2007 Jeremy Pack, Mariano G. Consoni]
+ [copyright 2008 Jeremy Pack, Mariano G. Consoni]
[purpose Factory management and facilities for using shared libraries]
[license
Distributed under the Boost Software License, Version 1.0.
@@ -19,14 +19,16 @@
]
-[def __linked_library [link boost_extension.linked_library linked_library]]
-[def __factory_map [link boost_extension.factory_map factory_map]]
-[def __factory [link boost_extension.factory factory]]
+[def _shared_library_ [^[classref boost::extensions::shared_library shared_library]]]
+[def _factory_map_ [^[classref boost::extensions::factory_map factory_map]]]
+[def _factory_ [^[classref boost::extensions::factory factory]]]
[include introduction.qbk]
[include tutorials.qbk]
[include factories.qbk]
[include shared_libraries.qbk]
+[xinclude autodoc.xml]
[include info.qbk]
[include performance_analysis.qbk]
+[include faq.qbk]
[include appendices.qbk]
Modified: sandbox/libs/extension/doc/factories.qbk
==============================================================================
--- sandbox/libs/extension/doc/factories.qbk (original)
+++ sandbox/libs/extension/doc/factories.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - factories doc ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/faq.qbk
==============================================================================
--- sandbox/libs/extension/doc/faq.qbk (original)
+++ sandbox/libs/extension/doc/faq.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - faq ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
@@ -14,7 +14,7 @@
Answer: The simplest way is to change the name of your interface (or the
namespace it is in) each time its contents change. This is actually what I would
recommend. However, it is also possible to include such information as part
-of the `factory`. A `factory` can contain arbitrary information about the plugin
+of the _factory_. A _factory_ can contain arbitrary information about the plugin
that it loads through the Info type. In the `hello_world` sample, the `Info`
type is an `int`, and the `hello` class has a number (it could be a version) of
1, and the `world` class has a version of 2. In the multiple_inheritance sample,
@@ -24,9 +24,9 @@
Question: What if I want to have a library close automatically when I've
destroyed all of the plugins in it?
-Answer: Wait for the `registry` class - which is almost done. It will take care
-of it. It is possible to do this with a `factory_map` currently, but the
-`registry` class will automate the process.
+Answer: I have not yet found a general enough way to do this that doesn't introduce too
+many constraints for programmers. I recommend developing a specific solution for your
+use case for now if you really need this.
Question:
Added: sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template basic_factory_map</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="../../header/boost/extension/factory_map/hpp.html" title="Header <boost/extension/factory_map.hpp>">
+<link rel="prev" href="../../header/boost/extension/factory_map/hpp.html" title="Header <boost/extension/factory_map.hpp>">
+<link rel="next" href="factory_map.html" title="Type definition 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="../../header/boost/extension/factory_map/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory_map/hpp.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="factory_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_factory_map"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template basic_factory_map</span></h2>
+<p>boost::extensions::basic_factory_map — A collection of factories of various types. </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><<span class="bold"><strong>typename</strong></span> TypeInfo>
+<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();
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...>
+ <span class="type">std::map< Info, factory< Interface, Params...> > &</span> get() ;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...>
+ operator std::map< Info, factory< Interface, Params...> >() ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id450849"></a><h2>Description</h2>
+<p>
+</p>
+<div class="refsect2" lang="en">
+<a name="id450856"></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="id288577-bb"></a>~basic_factory_map();</pre></li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id450897"></a><h3>
+<a name="id288517-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><<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...>
+ <span class="type">std::map< Info, factory< Interface, Params...> > &</span> <a name="id288519-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>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term">Returns:</span></td>
+<td><p>A map of the requested factory type.</p></td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> Interface, <span class="bold"><strong>typename</strong></span> Info, <span class="bold"><strong>typename</strong></span> Params...>
+ <a name="id288551-bb"></a><span class="bold"><strong>operator</strong></span> std::map< Info, factory< Interface, Params...> >() ;</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>
+</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="../../header/boost/extension/factory_map/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory_map/hpp.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="factory_map.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/generic_map_holder.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/generic_map_holder.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct generic_map_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="../basic_factory_map.html#id450848" title="Description">
+<link rel="prev" href="../../../header/boost/extension/factory_map/hpp.html" title="Header <boost/extension/factory_map.hpp>">
+<link rel="next" href="map_holder.html" title="Struct template map_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="../../../header/boost/extension/factory_map/hpp.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_factory_map.html#id450848"><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="map_holder.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_factory_map.generic_map_holder"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct generic_map_holder</span></h2>
+<p>boost::extensions::basic_factory_map::generic_map_holder — </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_map_holder {
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ ~generic_map_holder();
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id450953"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id450958"></a><h3>
+<a name="boost.extensions.basic_factory_map.generic_map_holderconstruct-copy-destruct"></a><code class="computeroutput">generic_map_holder</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id288356-bb"></a>~generic_map_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, 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="../../../header/boost/extension/factory_map/hpp.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_factory_map.html#id450848"><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="map_holder.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/map_holder.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/basic_factory_map/map_holder.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template map_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="../basic_factory_map.html#id450848" title="Description">
+<link rel="prev" href="generic_map_holder.html" title="Struct generic_map_holder">
+<link rel="next" href="../../../BOOST_PP_ITERATION_LIMITS_id288376.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="generic_map_holder.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_factory_map.html#id450848"><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_id288376.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.basic_factory_map.map_holder"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template map_holder</span></h2>
+<p>boost::extensions::basic_factory_map::map_holder — </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><<span class="bold"><strong>typename</strong></span> T>
+<span class="bold"><strong>struct</strong></span> map_holder :
+ <span class="bold"><strong>public</strong></span> boost::extensions::basic_factory_map< TypeInfo >::generic_map_holder
+{
+};</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, 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="generic_map_holder.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../basic_factory_map.html#id450848"><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_id288376.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/factory.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/factory.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,139 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template factory</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="../../header/boost/extension/factory/hpp.html" title="Header <boost/extension/factory.hpp>">
+<link rel="prev" href="../../header/boost/extension/factory/hpp.html" title="Header <boost/extension/factory.hpp>">
+<link rel="next" href="../../header/boost/extension/factory_map/hpp.html" title="Header <boost/extension/factory_map.hpp>">
+</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="../../header/boost/extension/factory/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory/hpp.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="../../header/boost/extension/factory_map/hpp.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>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template factory</span></h2>
+<p>boost::extensions::factory — </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><<span class="bold"><strong>typename</strong></span> T, <span class="bold"><strong>typename</strong></span> Params...>
+<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< T > <span class="bold"><strong>const</strong></span> &);
+ factory& operator=(factory< T > <span class="bold"><strong>const</strong></span> &);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> D> <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="type">T *</span> create(Params...) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id450310"></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="id450320"></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="id288474-bb"></a>factory();</pre></li>
+<li><pre class="literallayout"><a name="id288478-bb"></a>factory(factory< T > <span class="bold"><strong>const</strong></span> & first);</pre></li>
+<li><pre class="literallayout">factory& <a name="id288488-bb"></a><span class="bold"><strong>operator</strong></span>=(factory< T > <span class="bold"><strong>const</strong></span> & first);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id450426"></a><h3>
+<a name="id93876-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><<span class="bold"><strong>typename</strong></span> D> <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id93878-bb"></a>set() ;</pre>
+<p>This sets the factory function to the constructor for type D. Example: factory<Base, int, int> f; f.set<Derived>(); </p>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id89970-bb"></a>is_valid() ;</pre>
+<p>Until set is called, a factory cannot be used. This function can be used to determine if set has been called.
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>None. </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 if the factory is initialized (ie, set has been called). </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type">T *</span> <a name="id288450-bb"></a>create(Params...) ;</pre>
+<p>Returns an instance of T (but does NOT retain ownership of the instance).
+
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>is_valid() == 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>An instance of T. </p></td>
+</tr>
+</tbody>
+</table></div>
+</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, 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="../../header/boost/extension/factory/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory/hpp.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="../../header/boost/extension/factory_map/hpp.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/factory_map.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/factory_map.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Type definition factory_map</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="../../header/boost/extension/factory_map/hpp.html" title="Header <boost/extension/factory_map.hpp>">
+<link rel="prev" href="basic_factory_map.html" title="Class template basic_factory_map">
+<link rel="next" href="../../header/boost/extension/filesystem/hpp.html" title="Header <boost/extension/filesystem.hpp>">
+</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="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory_map/hpp.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="../../header/boost/extension/filesystem/hpp.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>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Type definition factory_map</span></h2>
+<p>factory_map — </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>typedef</strong></span> basic_factory_map< default_type_info > factory_map;</pre></div>
+<div class="refsect1" lang="en">
+<a name="id451075"></a><h2>Description</h2>
+<p>A typedef for convenience - provides the most common type of basic_factory_map. </p>
+</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="basic_factory_map.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/factory_map/hpp.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="../../header/boost/extension/filesystem/hpp.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/load_single_library.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/load_single_library.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,103 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function load_single_library</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="../../header/boost/extension/convenience/hpp.html" title="Header <boost/extension/convenience.hpp>">
+<link rel="prev" href="../../header/boost/extension/convenience/hpp.html" title="Header <boost/extension/convenience.hpp>">
+<link rel="next" href="../../header/boost/extension/extension/hpp.html" title="Header <boost/extension/extension.hpp>">
+</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="../../header/boost/extension/convenience/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/convenience/hpp.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="../../header/boost/extension/extension/hpp.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.extensions.load_single_library"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function load_single_library</span></h2>
+<p>boost::extensions::load_single_library — Load factories from the given library and function. </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="type"><span class="bold"><strong>bool</strong></span></span> load_single_library(factory_map & current_factory_map,
+ <span class="bold"><strong>const</strong></span> std::string & library_path,
+ <span class="bold"><strong>const</strong></span> std::string & external_function_name);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id449893"></a><h2>Description</h2>
+<p>Add any exported factories from the given library with the given function name. This uses shared_library::get internally. The function must have the signature void (factory_map&). For more general loading of shared libraries, use the shared_library class directly. If the function is not found, false is returned.</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">current_factory_map</code></span></td>
+<td><p>The factory map to load classes into. It is not required to be empty. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="computeroutput">external_function_name</code></span></td>
+<td><p>The name of an exported function in the library with the signature void (factory_map&). </p></td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="computeroutput">library_path</code></span></td>
+<td><p>The relative or absolute path to the library to load. </p></td>
+</tr>
+</tbody>
+</table></div></td>
+</tr>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>None. </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>
+</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="../../header/boost/extension/convenience/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/convenience/hpp.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="../../header/boost/extension/extension/hpp.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/libs/extension/doc/html/boost/extensions/shared_library.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost/extensions/shared_library.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,219 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class shared_library</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="../../header/boost/extension/shared_library/hpp.html" title="Header <boost/extension/shared_library.hpp>">
+<link rel="prev" href="../../header/boost/extension/shared_library/hpp.html" title="Header <boost/extension/shared_library.hpp>">
+<link rel="next" href="../../boost_extension/info.html" title=" Info Classes">
+</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="../../header/boost/extension/shared_library/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/shared_library/hpp.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/info.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>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class shared_library</span></h2>
+<p>boost::extensions::shared_library — A wrapper around OS-specific shared library functions. </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> 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 &, <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="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><<span class="bold"><strong>typename</strong></span> RetValue, <span class="bold"><strong>typename</strong></span> Params...>
+ <span class="type">FunctionPtr< ReturnValue(Params...)></span> get(<span class="bold"><strong>const</strong></span> std::string &) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id451490"></a><h2>Description</h2>
+<p>This class is inherently not type-safe. Carefully check the signature of the function or type in the shared library against the template arguments of the get functions. </p>
+<p>
+</p>
+<div class="refsect2" lang="en">
+<a name="id451502"></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="id288778-bb"></a>shared_library(<span class="bold"><strong>const</strong></span> std::string & location, <span class="bold"><strong>bool</strong></span> auto_close = false);</pre>
+<p>shared_library constructor
+</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">auto_close</code></span></td>
+<td><p>An optional parameter which defaults to false. If set to true, the destructor will close this shared library if necessary. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="computeroutput">location</code></span></td>
+<td><p>The relative or absolute path of the shared library. </p></td>
+</tr>
+</tbody>
+</table></div></td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id288771-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="id451617"></a><h3>
+<a name="id288656-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="id288658-bb"></a>is_open() ;</pre>
+<p>
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>None. </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 if the shared library is currently open and referenced by this object. </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id288677-bb"></a>open() ;</pre>
+<p>
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term">Requires:</span></td>
+<td><p>None. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term">Postconditions:</span></td>
+<td><p>If true is returned, the shared library is opened and get() can be called. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term">Returns:</span></td>
+<td><p>true if the shared library was opened successfully. </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id288700-bb"></a>close() ;</pre>
+<p>
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<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>is_open() == false. </p></td>
+</tr>
+<tr>
+<td>
+<span class="term">Returns:</span></td>
+<td><p>true if the close function was successful. </p></td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> RetValue, <span class="bold"><strong>typename</strong></span> Params...>
+ <span class="type">FunctionPtr< ReturnValue(Params...)></span> <a name="id288725-bb"></a>get(<span class="bold"><strong>const</strong></span> std::string & name) ;</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>
+<p>If the function signature does not match, strange errors can occur. </p>
+<p>
+
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<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>
+</tbody>
+</table></div>
+</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, 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="../../header/boost/extension/shared_library/hpp.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/extension/shared_library/hpp.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/info.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/libs/extension/doc/html/boost_extension/appendices.html
==============================================================================
Binary files. No diff available.
Modified: sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_b.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_b.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/appendices/appendix_b.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,30 +1,32 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Appendix B - Optional Dependencies</title>
+<title> Appendix B -
+ Optional Dependencies</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="../appendices.html" title=" Appendices">
-<link rel="prev" href="appendix_a.html" title=" Appendix A - Windows Export and Import Declarations">
-<link rel="next" href="appendix_c.html" title=" Appendix C - OS X Shared Libraries">
+<link rel="prev" href="../appendices.html" title=" Appendices">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="appendix_a.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../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="appendix_c.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../appendices.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../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>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_extension.appendices.appendix_b"></a> Appendix B - Optional Dependencies</h3></div></div></div>
+<a name="boost_extension.appendices.appendix_b"></a><a href="appendix_b.html" title=" Appendix B -
+ Optional Dependencies"> Appendix B -
+ Optional Dependencies</a></h3></div></div></div>
<p>
As suggested by Boost guidelines and our thoughts, we tried to keep the number
of dependencies of Boost.Extension at the minimum. But we also wanted to
@@ -44,7 +46,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -52,7 +54,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="appendix_a.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../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="appendix_c.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../appendices.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../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>
</div>
</body>
</html>
Modified: sandbox/libs/extension/doc/html/boost_extension/factories.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/factories.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/factories.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,10 +12,10 @@
<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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,7 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_extension.factories"></a> Factories</h2></div></div></div>
+<a name="boost_extension.factories"></a> Factories</h2></div></div></div>
<p>
In normal usage, a <code class="computeroutput"><span class="identifier">factory</span></code>
is initialized in a shared library, then returned to an application with a
@@ -35,7 +35,8 @@
A factory has the following template options:
</p>
<p>
- <code class="computeroutput"><span class="identifier">factory</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">ARGS</span><span class="special">></span></code>
+ <code class="computeroutput"><span class="identifier">factory</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span>
+ <span class="identifier">ARGS</span><span class="special">></span></code>
</p>
<p>
Where <code class="computeroutput"><span class="identifier">T</span></code> is the interface that
@@ -49,8 +50,8 @@
are:
</p>
<a name="boost_extension.factories.void_set_lt_d_gt___"></a><h3>
-<a name="id934421"></a>
- void set<D>()
+<a name="id448963"></a>
+ void set<D>()
</h3>
<p>
The <code class="computeroutput"><span class="identifier">set</span></code> function takes a template
@@ -59,8 +60,8 @@
This function may be called multiple times, to change the factory function.
</p>
<a name="boost_extension.factories.bool_is_valid__"></a><h3>
-<a name="id934462"></a>
- bool is_valid()
+<a name="id449012"></a>
+ bool is_valid()
</h3>
<p>
If set has been called, this returns true. Otherwise, it returns false.
@@ -68,7 +69,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
Modified: sandbox/libs/extension/doc/html/boost_extension/info.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/info.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/info.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -6,25 +6,25 @@
<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="shared_libraries.html" title=" Shared Libraries">
+<link rel="prev" href="../boost/extensions/shared_library.html" title="Class shared_library">
<link rel="next" href="performance_analysis.html" title=" Performance Analysis">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="../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="performance_analysis.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<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="performance_analysis.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.info"></a> Info Classes</h2></div></div></div>
+<a name="boost_extension.info"></a> Info Classes</h2></div></div></div>
<p>
In this section we explain how to use Info classes in Boost.Extension.
</p>
@@ -51,54 +51,53 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world!"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">mundo</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">mundo</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"mundo!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"mundo!"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">monde</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">monde</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"monde!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"monde!"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">mondo</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">mondo</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"mondo!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"mondo!"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hello"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hello"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">hola</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">hola</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hola"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hola"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">bonjour</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">bonjour</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"bonjour"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"bonjour"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">buonasera</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">buonasera</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"buonasera"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"buonasera"</span><span class="special">;}</span>
<span class="special">};</span>
</pre>
<p>
@@ -119,26 +118,24 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">struct</span> <span class="identifier">word_description</span>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">word_description</span>
<span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">language</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">english_translation</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">language</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">english_translation</span><span class="special">;</span>
- <span class="identifier">word_description</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">language</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">english_translation</span><span class="special">)</span>
- <span class="special">:</span> <span class="identifier">language</span><span class="special">(</span><span class="identifier">language</span><span class="special">),</span> <span class="identifier">english_translation</span><span class="special">(</span><span class="identifier">english_translation</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="identifier">word_description</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">language</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">english_translation</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">language</span><span class="special">(</span><span class="identifier">language</span><span class="special">),</span> <span class="identifier">english_translation</span><span class="special">(</span><span class="identifier">english_translation</span><span class="special">)</span> <span class="special">{}</span>
<span class="special">};</span>
</pre>
<p>
We also need a less-than operator for this class, so it can be used as a map
key.
</p>
-<pre class="programlisting">
-<span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="keyword">const</span> <span class="identifier">word_description</span> <span class="special">&</span> <span class="identifier">first</span><span class="special">,</span>
- <span class="keyword">const</span> <span class="identifier">word_description</span> <span class="special">&</span> <span class="identifier">second</span><span class="special">)</span> <span class="special">{</span>
- <span class="keyword">return</span> <span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span> <span class="special"><</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">language</span> <span class="special">||</span>
- <span class="special">(</span><span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span> <span class="special">==</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">language</span> <span class="special">&&</span>
- <span class="identifier">first</span><span class="special">.</span><span class="identifier">english_translation</span> <span class="special"><</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">english_translation</span><span class="special">);</span>
+<pre class="programlisting"><span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="keyword">const</span> <span class="identifier">word_description</span> <span class="special">&</span> <span class="identifier">first</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">word_description</span> <span class="special">&</span> <span class="identifier">second</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span> <span class="special"><</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">language</span> <span class="special">||</span>
+ <span class="special">(</span><span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span> <span class="special">==</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">language</span> <span class="special">&&</span>
+ <span class="identifier">first</span><span class="special">.</span><span class="identifier">english_translation</span> <span class="special"><</span> <span class="identifier">second</span><span class="special">.</span><span class="identifier">english_translation</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
@@ -150,26 +147,25 @@
<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_multilanguage_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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_multilanguage_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"spanish"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"spanish"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hola</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"spanish"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"spanish"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">mundo</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"french"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"french"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">bonjour</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"french"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"french"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">monde</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"italian"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"italian"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">buonasera</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"italian"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"italian"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">mondo</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"english"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"english"</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"english"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="identifier">word_description</span><span class="special">>()[</span><span class="identifier">word_description</span><span class="special">(</span><span class="string">"english"</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">)]</span>
<span class="special">.</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
<span class="special">}</span>
@@ -188,35 +184,33 @@
<p>
</p>
-<pre class="programlisting">
-<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"><</span><span class="identifier">word_description</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_word</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">current_word</span> <span class="special">!=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
- <span class="special">++</span><span class="identifier">current_word</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="identifier">word_ptr</span><span class="special">(</span><span class="identifier">current_word</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">word_ptr</span><span class="special">-></span><span class="identifier">get_val</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" is "</span>
- <span class="special"><<</span> <span class="identifier">current_word</span><span class="special">-></span><span class="identifier">first</span><span class="special">.</span><span class="identifier">english_translation</span>
- <span class="special"><<</span> <span class="string">" in "</span> <span class="special"><<</span> <span class="identifier">current_word</span><span class="special">-></span><span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<pre class="programlisting"><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"><</span><span class="identifier">word_description</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_word</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">current_word</span> <span class="special">!=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">current_word</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="identifier">word_ptr</span><span class="special">(</span><span class="identifier">current_word</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">word_ptr</span><span class="special">-></span><span class="identifier">get_val</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" is "</span>
+ <span class="special"><<</span> <span class="identifier">current_word</span><span class="special">-></span><span class="identifier">first</span><span class="special">.</span><span class="identifier">english_translation</span>
+ <span class="special"><<</span> <span class="string">" in "</span> <span class="special"><<</span> <span class="identifier">current_word</span><span class="special">-></span><span class="identifier">first</span><span class="special">.</span><span class="identifier">language</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
And we get the following output:
</p>
-<div class="informaltable">
-<h4>
-<a name="id937633"></a>
- </h4>
-<table class="table">
+<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<tbody><tr><td><code class="literal">hola is hello in spanish<br> mundo! is world! in spanish<br>
- bonjour is hello in french<br> monde! is world! in french<br> buonasera
- is hello in italian<br> mondo! is world! in italian<br> hello is
- hello in english<br> world! is world! in english<br> </code></td></tr></tbody>
-</table>
-</div>
+<tbody><tr><td>
+ <p>
+ <code class="literal">hola is hello in spanish<br> mundo! is world! in spanish<br>
+ bonjour is hello in french<br> monde! is world! in french<br> buonasera
+ is hello in italian<br> mondo! is world! in italian<br> hello is
+ hello in english<br> world! is world! in english<br> </code>
+ </p>
+ </td></tr></tbody>
+</table></div>
<p>
Now that we have described our example the major parts could be summarized:
</p>
@@ -242,7 +236,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -250,7 +244,7 @@
</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="../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="performance_analysis.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<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="performance_analysis.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -7,24 +7,24 @@
<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="info.html" title=" Info Classes">
-<link rel="next" href="appendices.html" title=" Appendices">
+<link rel="next" href="faq.html" title=" FAQ">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="info.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="appendices.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="info.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="faq.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.performance_analysis"></a> Performance Analysis</h2></div></div></div>
+<a name="boost_extension.performance_analysis"></a> Performance Analysis</h2></div></div></div>
<p>
In this section we will discuss the performance of the library. We'll focus
on the overhead added in comparison with <code class="literal">dlopen/dlclose</code>
@@ -41,8 +41,9 @@
Boost) more optimization will be performed.
</p>
<a name="boost_extension.performance_analysis.first_comparison"></a><h1>
-<a name="id937772"></a>
- First comparison
+<a name="id454829"></a>
+ <a href="performance_analysis.html#boost_extension.performance_analysis.first_comparison">First
+ comparison</a>
</h1>
<p>
The first benchmarks show how much overhead is incurred by using Boost.Extension
@@ -73,8 +74,9 @@
So Boost.Extension is (aprox.) three times slower.
</p>
<a name="boost_extension.performance_analysis.multiple_calls_and_libraries"></a><h1>
-<a name="id937849"></a>
- Multiple calls and libraries
+<a name="id454916"></a>
+ <a href="performance_analysis.html#boost_extension.performance_analysis.multiple_calls_and_libraries">Multiple
+ calls and libraries</a>
</h1>
<p>
Having a first idea about the comparison we advanced with two new benchmarks.
@@ -122,8 +124,9 @@
RTTI works across shared libraries.
</p>
<a name="boost_extension.performance_analysis.boost__function_overhead"></a><h1>
-<a name="id937844"></a>
- boost::function overhead
+<a name="id454923"></a>
+ <a href="performance_analysis.html#boost_extension.performance_analysis.boost__function_overhead">boost::function
+ overhead</a>
</h1>
<p>
Besides the comparison of Boost.Extension vs. direct system calls we evaluated
@@ -145,7 +148,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -153,7 +156,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="info.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="appendices.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="info.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="faq.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/libs/extension/doc/html/boost_extension/reference.html
==============================================================================
--- (empty file)
+++ sandbox/libs/extension/doc/html/boost_extension/reference.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -0,0 +1,59 @@
+<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="../index.html" title="Chapter 1. Boost.Extension">
+<link rel="prev" href="shared_libraries.html" title=" Shared Libraries">
+<link rel="next" href="../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html" title="Macro BOOST_EXTENSION_MAX_FUNCTOR_PARAMS">
+</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="../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="../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.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.reference"></a>Reference</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/extension/common.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.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>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.extension.common.hpp"></a>Header <boost/extension/common.hpp></h3></div></div></div>
+<pre class="synopsis">
+
+BOOST_EXTENSION_MAX_FUNCTOR_PARAMS</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, 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_libraries.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="../BOOST_EXTENSION_MAX_FUNCTOR_PARAMS.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/libs/extension/doc/html/boost_extension/shared_libraries.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/shared_libraries.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/shared_libraries.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -7,24 +7,24 @@
<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="info.html" title=" Info Classes">
+<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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="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="info.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<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="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.shared_libraries"></a> Shared Libraries</h2></div></div></div>
+<a name="boost_extension.shared_libraries"></a> Shared Libraries</h2></div></div></div>
<p>
A <code class="computeroutput"><span class="identifier">shared_library</span></code> refers to
a loadable module, the type of which depends on the platform:
@@ -40,9 +40,10 @@
Mac OS X: .dylib or .bundle (See Appendix C)
</li>
</ul></div>
-<a name="boost_extension.shared_libraries._code__phrase_role__identifier__shared_library__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase__nbsp__phrase_role__keyword__char__phrase__nbsp__phrase_role__special_____phrase__nbsp__phrase_role__identifier__location__phrase__phrase_role__special_____phrase__nbsp__phrase_role__keyword__bool__phrase__nbsp__phrase_role__identifier__auto_close__phrase__nbsp__phrase_role__special_____phrase__nbsp__phrase_role__keyword__false__phrase__phrase_role__special_____phrase___code_"></a><h4>
-<a name="id934530"></a>
- <code class="computeroutput"><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">location</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">auto_close</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">)</span></code>
+<a name="boost_extension.shared_libraries._code__phrase_role__identifier__shared_library__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase___phrase_role__keyword__char__phrase___phrase_role__special_____phrase___phrase_role__identifier__location__phrase__phrase_role__special_____phrase___phrase_role__keyword__bool__phrase___phrase_role__identifier__auto_close__phrase___phrase_role__special_____phrase___phrase_role__keyword__false__phrase__phrase_role__special_____phrase___code_"></a><h4>
+<a name="id449093"></a>
+ <a href="shared_libraries.html#boost_extension.shared_libraries._code__phrase_role__identifier__shared_library__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase___phrase_role__keyword__char__phrase___phrase_role__special_____phrase___phrase_role__identifier__location__phrase__phrase_role__special_____phrase___phrase_role__keyword__bool__phrase___phrase_role__identifier__auto_close__phrase___phrase_role__special_____phrase___phrase_role__keyword__false__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">location</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">auto_close</span>
+ <span class="special">=</span> <span class="keyword">false</span><span class="special">)</span></code></a>
</h4>
<p>
<code class="computeroutput"><span class="identifier">location</span></code> is the relative path
@@ -50,23 +51,23 @@
sets whether or not the library will be automatically closed when the <code class="computeroutput"><span class="identifier">shared_library</span></code> is destroyed. This function
does not open the library.
</p>
-<a name="boost_extension.shared_libraries._code__phrase_role__keyword__bool__phrase__nbsp__phrase_role__identifier__open__phrase__phrase_role__special______phrase___code_"></a><h4>
-<a name="id934654"></a>
- <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">open</span><span class="special">()</span></code>
+<a name="boost_extension.shared_libraries._code__phrase_role__keyword__bool__phrase___phrase_role__identifier__open__phrase__phrase_role__special______phrase___code_"></a><h4>
+<a name="id449221"></a>
+ bool open()
</h4>
<p>
Returns true if the library is opened successfully.
</p>
-<a name="boost_extension.shared_libraries._code__phrase_role__keyword__bool__phrase__nbsp__phrase_role__identifier__is_open__phrase__phrase_role__special______phrase___code_"></a><h4>
-<a name="id934697"></a>
- <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">is_open</span><span class="special">()</span></code>
+<a name="boost_extension.shared_libraries._code__phrase_role__keyword__bool__phrase___phrase_role__identifier__is_open__phrase__phrase_role__special______phrase___code_"></a><h4>
+<a name="id449276"></a>
+ bool is_open()
</h4>
<p>
Returns true if the library is open.
</p>
-<a name="boost_extension.shared_libraries._code__phrase_role__keyword__void__phrase__nbsp__phrase_role__identifier__close__phrase__phrase_role__special______phrase___code_"></a><h4>
-<a name="id934741"></a>
- <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">close</span><span class="special">()</span></code>
+<a name="boost_extension.shared_libraries._code__phrase_role__keyword__void__phrase___phrase_role__identifier__close__phrase__phrase_role__special______phrase___code_"></a><h4>
+<a name="id449331"></a>
+ void close()
</h4>
<p>
Close the library. Note that an OS specific shared library usually keeps a
@@ -76,35 +77,43 @@
the library even then. As such, this function can sometimes give a performance
boost, by freeing up RAM, but will often do nothing.
</p>
-<a name="boost_extension.shared_libraries._code__phrase_role__identifier__returnvalue__phrase__nbsp__phrase_role__special______phrase__phrase_role__identifier__get__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase__nbsp__phrase_role__keyword__char__phrase__nbsp__phrase_role__special_____phrase__nbsp__phrase_role__identifier__name__phrase__phrase_role__special_______phrase__phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"></a><h4>
-<a name="id934786"></a>
- <code class="computeroutput"><span class="identifier">ReturnValue</span> <span class="special">(*</span><span class="identifier">get</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="identifier">ARGS</span><span class="special">)</span></code>
+<a name="boost_extension.shared_libraries._code__phrase_role__identifier__returnvalue__phrase___phrase_role__special______phrase__phrase_role__identifier__get__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase___phrase_role__keyword__char__phrase___phrase_role__special_____phrase___phrase_role__identifier__name__phrase__phrase_role__special_______phrase__phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"></a><h4>
+<a name="id449389"></a>
+ <a href="shared_libraries.html#boost_extension.shared_libraries._code__phrase_role__identifier__returnvalue__phrase___phrase_role__special______phrase__phrase_role__identifier__get__phrase__phrase_role__special_____phrase__phrase_role__keyword__const__phrase___phrase_role__keyword__char__phrase___phrase_role__special_____phrase___phrase_role__identifier__name__phrase__phrase_role__special_______phrase__phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">ReturnValue</span> <span class="special">(*</span><span class="identifier">get</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="identifier">ARGS</span><span class="special">)</span></code></a>
</h4>
<p>
This function returns a pointer to a function in a dll with <code class="computeroutput"><span class="identifier">name</span></code>.
- Note that a C++ function needs to have <code class="computeroutput"><span class="keyword">extern</span> <span class="string">"C"</span></code> before it in order for this to
- work. To get a function like this:
+ Note that a C++ function needs to have <code class="computeroutput"><span class="keyword">extern</span>
+ <span class="string">"C"</span></code> before it in order for
+ this to work. To get a function like this:
</p>
-<pre class="programlisting">
-<span class="keyword">extern</span> <span class="string">"C"</span>
-<span class="keyword">int</span> <span class="identifier">get_value</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="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">extern</span> <span class="string">"C"</span>
+<span class="keyword">int</span> <span class="identifier">get_value</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="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
You would call:
</p>
-<pre class="programlisting">
-<span class="identifier">mySharedLibrary</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*>(</span><span class="string">"get_value"</span><span class="special">);</span>
+<pre class="programlisting"><span class="identifier">mySharedLibrary</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*>(</span><span class="string">"get_value"</span><span class="special">);</span>
</pre>
<p>
- [note It is recommended that you use Boost.Function to capture the return values
- of <code class="computeroutput"><span class="identifier">get</span></code>, but not required.]
</p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ It is recommended that you use Boost.Function to capture the return values
+ of <code class="computeroutput"><span class="identifier">get</span></code>, but not required.
+ </p></td></tr>
+</table></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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -112,7 +121,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="info.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<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="reference.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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -6,32 +6,174 @@
<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="introduction.html" title=" Introduction">
-<link rel="next" href="tutorials/tutorial01.html" title=" Tutorial 1">
+<link rel="prev" href="../index.html" title="Chapter 1. Boost.Extension">
+<link rel="next" href="tutorials/tutorial02.html" title=" Tutorial 2">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="introduction.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/tutorial01.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.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>
+<a name="boost_extension.tutorials"></a>Tutorials</h2></div></div></div>
<div class="toc"><dl>
-<dt><span class="section"> Tutorial 1</span></dt>
+<dt><span class="section"> Tutorial 1</span></dt>
<dt><span class="section"> Tutorial 2</span></dt>
<dt><span class="section"> Tutorial 3</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> Tutorial 1</h3></div></div></div>
+<p>
+ Create a class that we will later subclass and put it into a header file
+ called word.hpp.
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">word</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">word</span><span class="special">(){}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">""</span><span class="special">;}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ This file will be included by both the shared library in which classes implement
+ this interface, and in the executable that will load these implementations.
+ The destructor ought to be virtual, just to ensure proper deletion. We create
+ one virtual function. We could actually add data to this class as well.
+ </p>
+<p>
+ Now create a file called hello_world.cpp. This will be compiled into a shared
+ library:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="string">"word.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">factory_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world!"</span><span class="special">;}</span>
+<span class="special">};</span>
+<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hello"</span><span class="special">;}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Now we have two classes that are derived from word, and that both implement
+ the virtual function get_val. All that's left is to declare them for exporting.
+ Normally, we just put one function in the entire shared library that exports
+ all exportable classes in the library.
+</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_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">1</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">2</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="keyword">extern</span> <span class="string">"C"</span></code>
+ is required to keep the function name from being mangled. <code class="computeroutput"><span class="identifier">BOOST_EXTENSION_EXPORT_DECL</span></code>
+ is only necessary on Windows - on other platforms it does nothing. On Windows,
+ it declares that the function should be exported. This is the default in
+ shared libraries on other platforms.
+ </p>
+<p>
+ The <code class="computeroutput"><span class="identifier">factory_map</span><span class="special">::</span><span class="identifier">get</span></code> function takes two template arguments:
+ the type of factory to get (the interface returned by it), and what type
+ of info is used to identify it (which can be an arbitrary type).
+ </p>
+<p>
+ This returns a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code>, in this case, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="special">></span></code>.
+ We then index the map to find (and perhaps create) the appropriate factory,
+ and set the type of class it instantiates to the template argument of the
+ <code class="computeroutput"><span class="identifier">set</span></code> function. The argument
+ is the value for that identification info.
+ </p>
+<p>
+ Now we can write the executable.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">factory_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">extension</span><span class="special">/</span><span class="identifier">convenience</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="string">"word.hpp"</span>
+<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="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">"libHelloWorldLib.extension"</span><span class="special">,</span>
+ <span class="string">"extension_export_word"</span><span class="special">);</span>
+ <span class="comment">// Get a reference to the list of constructors for words.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">></span> <span class="special">&</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"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>();</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">2</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Error - the classes were not found."</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">list</span><span class="special"><</span><span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_word</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">current_word</span> <span class="special">!=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">current_word</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Using auto_ptr to avoid needing delete. Using smart_ptrs is recommended.
+</span> <span class="comment">// Note that this has a zero argument constructor - currently constructors
+</span> <span class="comment">// with up to six arguments can be used.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="identifier">word_ptr</span><span class="special">(</span><span class="identifier">current_word</span><span class="special">-></span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">word_ptr</span><span class="special">-></span><span class="identifier">get_val</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Now we just need to write the build file. You may have noticed above that
+ the name of the library is assumed to be libHelloWorld.extension - we'll
+ need to rename whatever shared library is compiled to that. Boost.Build can
+ do this automatically.
+ </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>
+<span class="identifier">import</span> <span class="identifier">os</span> <span class="special">;</span>
+
+<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"><</span><span class="identifier">include</span><span class="special">>../../../</span>
+ <span class="special"><</span><span class="identifier">include</span><span class="special">></span>#<span class="special">(</span><span class="identifier">BOOST_ROOT</span><span class="special">)</span>
+ <span class="special">:</span>
+ <span class="special">;</span>
+
+<span class="identifier">exe</span> <span class="identifier">HelloWorld</span> <span class="special">:</span> <span class="identifier">main</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">;</span>
+<span class="identifier">lib</span> <span class="identifier">HelloWorldLib</span> <span class="special">:</span> <span class="identifier">hello_world</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">:</span> <span class="special"><</span><span class="identifier">link</span><span class="special">></span><span class="identifier">shared</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="special">;</span>
+</pre>
+<p>
+ If you use another build system, you'll need to make sure that the output
+ shared library (dll, so, dylib etc.) is renamed correctly.
+ </p>
+</div>
<p>
There are currently five tutorials.
</p>
@@ -60,7 +202,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -68,7 +210,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="introduction.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/tutorial01.html"><img src="../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -6,25 +6,25 @@
<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="tutorial01.html" title=" Tutorial 1">
+<link rel="prev" href="../tutorials.html" title="Tutorials">
<link rel="next" href="tutorial03.html" title=" Tutorial 3">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="tutorial01.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.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="tutorial03.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../tutorials.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.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="tutorial03.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.tutorials.tutorial02"></a> Tutorial 2</h3></div></div></div>
+<a name="boost_extension.tutorials.tutorial02"></a> Tutorial 2</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
@@ -75,11 +75,10 @@
<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="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>
</p>
@@ -90,9 +89,8 @@
<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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></span><span class="identifier">shared</span> <span class="special">;</span>
+<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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></span><span class="identifier">shared</span> <span class="special">;</span>
</pre>
<p>
</p>
@@ -106,23 +104,22 @@
<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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></span><span class="identifier">shared</span> <span class="special">;</span>
-<span class="identifier">lib</span> <span class="identifier">CarOfTheFuture</span> <span class="special">:</span>
+<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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></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"><</span><span class="identifier">link</span><span class="special">></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="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"><</span><span class="identifier">link</span><span class="special">></span><span class="identifier">shared</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="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>
@@ -143,22 +140,21 @@
<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"><</span><span class="identifier">iostream</span><span class="special">></span>
-<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></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>
+<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"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></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"><<</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"><<</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="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"><<</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"><<</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>
@@ -166,7 +162,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
@@ -174,7 +170,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="tutorial01.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.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="tutorial03.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../tutorials.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.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="tutorial03.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,10 +12,10 @@
<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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,7 +24,7 @@
</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> Tutorial 3</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
@@ -46,26 +46,25 @@
<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>
+<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"><</span><span class="identifier">A</span><span class="special">></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="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"><</span><span class="identifier">A</span><span class="special">></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"><<</span> <span class="string">"Constructor called."</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="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"><<</span> <span class="string">"Parameters:"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tbool: "</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tunsigned int: "</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tchar: "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tstring: "</span> <span class="special"><<</span> <span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tA.i: "</span> <span class="special"><<</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tptr_a->i: "</span> <span class="special"><<</span> <span class="identifier">ptr_a</span><span class="special">-></span><span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Constructor called."</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span> <span class="special"><<</span> <span class="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"><<</span> <span class="string">"Parameters:"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tbool: "</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tunsigned int: "</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tchar: "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tstring: "</span> <span class="special"><<</span> <span class="identifier">s</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tA.i: "</span> <span class="special"><<</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\tptr_a->i: "</span> <span class="special"><<</span> <span class="identifier">ptr_a</span><span class="special">-></span><span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="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="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>
<p>
@@ -75,22 +74,21 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">A</span>
+<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="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>
-<span class="keyword">class</span> <span class="identifier">lots_of_parameters_interface</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"><</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="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="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"><</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="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>
</pre>
<p>
@@ -102,13 +100,12 @@
<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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">>()[</span><span class="number">6</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">six_parameters</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">>()[</span><span class="number">6</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">six_parameters</span><span class="special">>();</span>
<span class="special">}</span>
</pre>
<p>
@@ -117,36 +114,35 @@
<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>
+<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="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> <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> <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"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="special">&</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"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">>();</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"><<</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="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="special">&</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"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">>();</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"><<</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>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">></span> <span class="special">></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">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</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"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">></span> <span class="special">></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"><</span><span class="identifier">lots_of_parameters_interface</span><span class="special">></span>
- <span class="identifier">par_ptr</span><span class="special">(</span><span class="identifier">par</span><span class="special">-></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"><</span><span class="identifier">A</span><span class="special">>(</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="identifier">par_ptr</span><span class="special">(</span><span class="identifier">par</span><span class="special">-></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"><</span><span class="identifier">A</span><span class="special">>(</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">return</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
@@ -177,7 +173,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,10 +12,10 @@
<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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,7 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_extension.tutorials.tutorial04"></a> Tutorial 4</h3></div></div></div>
+<a name="boost_extension.tutorials.tutorial04"></a> Tutorial 4</h3></div></div></div>
<p>
In this tutorial we will see different features of the library related to
multiple loading of the same library, instance or interface.
@@ -46,24 +46,23 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world!"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hello"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"hello"</span><span class="special">;}</span>
<span class="special">};</span>
-<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_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">1</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">2</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">1</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">2</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
<span class="special">}</span>
</pre>
<p>
@@ -79,25 +78,24 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">world</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world! v2"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"world! v2"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
+<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">word</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"| v2 hello"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">get_val</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">"| v2 hello"</span><span class="special">;}</span>
<span class="special">};</span>
-<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_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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_word</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">22</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">22</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">world</span><span class="special">>();</span>
<span class="comment">// int could be used as version (v2 word 2)
-</span> <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">21</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
+</span> <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">21</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
<span class="comment">// int could be used as version (v2 word 1)
</span><span class="special">}</span>
</pre>
@@ -111,19 +109,18 @@
<p>
</p>
-<pre class="programlisting">
-<span class="identifier">factory_map</span> <span class="identifier">fm</span><span class="special">;</span>
+<pre class="programlisting"><span class="identifier">factory_map</span> <span class="identifier">fm</span><span class="special">;</span>
<span class="comment">// load hello world first version
-</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLib.extension"</span><span class="special">,</span>
+</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLib.extension"</span><span class="special">,</span>
<span class="string">"extension_export_word"</span><span class="special">);</span>
<span class="comment">// load hello world second version
-</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLibv2.extension"</span><span class="special">,</span>
+</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLibv2.extension"</span><span class="special">,</span>
<span class="string">"extension_export_word"</span><span class="special">);</span>
<span class="comment">// load hello world second version again
-</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLibv2.extension"</span><span class="special">,</span>
+</span><span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libHelloWorldLibv2.extension"</span><span class="special">,</span>
<span class="string">"extension_export_word"</span><span class="special">);</span>
</pre>
<p>
@@ -138,32 +135,28 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">for</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_word</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">current_word</span> <span class="special">!=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
- <span class="special">++</span><span class="identifier">current_word</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="identifier">word_ptr</span><span class="special">(</span><span class="identifier">current_word</span><span class="special">-></span><span class="identifier">create</span><span class="special">());</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">word_ptr</span><span class="special">-></span><span class="identifier">get_val</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">for</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="identifier">factory</span><span class="special"><</span><span class="identifier">word</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_word</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">current_word</span> <span class="special">!=</span> <span class="identifier">factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">current_word</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">word</span><span class="special">></span> <span class="identifier">word_ptr</span><span class="special">(</span><span class="identifier">current_word</span><span class="special">-></span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">word_ptr</span><span class="special">-></span><span class="identifier">get_val</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
<span class="special">}</span>
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
We get the following output:
</p>
-<div class="informaltable">
-<h4>
-<a name="id928153"></a>
- </h4>
-<table class="table">
+<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
<tbody><tr><td>
-<code class="literal">words:</code><br> <code class="literal">hello world! | v2 hello
- world! v2 | v2 hello world! v2</code>
-</td></tr></tbody>
-</table>
-</div>
+ <p>
+ <code class="literal">words:</code><br> <code class="literal">hello world! | v2 hello
+ world! v2 | v2 hello world! v2</code>
+ </p>
+ </td></tr></tbody>
+</table></div>
<p>
The first "hello world" is returned by the first version of the
library, and the second and third returned by the second version.
@@ -179,12 +172,11 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">salute</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">salute</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">salute</span><span class="special">(){}</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">say</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">""</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">salute</span><span class="special">(){}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">say</span><span class="special">(){</span><span class="keyword">return</span> <span class="string">""</span><span class="special">;}</span>
<span class="special">};</span>
</pre>
<p>
@@ -195,25 +187,24 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">salute</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">hello</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">salute</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">say</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">"hello"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">say</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">"hello"</span><span class="special">;}</span>
<span class="special">};</span>
-<span class="keyword">class</span> <span class="identifier">bye</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">salute</span>
+<span class="keyword">class</span> <span class="identifier">bye</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">salute</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">say</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">"bye!"</span><span class="special">;}</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">say</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">"bye!"</span><span class="special">;}</span>
<span class="special">};</span>
-<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_salute</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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_salute</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">1</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">2</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">bye</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">1</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">hello</span><span class="special">>();</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>()[</span><span class="number">2</span><span class="special">].</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">bye</span><span class="special">>();</span>
<span class="special">}</span>
</pre>
<p>
@@ -233,36 +224,32 @@
<p>
</p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="special">></span> <span class="special">&</span> <span class="identifier">salute_factory_list</span> <span class="special">=</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>();</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="special">></span> <span class="special">&</span> <span class="identifier">salute_factory_list</span> <span class="special">=</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">salute</span><span class="special">,</span> <span class="keyword">int</span><span class="special">>();</span>
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"salutes: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
-<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_salute</span> <span class="special">=</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"salutes: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">current_salute</span> <span class="special">=</span>
<span class="identifier">salute_factory_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
- <span class="identifier">current_salute</span> <span class="special">!=</span> <span class="identifier">salute_factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
- <span class="special">++</span><span class="identifier">current_salute</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="identifier">salute_ptr</span><span class="special">(</span><span class="identifier">current_salute</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">salute_ptr</span><span class="special">-></span><span class="identifier">say</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
+ <span class="identifier">current_salute</span> <span class="special">!=</span> <span class="identifier">salute_factory_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">current_salute</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">salute</span><span class="special">></span> <span class="identifier">salute_ptr</span><span class="special">(</span><span class="identifier">current_salute</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">salute_ptr</span><span class="special">-></span><span class="identifier">say</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" "</span><span class="special">;</span>
<span class="special">}</span>
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
The output is:
</p>
-<div class="informaltable">
-<h4>
-<a name="id929257"></a>
- </h4>
-<table class="table">
+<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
<tbody><tr><td>
-<code class="literal">salutes:</code> <br> <code class="literal">hello bye!</code>
-</td></tr></tbody>
-</table>
-</div>
+ <p>
+ <code class="literal">salutes:</code> <br> <code class="literal">hello bye!</code>
+ </p>
+ </td></tr></tbody>
+</table></div>
<p>
In conclusion, with Boost.Extension we can implement the same class in different
libraries, the same class for different interfaces and load multiple libraries
@@ -271,7 +258,7 @@
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
Modified: sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial05.html
==============================================================================
--- sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial05.html (original)
+++ sandbox/libs/extension/doc/html/boost_extension/tutorials/tutorial05.html 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,10 +12,10 @@
<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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
<td align="center">More</td>
</tr></table>
<hr>
@@ -24,7 +24,7 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_extension.tutorials.tutorial05"></a> Tutorial 5</h3></div></div></div>
+<a name="boost_extension.tutorials.tutorial05"></a> Tutorial 5</h3></div></div></div>
<p>
In this tutorial we will describe an advanced example using the Info class.
The basics of Info classes are explained in the specific section. We expect
@@ -42,17 +42,16 @@
<p>
</p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">protocol</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">protocol</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</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">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">""</span><span class="special">);</span> <span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</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">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">""</span><span class="special">);</span> <span class="special">}</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">protocol</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">protocol</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
<span class="special">};</span>
</pre>
<p>
@@ -63,47 +62,46 @@
<p>
</p>
-<pre class="programlisting">
-<span class="comment">// MSN protocol implementation
-</span><span class="keyword">class</span> <span class="identifier">MSN</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">protocol</span>
+<pre class="programlisting"><span class="comment">// MSN protocol implementation
+</span><span class="keyword">class</span> <span class="identifier">MSN</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">protocol</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: Logged In"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: Logged In"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: message ["</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="string">"] sent"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: message ["</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="string">"] sent"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"MSN: hello! msg received"</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">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"MSN: hello! msg received"</span><span class="special">);</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: Status changed to ["</span> <span class="special"><<</span> <span class="identifier">new_status</span> <span class="special"><<</span> <span class="string">"]"</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: Status changed to ["</span> <span class="special"><<</span> <span class="identifier">new_status</span> <span class="special"><<</span> <span class="string">"]"</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">MSN</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">MSN</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
<span class="special">};</span>
<span class="comment">// Jabber protocol implementation
-</span><span class="keyword">class</span> <span class="identifier">Jabber</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">protocol</span>
+</span><span class="keyword">class</span> <span class="identifier">Jabber</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">protocol</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: Logged In"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">login</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">user</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">pass</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: Logged In"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: message ["</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="string">"] sent"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">send</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">msg</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: message ["</span> <span class="special"><<</span> <span class="identifier">msg</span> <span class="special"><<</span> <span class="string">"] sent"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"Jabber: hello! msg received"</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">receive</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">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"Jabber: hello! msg received"</span><span class="special">);</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: Status changed to ["</span> <span class="special"><<</span> <span class="identifier">new_status</span> <span class="special"><<</span> <span class="string">"]"</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">change_status</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="identifier">new_status</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: Status changed to ["</span> <span class="special"><<</span> <span class="identifier">new_status</span> <span class="special"><<</span> <span class="string">"]"</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">Jabber</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">Jabber</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{}</span>
<span class="special">};</span>
</pre>
<p>
@@ -125,16 +123,15 @@
<p>
</p>
-<pre class="programlisting">
-<span class="comment">// interface for the parameters of each plugin
-</span><span class="keyword">class</span> <span class="identifier">network_parameters</span>
+<pre class="programlisting"><span class="comment">// interface for the parameters of each plugin
+</span><span class="keyword">class</span> <span class="identifier">network_parameters</span>
<span class="special">{</span>
<span class="keyword">public</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">hostname</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</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">port</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)=</span> <span class="number">0</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">hostname</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</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">port</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)=</span> <span class="number">0</span><span class="special">;</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">network_parameters</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{};</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">network_parameters</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{};</span>
<span class="special">};</span>
</pre>
<p>
@@ -145,46 +142,44 @@
<p>
</p>
-<pre class="programlisting">
-<span class="comment">// MSN implementation
-</span><span class="keyword">class</span> <span class="identifier">MSN_network_parameters</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">network_parameters</span>
+<pre class="programlisting"><span class="comment">// MSN implementation
+</span><span class="keyword">class</span> <span class="identifier">MSN_network_parameters</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">network_parameters</span>
<span class="special">{</span>
<span class="keyword">public</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">hostname</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">"msn.messenger.com"</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">port</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">"1863"</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">hostname</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">"msn.messenger.com"</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">port</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">"1863"</span><span class="special">;</span> <span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"http mode set"</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"http mode set"</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">MSN_network_parameters</span><span class="special">()</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">MSN_network_parameters</span><span class="special">()</span> <span class="special">{}</span>
<span class="special">};</span>
<span class="comment">// Jabber implementation
-</span><span class="keyword">class</span> <span class="identifier">Jabber_network_parameters</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">network_parameters</span>
+</span><span class="keyword">class</span> <span class="identifier">Jabber_network_parameters</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">network_parameters</span>
<span class="special">{</span>
<span class="keyword">public</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">hostname</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">"jabber.org"</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">port</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">"7063"</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">hostname</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">"jabber.org"</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">port</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">"7063"</span><span class="special">;</span> <span class="special">}</span>
- <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"http mode not supported"</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+ <span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">set_http_mode</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"http mode not supported"</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">Jabber_network_parameters</span><span class="special">()</span> <span class="special">{}</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">Jabber_network_parameters</span><span class="special">()</span> <span class="special">{}</span>
<span class="special">};</span>
</pre>
<p>
We want to be able to compare smart pointers to <code class="computeroutput"><span class="identifier">network_parameters</span></code>:
</p>
-<pre class="programlisting">
-<span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">&</span> <span class="identifier">first</span><span class="special">,</span>
- <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">&</span> <span class="identifier">second</span><span class="special">)</span> <span class="special">{</span>
- <span class="keyword">int</span> <span class="identifier">comp</span> <span class="special">=</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">first</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">(),</span> <span class="identifier">second</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">());</span>
- <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">comp</span><span class="special">)</span> <span class="special">{</span>
- <span class="keyword">return</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">first</span><span class="special">-></span><span class="identifier">port</span><span class="special">(),</span> <span class="identifier">second</span><span class="special">-></span><span class="identifier">port</span><span class="special">())</span> <span class="special"><</span> <span class="number">0</span><span class="special">;</span>
+<pre class="programlisting"><span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">&</span> <span class="identifier">first</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">&</span> <span class="identifier">second</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">comp</span> <span class="special">=</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">first</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">(),</span> <span class="identifier">second</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">());</span>
+ <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">comp</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">first</span><span class="special">-></span><span class="identifier">port</span><span class="special">(),</span> <span class="identifier">second</span><span class="special">-></span><span class="identifier">port</span><span class="special">())</span> <span class="special"><</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
- <span class="keyword">else</span> <span class="keyword">return</span> <span class="identifier">comp</span> <span class="special"><</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">else</span> <span class="keyword">return</span> <span class="identifier">comp</span> <span class="special"><</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
@@ -194,14 +189,13 @@
<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_plugins</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
+<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_plugins</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">&</span> <span class="identifier">fm</span><span class="special">)</span>
<span class="special">{</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">add</span><span class="special"><</span> <span class="identifier">MSN</span><span class="special">,</span> <span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">></span>
- <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>(</span><span class="keyword">new</span> <span class="identifier">MSN_network_parameters</span><span class="special">));</span>
- <span class="identifier">fm</span><span class="special">.</span><span class="identifier">add</span><span class="special"><</span> <span class="identifier">Jabber</span><span class="special">,</span> <span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">></span>
- <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>(</span><span class="keyword">new</span> <span class="identifier">Jabber_network_parameters</span><span class="special">));</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">add</span><span class="special"><</span> <span class="identifier">MSN</span><span class="special">,</span> <span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">></span>
+ <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>(</span><span class="keyword">new</span> <span class="identifier">MSN_network_parameters</span><span class="special">));</span>
+ <span class="identifier">fm</span><span class="special">.</span><span class="identifier">add</span><span class="special"><</span> <span class="identifier">Jabber</span><span class="special">,</span> <span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">></span>
+ <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>(</span><span class="keyword">new</span> <span class="identifier">Jabber_network_parameters</span><span class="special">));</span>
<span class="special">}</span>
</pre>
<p>
@@ -212,78 +206,77 @@
<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>
+<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="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> <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">"libIMPlugins.extension"</span><span class="special">,</span>
+</span> <span class="identifier">load_single_library</span><span class="special">(</span><span class="identifier">fm</span><span class="special">,</span> <span class="string">"libIMPlugins.extension"</span><span class="special">,</span>
<span class="string">"extension_export_plugins"</span><span class="special">);</span>
<span class="comment">// get a reference to the list of constructors for protocols
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="special">></span> <span class="special">&</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"><</span><span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">>();</span>
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="special">></span> <span class="special">&</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"><</span><span class="identifier">protocol</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="special">>();</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">2</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Error - the classes were not found."</span><span class="special">;</span>
- <span class="keyword">return</span> <span class="number">1</span><span class="special">;</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">2</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Error - the classes were 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>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="special">></span>
- <span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">current_plugin</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">map</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">>,</span> <span class="identifier">factory</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="special">></span>
+ <span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">current_plugin</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="comment">// MSN plugin
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="identifier">MSN_ptr</span><span class="special">(</span><span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="identifier">msn_parameters</span> <span class="special">=</span>
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="identifier">MSN_ptr</span><span class="special">(</span><span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="identifier">msn_parameters</span> <span class="special">=</span>
<span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">first</span><span class="special">;</span>
<span class="identifier">current_plugin</span><span class="special">++;</span>
<span class="comment">// Jabber plugin
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="identifier">Jabber_ptr</span><span class="special">(</span><span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="identifier">jabber_parameters</span> <span class="special">=</span>
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">protocol</span><span class="special">></span> <span class="identifier">Jabber_ptr</span><span class="special">(</span><span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">second</span><span class="special">.</span><span class="identifier">create</span><span class="special">());</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special"><</span><span class="identifier">network_parameters</span><span class="special">></span> <span class="identifier">jabber_parameters</span> <span class="special">=</span>
<span class="identifier">current_plugin</span><span class="special">-></span><span class="identifier">first</span><span class="special">;</span>
<span class="comment">// server
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN hostname: "</span> <span class="special"><<</span> <span class="identifier">msn_parameters</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber hostname: "</span> <span class="special"><<</span> <span class="identifier">jabber_parameters</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">()</span>
- <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN hostname: "</span> <span class="special"><<</span> <span class="identifier">msn_parameters</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber hostname: "</span> <span class="special"><<</span> <span class="identifier">jabber_parameters</span><span class="special">-></span><span class="identifier">hostname</span><span class="special">()</span>
+ <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// http_mode: note that one of the implementations doesn't support it,
-</span> <span class="comment">// having a base class
-</span> <span class="comment">// and different specific concrete network parameters allow us to handle this
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: "</span><span class="special">;</span>
+</span> <span class="comment">// having a base class
+</span> <span class="comment">// and different specific concrete network parameters allow us to handle this
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"MSN: "</span><span class="special">;</span>
<span class="identifier">msn_parameters</span><span class="special">-></span><span class="identifier">set_http_mode</span><span class="special">();</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: "</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Jabber: "</span><span class="special">;</span>
<span class="identifier">jabber_parameters</span><span class="special">-></span><span class="identifier">set_http_mode</span><span class="special">();</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// login
-</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">login</span><span class="special">(</span><span class="string">"testuser"</span><span class="special">,</span> <span class="string">"testpass"</span><span class="special">);</span>
- <span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">login</span><span class="special">(</span><span class="string">"testuser"</span><span class="special">,</span> <span class="string">"testpass"</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">login</span><span class="special">(</span><span class="string">"testuser"</span><span class="special">,</span> <span class="string">"testpass"</span><span class="special">);</span>
+ <span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">login</span><span class="special">(</span><span class="string">"testuser"</span><span class="special">,</span> <span class="string">"testpass"</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// send message
-</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">send</span><span class="special">(</span><span class="string">"hi"</span><span class="special">);</span>
+</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">send</span><span class="special">(</span><span class="string">"hi"</span><span class="special">);</span>
<span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">send</span><span class="special">(</span><span class="string">"hi"</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// change status
-</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">change_status</span><span class="special">(</span><span class="string">"away"</span><span class="special">);</span>
+</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">change_status</span><span class="special">(</span><span class="string">"away"</span><span class="special">);</span>
<span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">change_status</span><span class="special">(</span><span class="string">"away"</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// wait for message
-</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">receive</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">receive</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">MSN_ptr</span><span class="special">-></span><span class="identifier">receive</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">Jabber_ptr</span><span class="special">-></span><span class="identifier">receive</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
@@ -292,28 +285,27 @@
<p>
And we get the following output:
</p>
-<div class="informaltable">
-<h4>
-<a name="id934158"></a>
- </h4>
-<table class="table">
+<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<tbody><tr><td><code class="literal">MSN hostname: msn.messenger.com<br> Jabber hostname:
- jabber.org<br> <br> MSN: http mode set<br> Jabber: http mode
- not supported<br> <br> MSN: Logged In<br> Jabber: Logged In<br>
- <br> MSN: message [hi] sent<br> Jabber: message [hi] sent<br>
- <br> MSN: Status changed to [away]<br> Jabber: Status changed to
- [away]<br> <br> MSN: hello! msg received<br> Jabber: hello! msg
- received<br> </code></td></tr></tbody>
-</table>
-</div>
+<tbody><tr><td>
+ <p>
+ <code class="literal">MSN hostname: msn.messenger.com<br> Jabber hostname: jabber.org<br>
+ <br> MSN: http mode set<br> Jabber: http mode not supported<br>
+ <br> MSN: Logged In<br> Jabber: Logged In<br> <br> MSN: message
+ [hi] sent<br> Jabber: message [hi] sent<br> <br> MSN: Status
+ changed to [away]<br> Jabber: Status changed to [away]<br> <br>
+ MSN: hello! msg received<br> Jabber: hello! msg received<br>
+ </code>
+ </p>
+ </td></tr></tbody>
+</table></div>
<p>
The complete code is in the <code class="literal">examples/info/im</code> directory.
</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 © 2007 Jeremy Pack, Mariano G. Consoni<p>
+<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>
Added: sandbox/libs/extension/doc/html/images/blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/caution.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/draft.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/home.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/important.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/next.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/next_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/note.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/prev.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/prev_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/tip.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/toc-blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/toc-minus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/toc-plus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/up.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/up_disabled.png
==============================================================================
Binary file. No diff available.
Added: sandbox/libs/extension/doc/html/images/warning.png
==============================================================================
Binary file. No diff available.
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-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -5,26 +5,26 @@
<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="next" href="boost_extension/introduction.html" title=" Introduction">
+<link rel="next" href="boost_extension/tutorials.html" title="Tutorials">
</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">Home</td>
<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</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="n" href="boost_extension/introduction.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_extension/tutorials.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
<div class="chapter" lang="en">
<div class="titlepage"><div>
<div><h2 class="title">
<a name="boost_extension"></a>Chapter 1. Boost.Extension</h2></div>
-<div><p class="copyright">Copyright © 2007 Jeremy Pack, Mariano G. Consoni</p></div>
+<div><p class="copyright">Copyright © 2008 Jeremy Pack, Mariano G. Consoni</p></div>
<div><div class="legalnotice">
-<a name="id903160"></a><p>
+<a name="id435092"></a><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>
@@ -33,10 +33,10 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
-<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"> Introduction</span></dt>
<dt><span class="section">Tutorials</span></dt>
<dd><dl>
-<dt><span class="section"> Tutorial 1</span></dt>
+<dt><span class="section"> Tutorial 1</span></dt>
<dt><span class="section"> Tutorial 2</span></dt>
<dt><span class="section"> Tutorial 3</span></dt>
<dt><span class="section"> Tutorial 4</span></dt>
@@ -44,22 +44,70 @@
</dl></dd>
<dt><span class="section"> Factories</span></dt>
<dt><span class="section"> Shared Libraries</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/extension/common.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.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>
+</dl></dd>
<dt><span class="section"> Info Classes</span></dt>
<dt><span class="section"> Performance Analysis</span></dt>
+<dt><span class="section"> FAQ</span></dt>
<dt><span class="section"> Appendices</span></dt>
<dd><dl>
-<dt><span class="section"> Appendix A - Windows Export and Import Declarations</span></dt>
-<dt><span class="section"> Appendix B - Optional Dependencies</span></dt>
-<dt><span class="section"> Appendix C - OS X Shared Libraries</span></dt>
+<dt><span class="section"><a href="boost_extension/appendices.html#boost_extension.appendices.appendix_a"> Appendix A -
+ Windows Export and Import Declarations</a></span></dt>
+<dt><span class="section"><a href="boost_extension/appendices/appendix_b.html"> Appendix B -
+ Optional Dependencies</a></span></dt>
</dl></dd>
</dl>
</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_extension.introduction"></a> Introduction</h2></div></div></div>
+<p>
+ The Boost.Extension library has been developed to ease the development of plugins
+ and similar extensions to software. Classes can be made available from shared
+ libraries and loaded by the application.
+ </p>
+<p>
+ Among others, the library has the following features:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Multiple and virtual inheritance are supported
+ </li>
+<li>
+ Library users do not need to use any macros (besides those required by Windows
+ for exported functions)
+ </li>
+<li>
+ Only one external function required per shared library to export classes
+ </li>
+<li>
+ RTTI is used by default, but it is possible to use user-defined type identification
+ </li>
+<li>
+ Classes do not need to be modified to be loadable
+ </li>
+</ul></div>
+<p>
+ This library is currently in development in preparation for a review for inclusion
+ in the Boost C++ Libraries. For ongoing status updates, check <a href="http://boost-extension.blogspot.com/" target="_top">C++
+ Plugins and Reflection</a>.
+ </p>
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: February 12, 2008 at 19:25:00 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_extension/introduction.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_extension/tutorials.html"><img src="../../doc/html/images/next.png" alt="Next"></a></div>
</body>
</html>
Modified: sandbox/libs/extension/doc/info.qbk
==============================================================================
--- sandbox/libs/extension/doc/info.qbk (original)
+++ sandbox/libs/extension/doc/info.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - info class doc ]
-[/ Copyright 2007 Marano G. Consoni ]
+[/ Copyright 2008 Marano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/introduction.qbk
==============================================================================
--- sandbox/libs/extension/doc/introduction.qbk (original)
+++ sandbox/libs/extension/doc/introduction.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - intro ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/performance_analysis.qbk
==============================================================================
--- sandbox/libs/extension/doc/performance_analysis.qbk (original)
+++ sandbox/libs/extension/doc/performance_analysis.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - performance analysis ]
-[/ Copyright 2007 Mariano G. Consoni and Jeremy Pack]
+[/ Copyright 2008 Mariano G. Consoni and 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) ]
Modified: sandbox/libs/extension/doc/quick_start.qbk
==============================================================================
--- sandbox/libs/extension/doc/quick_start.qbk (original)
+++ sandbox/libs/extension/doc/quick_start.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - quick start ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/shared_libraries.qbk
==============================================================================
--- sandbox/libs/extension/doc/shared_libraries.qbk (original)
+++ sandbox/libs/extension/doc/shared_libraries.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - shared libraries ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial1.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial1.qbk (original)
+++ sandbox/libs/extension/doc/tutorial1.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - first tutorial ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial2.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial2.qbk (original)
+++ sandbox/libs/extension/doc/tutorial2.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - second tutorial ]
-[/ Copyright 2007 Jeremy Pack ]
+[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial3.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial3.qbk (original)
+++ sandbox/libs/extension/doc/tutorial3.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - third tutorial ]
-[/ Copyright 2007 Mariano G. Consoni ]
+[/ Copyright 2008 Mariano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial4.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial4.qbk (original)
+++ sandbox/libs/extension/doc/tutorial4.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - fourth tutorial ]
-[/ Copyright 2007 Mariano G. Consoni ]
+[/ Copyright 2008 Mariano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial5.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial5.qbk (original)
+++ sandbox/libs/extension/doc/tutorial5.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - fifth tutorial ]
-[/ Copyright 2007 Mariano G. Consoni ]
+[/ Copyright 2008 Mariano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorial6.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorial6.qbk (original)
+++ sandbox/libs/extension/doc/tutorial6.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - sixth tutorial ]
-[/ Copyright 2007 Mariano G. Consoni ]
+[/ Copyright 2008 Mariano G. Consoni ]
[/ 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) ]
Modified: sandbox/libs/extension/doc/tutorials.qbk
==============================================================================
--- sandbox/libs/extension/doc/tutorials.qbk (original)
+++ sandbox/libs/extension/doc/tutorials.qbk 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -1,5 +1,5 @@
[/ Boost.Extension - tutorials ]
-[/ Copyright 2007 Mariano G. Consoni and Jeremy Pack ]
+[/ Copyright 2008 Mariano G. Consoni and 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) ]
Modified: sandbox/libs/extension/test/construction.cpp
==============================================================================
--- sandbox/libs/extension/test/construction.cpp (original)
+++ sandbox/libs/extension/test/construction.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -81,7 +81,7 @@
(m["An unloaded car!"].create(),
(Automobile*)0);
}
-
+/*
namespace boost { namespace extensions {
template <>
Automobile * create_function<Automobile, Racecar>::create()
@@ -97,7 +97,7 @@
BOOST_CHECK(f.is_valid());
std::auto_ptr<Automobile> racecar(f.create());
BOOST_CHECK_EQUAL(racecar->getSpeed(), 101);
-}
+}*/
BOOST_AUTO_TEST_CASE(factory_map_argless)
{
Modified: sandbox/libs/extension/test/double_param_test.cpp
==============================================================================
--- sandbox/libs/extension/test/double_param_test.cpp (original)
+++ sandbox/libs/extension/test/double_param_test.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -82,14 +82,15 @@
(m["An unloaded car!"].create(30, 1.5f),
(Automobile*)0);
}
-
-namespace boost { namespace extensions {
+/*
+namespace boost { namespace extensions { namespace impl {
template <>
Automobile * create_function<Automobile, Racecar>::create()
{
return new Racecar(25, 2.0f);
}
-}} // namespace boost::extensions
+}}} // namespace boost::extensions::impl
+*/
BOOST_AUTO_TEST_CASE(factory_template)
{
Modified: sandbox/libs/extension/test/single_param_test.cpp
==============================================================================
--- sandbox/libs/extension/test/single_param_test.cpp (original)
+++ sandbox/libs/extension/test/single_param_test.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -82,7 +82,7 @@
(m["An unloaded car!"].create(30),
(Automobile*)0);
}
-
+/*
namespace boost { namespace extensions {
template <>
Automobile * create_function<Automobile, Racecar>::create()
@@ -98,7 +98,7 @@
BOOST_CHECK(f.is_valid());
std::auto_ptr<Automobile> racecar(f.create(60));
BOOST_CHECK_EQUAL(racecar->getSpeed(), 180);
-}
+}*/
BOOST_AUTO_TEST_CASE(factory_map_single_param)
{
Modified: sandbox/libs/reflection/examples/Jamfile.v2
==============================================================================
--- sandbox/libs/reflection/examples/Jamfile.v2 (original)
+++ sandbox/libs/reflection/examples/Jamfile.v2 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -15,10 +15,12 @@
import os ;
local BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
+local BOOST_SANDBOX_ROOT = [ os.environ BOOST_SANDBOX_ROOT ] ;
project
: requirements
<include>../../../
<include>$(BOOST_ROOT)
+ <include>$(BOOST_SANDBOX_ROOT)
<toolset>gcc:<find-shared-library>dl
<toolset>gcc:<linkflags>"-Wl,-rpath,'$ORIGIN'"
<toolset>darwin:<define>DYLD_LIBRARY_PATH=./
Modified: sandbox/libs/reflection/examples/extension/car_lib.cpp
==============================================================================
--- sandbox/libs/reflection/examples/extension/car_lib.cpp (original)
+++ sandbox/libs/reflection/examples/extension/car_lib.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -10,19 +10,20 @@
*/
#include "../car.hpp"
-#include <boost/extension/impl/decl.hpp>
+#include <boost/extension/extension.hpp>
#include <boost/reflection/reflection.hpp>
using namespace boost::reflections;
// Although both of these classes are derived from a common
// base, this is certainly not necessary. If we were using
// Boost.Extension factories, this would be required.
-class suv : public car
-{
+class suv {
public:
- suv(const char * name) : car(name) {}
- virtual const char * get_type(void) { return "It's an SUV."; }
- virtual ~suv(void) {}
+ suv(const char * name) {}
+ const char* get_type(void) { return "It's an SUV."; }
+ void start() {}
+ bool start(int target_speed) {}
+ short year;
};
class compact : public car
@@ -39,7 +40,10 @@
extension_export_car(std::map<std::string, reflection> reflection_map) {
reflection_map["suv"].reflect<suv>()
.constructor<const char*>()
- .function(&suv::get_type, "get_type");
+ .function(&suv::get_type, "get_type")
+ .data(&suv::year, "year")
+ .function<void>(&suv::start, "start")
+ .function<bool, int>(&suv::start, "start");
reflection_map["compact"].reflect<compact>()
.constructor<const char*>()
Modified: sandbox/libs/reflection/examples/extension/extension.cpp
==============================================================================
--- sandbox/libs/reflection/examples/extension/extension.cpp (original)
+++ sandbox/libs/reflection/examples/extension/extension.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -12,12 +12,13 @@
#include <string>
+#include <iostream>
#include <boost/extension/factory_map.hpp>
#include <boost/extension/shared_library.hpp>
#include <boost/extension/convenience.hpp>
#include <boost/reflection/reflection.hpp>
#include <boost/reflection/reflection.hpp>
-#include <iostream>
+#include <boost/function.hpp>
int main(void)
@@ -42,9 +43,8 @@
}
// Call an exported function to populate
// reflection_map
- lib.get<void, std::map<std::string,
- reflection> &>
- ("extension_export_car")(reflection_map);
+ lib.get<void, std::map<std::string, reflection> &>
+ ("extension_export_car")(reflection_map);
if (reflection_map.size() != size_t(2) ||
reflection_map.find("suv") == reflection_map.end() ||
reflection_map.find("compact") == reflection_map.end()) {
Modified: sandbox/libs/reflection/test/shared_library_test.cpp
==============================================================================
--- sandbox/libs/reflection/test/shared_library_test.cpp (original)
+++ sandbox/libs/reflection/test/shared_library_test.cpp 2008-07-15 15:09:34 EDT (Tue, 15 Jul 2008)
@@ -25,33 +25,36 @@
#include <iostream>cd
#include <boost/function.hpp>
+using namespace boost::reflections;
+using namespace boost::extensions;
+
BOOST_AUTO_TEST_CASE(shared_library_basic_test) {
- std::map<std::string, boost::reflections::reflection> reflection_map;
- boost::extensions::shared_library lib
+ std::map<std::string, reflection> reflection_map;
+ shared_library lib
("libcar_lib.extension");
BOOST_CHECK(lib.open());
- lib.get<void, std::map<std::string, boost::reflections::reflection>&>
+ lib.get<void, std::map<std::string, reflection>&>
("extension_export_car")(reflection_map);
BOOST_CHECK_EQUAL(reflection_map.size(), size_t(2));
// Let's create the reflection and add the methods
- boost::reflections::reflection & first_reflection =
+ reflection & first_reflection =
reflection_map["suv"];
- boost::reflections::reflection & second_reflection =
+ reflection & second_reflection =
reflection_map["compact"];
- boost::reflections::instance_constructor<const char *> first_constructor =
+ instance_constructor<const char *> first_constructor =
first_reflection.get_constructor<const char *>();
- boost::reflections::instance first_instance =
+ instance first_instance =
first_constructor("First Instance");
- boost::reflections::function<const char *> first_function =
+ function<const char *> first_function =
first_reflection.get_function<const char *>("get_type");
BOOST_CHECK_EQUAL(first_function(first_instance), "It's an SUV.");
- boost::reflections::instance_constructor<const char *> second_constructor =
+ instance_constructor<const char *> second_constructor =
second_reflection.get_constructor<const char *>();
- boost::reflections::instance second_instance =
+ instance second_instance =
second_constructor("Second Instance");
- boost::reflections::function<const char *> second_function =
+ function<const char *> second_function =
second_reflection.get_function<const char *>("get_type");
BOOST_CHECK_EQUAL(second_function(second_instance), "It's a compact.");
}
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