|
Boost-Commit : |
From: chochlik_at_[hidden]
Date: 2008-07-18 09:41:28
Author: matus.chochlik
Date: 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
New Revision: 47553
URL: http://svn.boost.org/trac/boost/changeset/47553
Log:
[mirror 0.2.x]
- Fixed several small bugs
- Added reflects_inheritance trait template
- Updated the documentation
Added:
sandbox/mirror/boost/mirror/traits/reflects_inheritance.hpp (contents, props changed)
sandbox/mirror/doc/html/BOOST_MIRRORED_GLOBAL_SCOPE.html (contents, props changed)
sandbox/mirror/doc/html/BOOST_MIRRORED_NAMESPACE.html (contents, props changed)
sandbox/mirror/doc/html/BOOST_MIRROR_REG_NAMESPACE.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_class.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_global_scope.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_inheritance.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_namespace.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_type.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_type_meta_type_Type___id536867.html (contents, props changed)
sandbox/mirror/doc/html/boost/mirror/reflects_virtual_inheritance.html (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/class_meta_namespace.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/macro_REG_NAMESPACE.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/macro_RFL_GLOBAL_SCOPE.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/macro_RFL_NAMESPACE.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_class.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_global_scope.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_inheritance.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_namespace.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_type.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/reference/traits/reflects_virtual_inheritance.xml (contents, props changed)
sandbox/mirror/libs/mirror/doc/samples/usage_namespaces_01.xml (contents, props changed)
Text files modified:
sandbox/mirror/boost/mirror/traits/reflects_virtual_inheritance.hpp | 16 --
sandbox/mirror/doc/html/boost/mirror/meta_class.html | 14 +-
sandbox/mirror/doc/html/boost/mirror/meta_namespace.html | 231 +++++++++++++++++++--------------------
sandbox/mirror/doc/html/boost/mirror/meta_type.html | 36 ++---
sandbox/mirror/doc/html/char_type_switch.html | 8
sandbox/mirror/doc/html/doc_HTML.manifest | 9 +
sandbox/mirror/doc/html/index.html | 2
sandbox/mirror/doc/html/mirror.html | 13 +
sandbox/mirror/doc/html/mirror/reference.html | 94 ++++++++++++++-
sandbox/mirror/libs/mirror/doc/introduction.xml | 5
sandbox/mirror/libs/mirror/doc/reference.xml | 23 +++
sandbox/mirror/libs/mirror/doc/reference/meta_namespace.xml | 191 +-------------------------------
sandbox/mirror/libs/mirror/example/registering/virtual_bases.cpp | 2
13 files changed, 278 insertions(+), 366 deletions(-)
Added: sandbox/mirror/boost/mirror/traits/reflects_inheritance.hpp
==============================================================================
--- (empty file)
+++ sandbox/mirror/boost/mirror/traits/reflects_inheritance.hpp 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,44 @@
+/**
+ * \file boost/mirror/reflects_inheritance.hpp
+ * Meta function that returns true if the given template argument
+ * is an instantiation of meta_inheritance
+ *
+ * Copyright 2008 Matus Chochlik. 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)
+ */
+
+#ifndef BOOST_MIRROR_META_REFLECTS_INHERITANCE_HPP
+#define BOOST_MIRROR_META_REFLECTS_INHERITANCE_HPP
+
+// true type/false type for trait templates
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/mirror/meta_inheritance.hpp>
+
+namespace boost {
+namespace mirror {
+
+template <class MetaObject>
+struct reflects_inheritance : public false_type { };
+
+template <
+ class Position,
+ class BaseClass,
+ class AccessSpec,
+ class VirtualSpec
+>
+struct reflects_inheritance<
+ meta_inheritance<
+ Position,
+ BaseClass,
+ AccessSpec,
+ VirtualSpec
+ >
+> : public true_type{ };
+
+
+} // namespace mirror
+} // namespace boost
+
+#endif //include guard
+
Modified: sandbox/mirror/boost/mirror/traits/reflects_virtual_inheritance.hpp
==============================================================================
--- sandbox/mirror/boost/mirror/traits/reflects_virtual_inheritance.hpp (original)
+++ sandbox/mirror/boost/mirror/traits/reflects_virtual_inheritance.hpp 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -19,7 +19,7 @@
namespace mirror {
template <class MetaObject>
-struct reflects_virtual_inheritance;
+struct reflects_virtual_inheritance : public false_type{ };
template <
class Position,
@@ -35,20 +35,6 @@
>
> : public true_type{ };
-template <
- class Position,
- class BaseClass,
- typename AccessSpec
->
-struct reflects_virtual_inheritance<
- meta_inheritance<
- Position,
- BaseClass,
- AccessSpec,
- nonvirtual_base_
- >
-> : public false_type{ };
-
} // namespace mirror
} // namespace boost
Added: sandbox/mirror/doc/html/BOOST_MIRRORED_GLOBAL_SCOPE.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/BOOST_MIRRORED_GLOBAL_SCOPE.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_MIRRORED_GLOBAL_SCOPE</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Mirror library documentation">
+<link rel="up" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp" title="Header <boost/mirror/meta_namespace.hpp>">
+<link rel="prev" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">
+<link rel="next" href="boost/mirror/meta_type.html" title="Class template meta_type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_MIRRORED_NAMESPACE.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/mirror/meta_type.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_MIRRORED_GLOBAL_SCOPE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_MIRRORED_GLOBAL_SCOPE</span></h2>
+<p>BOOST_MIRRORED_GLOBAL_SCOPE — This macro is used to reflect the global scope and expands into a specialization
+ of the <code class="computeroutput">meta_namespace</code> template, which provides
+ meta-data about the global scope.
+ To reflect a registered named namespace use the <code class="computeroutput"><a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a></code>.
+ </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">BOOST_MIRRORED_GLOBAL_SCOPE()</pre></div>
+<div class="refsect1" lang="en">
+<a name="id740545"></a><h2>Description</h2>
+<p>The <code class="computeroutput"><a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()</code> macro can be used to get
+ the meta-data about the global scope, which is registered by default by the <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> library.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.RFL_GLOBAL_SCOPE.reference.samples"></a>Examples</h6></div></div></div>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_global_scope< <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>() >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_global_scope< <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>() >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::std)::scope,
+ <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()
+ >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ BOOST_MIRRORED_TYPE(int)::scope,
+ <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()
+ >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ BOOST_MIRRORED_TYPE(::std::wstring)::scope::scope,
+ <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()
+ >
+));
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_MIRRORED_NAMESPACE.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="boost/mirror/meta_type.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/BOOST_MIRRORED_NAMESPACE.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/BOOST_MIRRORED_NAMESPACE.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,194 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_MIRRORED_NAMESPACE</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Mirror library documentation">
+<link rel="up" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp" title="Header <boost/mirror/meta_namespace.hpp>">
+<link rel="prev" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">
+<link rel="next" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_MIRROR_REG_NAMESPACE.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_MIRRORED_GLOBAL_SCOPE.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_MIRRORED_NAMESPACE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_MIRRORED_NAMESPACE</span></h2>
+<p>BOOST_MIRRORED_NAMESPACE — This macro is used to reflect a namespace and expands into a specialization
+ of the <code class="computeroutput">meta_namespace</code> template, which provides
+ meta-data about the namespace. To reflect the global scope use the
+ <code class="computeroutput"><a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a></code> macro.
+ </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">BOOST_MIRRORED_NAMESPACE(FULL_NAMESPACE_NAME)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id740390"></a><h2>Description</h2>
+<p>The <code class="computeroutput"><a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a></code> macro reflects a namespace
+ previously registered with the <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> library by the means of
+ the <code class="computeroutput"><a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a></code>.
+ The only argument of this macro is the full namespace name including the leading double colon,
+ so this is ok
+ </p>
+<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE(::boost::mirror) /* OK */</code></pre>
+<p>
+ but, neither this
+ </p>
+<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE(boost::mirror) /* Error */</code></pre>
+<p>
+ nor this
+ </p>
+<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE(mirror) /* Error */</code></pre>
+<p>
+ will work.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.RFL_NAMESPACE.reference.samples"></a>Examples</h6></div></div></div>
+<p>This example shows the registering and reflection of namespaces
+ and basic usage of the <code class="computeroutput">meta_namespace</code>
+ template class and its members.
+ </p>
+<pre class="programlisting">
+#include <boost/char_type_switch/iostream.hpp>
+#include <boost/mirror/meta_namespace.hpp>
+#include <boost/mirror/traits/reflects_namespace.hpp>
+#include <boost/mirror/traits/reflects_global_scope.hpp>
+
+#include <boost/mpl/assert.hpp>
+
+namespace foo {
+namespace bar {
+namespace baz {
+
+} //namespace baz
+} //namespace bar
+} //namespace foo
+
+// the registering must be done in the boost::mirror namespace
+namespace boost {
+namespace mirror {
+
+// register foo
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo))
+// register foo::bar
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo)(bar))
+// register foo::bar::baz
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo)(bar)(baz))
+
+} // namespace mirror
+} // namespace boost
+
+
+// prints meta-info about the global scope
+template < class MetaNamespace >
+void do_print_meta_data(::boost::true_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ cts::bostream& bcout = cts::bcout();
+ bcout <<
+ BOOST_CTS_LIT("This is the global scope") <<
+ endl <<
+ BOOST_CTS_LIT("------------------------------------") <<
+ endl;
+}
+
+// prints meta-info about named namespaces
+template < class MetaNamespace >
+void do_print_meta_data(::boost::false_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ using namespace ::boost::mirror;
+ cts::bostream& bcout = cts::bcout();
+
+ bcout <<
+ BOOST_CTS_LIT("Namespace '") <<
+ MetaNamespace::base_name() <<
+ BOOST_CTS_LIT("': ") <<
+ endl <<
+ BOOST_CTS_LIT(" - the full name is '") <<
+ MetaNamespace::full_name() <<
+ BOOST_CTS_LIT("'") <<
+ endl <<
+ BOOST_CTS_LIT(" - it's defined ");
+
+ if(reflects_global_scope<typename MetaNamespace::scope>::value)
+ bcout << BOOST_CTS_LIT(" - on the global scope ");
+ else
+ bcout << BOOST_CTS_LIT(" - in the '") <<
+ MetaNamespace::scope::full_name() <<
+ BOOST_CTS_LIT("' namespace");
+
+ bcout << endl <<
+ BOOST_CTS_LIT("------------------------------------") <<
+ endl;
+}
+
+
+
+template < class MetaNamespace >
+void print_meta_data(void)
+{
+ using namespace ::boost::mirror;
+ // check the template argument
+ BOOST_MPL_ASSERT((
+ reflects_namespace< MetaNamespace >
+ ));
+
+ // call the specialized printer based on whether
+ // the passed meta-namespace reflects the global
+ // scope or not
+ typename reflects_global_scope<MetaNamespace>::type
+ selector;
+
+ do_print_meta_data<MetaNamespace>(selector);
+}
+
+
+int main(void)
+{
+ // reflect and print meta-info about the pre-registered namespaces
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>() >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::std) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::boost) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::boost::mirror) >();
+
+ // reflect and print meta-info about the namespaces registered here
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo::bar) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo::bar::baz) >();
+
+ return 0;
+}
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_MIRROR_REG_NAMESPACE.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_MIRRORED_GLOBAL_SCOPE.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/BOOST_MIRROR_REG_NAMESPACE.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/BOOST_MIRROR_REG_NAMESPACE.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,261 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_MIRROR_REG_NAMESPACE</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="index.html" title="The Mirror library documentation">
+<link rel="up" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp" title="Header <boost/mirror/meta_namespace.hpp>">
+<link rel="prev" href="boost/mirror/meta_namespace.html" title="Class template meta_namespace">
+<link rel="next" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/mirror/meta_namespace.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_MIRRORED_NAMESPACE.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_MIRROR_REG_NAMESPACE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_MIRROR_REG_NAMESPACE</span></h2>
+<p>BOOST_MIRROR_REG_NAMESPACE — This macro is used to register a namespace with <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a>.
+ After successful registration the namespace can be reflected and can be used
+ as a scope when registering types, classes, etc.
+ </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">BOOST_MIRROR_REG_NAMESPACE(PP_SEQ)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id740165"></a><h2>Description</h2>
+<p>The <code class="computeroutput"><a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a></code> macro registers a namespace with
+ the <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> library.
+ </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 align="left" valign="top">The registering must be done in the <code class="computeroutput">::boost::mirror</code> namespace.</td></tr>
+</table></div>
+<p>
+ The only argument of this macro is a Preprocessor sequence, containing
+ the names of the namespaces from the topmost to the one being registered. For example to register
+ these namespaces,
+</p>
+<pre class="programlisting">
+namespace ns_1 {
+ namespace ns_2 {
+ namespace ns_3 {
+ //...
+ namespace ns_N {
+ } // namespace ns_N
+ // ...
+ } // namespace ns_3
+ } // namespace ns_2
+} // namespace ns_1
+</pre>
+<p>
+ use
+</p>
+<pre class="programlisting">
+// note that the registering must be done
+// in the boost::mirror namespace
+
+namespace boost {
+namespace mirror {
+
+// registers ::ns_1
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((ns_1))
+// registers ::ns_1::ns_2
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((ns_1)(ns_2))
+// registers ::ns_1::ns_2::ns_3
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((ns_1)(ns_2)(ns_3))
+// registers ::ns_1::ns_2::ns_3::...::ns_N
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((ns_1)(ns_2)(ns_3)...(ns_N))
+
+} //namespace mirror
+} //namespace boost
+</pre>
+<p>
+ and afterwards the namespaces can be reflected with the
+ <code class="computeroutput"><a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a></code> macro
+</p>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_namespace< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::ns_1) >
+));
+BOOST_MPL_ASSERT((
+ reflects_namespace< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::ns_1::ns_2::ns_3) >
+));
+BOOST_MPL_ASSERT_NOT((
+ reflects_global_scope< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::ns_1) >
+));
+BOOST_MPL_ASSERT_NOT((
+ reflects_global_scope< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::ns_1::ns_2::ns_3) >
+));
+BOOST_MPL_ASSERT((
+ reflects_global_scope< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::ns_1::ns_2)::scope::scope >
+));
+</pre>
+<p>
+ and referenced in other registering macros. The <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> has several namespaces preregistered:
+</p>
+<pre class="programlisting">
+namespace boost {
+namespace mirror {
+
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((std))
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((boost))
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((boost)(mirror))
+
+} //namespace mirror
+} //namespace boost
+</pre>
+<p>
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.REG_NAMESPACE.reference.samples"></a>Examples</h6></div></div></div>
+<p>This example shows the registering and reflection of namespaces
+ and basic usage of the <code class="computeroutput">meta_namespace</code>
+ template class and its members.
+ </p>
+<pre class="programlisting">
+#include <boost/char_type_switch/iostream.hpp>
+#include <boost/mirror/meta_namespace.hpp>
+#include <boost/mirror/traits/reflects_namespace.hpp>
+#include <boost/mirror/traits/reflects_global_scope.hpp>
+
+#include <boost/mpl/assert.hpp>
+
+namespace foo {
+namespace bar {
+namespace baz {
+
+} //namespace baz
+} //namespace bar
+} //namespace foo
+
+// the registering must be done in the boost::mirror namespace
+namespace boost {
+namespace mirror {
+
+// register foo
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo))
+// register foo::bar
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo)(bar))
+// register foo::bar::baz
+<a class="link" href="BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>((foo)(bar)(baz))
+
+} // namespace mirror
+} // namespace boost
+
+
+// prints meta-info about the global scope
+template < class MetaNamespace >
+void do_print_meta_data(::boost::true_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ cts::bostream& bcout = cts::bcout();
+ bcout <<
+ BOOST_CTS_LIT("This is the global scope") <<
+ endl <<
+ BOOST_CTS_LIT("------------------------------------") <<
+ endl;
+}
+
+// prints meta-info about named namespaces
+template < class MetaNamespace >
+void do_print_meta_data(::boost::false_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ using namespace ::boost::mirror;
+ cts::bostream& bcout = cts::bcout();
+
+ bcout <<
+ BOOST_CTS_LIT("Namespace '") <<
+ MetaNamespace::base_name() <<
+ BOOST_CTS_LIT("': ") <<
+ endl <<
+ BOOST_CTS_LIT(" - the full name is '") <<
+ MetaNamespace::full_name() <<
+ BOOST_CTS_LIT("'") <<
+ endl <<
+ BOOST_CTS_LIT(" - it's defined ");
+
+ if(reflects_global_scope<typename MetaNamespace::scope>::value)
+ bcout << BOOST_CTS_LIT(" - on the global scope ");
+ else
+ bcout << BOOST_CTS_LIT(" - in the '") <<
+ MetaNamespace::scope::full_name() <<
+ BOOST_CTS_LIT("' namespace");
+
+ bcout << endl <<
+ BOOST_CTS_LIT("------------------------------------") <<
+ endl;
+}
+
+
+
+template < class MetaNamespace >
+void print_meta_data(void)
+{
+ using namespace ::boost::mirror;
+ // check the template argument
+ BOOST_MPL_ASSERT((
+ reflects_namespace< MetaNamespace >
+ ));
+
+ // call the specialized printer based on whether
+ // the passed meta-namespace reflects the global
+ // scope or not
+ typename reflects_global_scope<MetaNamespace>::type
+ selector;
+
+ do_print_meta_data<MetaNamespace>(selector);
+}
+
+
+int main(void)
+{
+ // reflect and print meta-info about the pre-registered namespaces
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>() >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::std) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::boost) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::boost::mirror) >();
+
+ // reflect and print meta-info about the namespaces registered here
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo::bar) >();
+ print_meta_data< <a class="link" href="BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(::foo::bar::baz) >();
+
+ return 0;
+}
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/mirror/meta_namespace.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_MIRRORED_NAMESPACE.html"><img src="../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/mirror/doc/html/boost/mirror/meta_class.html
==============================================================================
--- sandbox/mirror/doc/html/boost/mirror/meta_class.html (original)
+++ sandbox/mirror/doc/html/boost/mirror/meta_class.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -7,7 +7,7 @@
<link rel="start" href="../../index.html" title="The Mirror library documentation">
<link rel="up" href="../../mirror/reference.html#header.boost.mirror.meta_class.hpp" title="Header <boost/mirror/meta_class.hpp>">
<link rel="prev" href="meta_type.html" title="Class template meta_type">
-<link rel="next" href="../../char_type_switch.html" title="Chapter 2. Char Type Switch">
+<link rel="next" href="reflects_namespace.html" title="Class template reflects_namespace">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="meta_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="meta_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_namespace.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="refentry" lang="en">
<a name="boost.mirror.meta_class"></a><div class="titlepage"></div>
@@ -44,16 +44,16 @@
</em></span>
{
<span class="bold"><strong>public</strong></span>:
- <span class="emphasis"><em>// <a class="link" href="meta_class.html#id612141-bbtypes">types</a></em></span>
+ <span class="emphasis"><em>// <a class="link" href="meta_class.html#id670432-bbtypes">types</a></em></span>
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_class.html#boost.mirror.meta_class.base_classes">base_classes</a>;
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_class.html#boost.mirror.meta_class.attributes">attributes</a>;
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_class.html#boost.mirror.meta_class.all_attributes">all_attributes</a>;
};</pre></div>
<div class="refsect1" lang="en">
-<a name="id696193"></a><h2>Description</h2>
+<a name="id743701"></a><h2>Description</h2>
<div class="refsect2" lang="en">
-<a name="id696197"></a><h3>
-<a name="id612141-bbtypes"></a><code class="computeroutput">meta_class</code> public types</h3>
+<a name="id743705"></a><h3>
+<a name="id670432-bbtypes"></a><code class="computeroutput">meta_class</code> public types</h3>
<div class="orderedlist"><ol type="1">
<li>
<p>
@@ -87,7 +87,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="meta_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="meta_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_namespace.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/mirror/doc/html/boost/mirror/meta_namespace.html
==============================================================================
--- sandbox/mirror/doc/html/boost/mirror/meta_namespace.html (original)
+++ sandbox/mirror/doc/html/boost/mirror/meta_namespace.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -7,7 +7,7 @@
<link rel="start" href="../../index.html" title="The Mirror library documentation">
<link rel="up" href="../../mirror/reference.html#header.boost.mirror.meta_namespace.hpp" title="Header <boost/mirror/meta_namespace.hpp>">
<link rel="prev" href="../../mirror/reference.html" title="Mirror Reference">
-<link rel="next" href="meta_type.html" title="Class template meta_type">
+<link rel="next" href="../../BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,63 +20,58 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../../mirror/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_type.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../mirror/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_MIRROR_REG_NAMESPACE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="refentry" lang="en">
<a name="boost.mirror.meta_namespace"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Class template meta_namespace</span></h2>
<p>boost::mirror::meta_namespace —
- This class template provides meta-data
- about the reflected namespace, especially allows to get the
- base and full namespace name and to
- get information about the scope inside of which this namespace
- has been defined.
-
- To obtain a <code class="computeroutput">meta_namespace</code> for a particular
- namespace (with the exception of the global scope) use the reflection
- macro <code class="computeroutput">BOOST_MIRRORED_NAMESPACE(FULL_NAMESPACE_NAME)</code>. To
- get the <code class="computeroutput">meta_namespace</code> specialization for
- the global scope use the <code class="computeroutput">BOOST_MIRRORED_GLOBAL_SCOPE()</code>
- macro.
- </p>
+ This class template provides meta-data
+ about the reflected namespace, especially allows to get the
+ base and full namespace name and to
+ get information about the scope inside of which this namespace
+ has been defined.
+
+ To obtain a <code class="computeroutput">meta_namespace</code> for a particular
+ namespace (with the exception of the global scope) use the reflection
+ macro <code class="computeroutput"><a class="link" href="../../BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(FULL_NAMESPACE_NAME)</code>. To
+ get the <code class="computeroutput">meta_namespace</code> specialization for
+ the global scope use the <code class="computeroutput"><a class="link" href="../../BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()</code>
+ macro.
+ </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> NamespacePlaceholder>
<span class="bold"><strong>class</strong></span> <a class="link" href="meta_namespace.html" title="Class template meta_namespace">meta_namespace</a> {
<span class="bold"><strong>public</strong></span>:
- <span class="emphasis"><em>// <a class="link" href="meta_namespace.html#id461012-bbtypes">types</a></em></span>
+ <span class="emphasis"><em>// <a class="link" href="meta_namespace.html#id494844-bbtypes">types</a></em></span>
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_namespace.html#boost.mirror.meta_namespace.scope">scope</a>;
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_namespace.html#boost.mirror.meta_namespace.ancestors">ancestors</a>;
- <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_namespace.html#id460888-bb">base_name</a>();
- <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_namespace.html#id460846-bb">full_name</a>();
+ <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_namespace.html#id494721-bb">base_name</a>();
+ <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_namespace.html#id494679-bb">full_name</a>();
<span class="bold"><strong>template</strong></span><<span class="bold"><strong>bool</strong></span> FullName, <span class="bold"><strong>typename</strong></span> CharT>
<span class="type"><span class="bold"><strong>const</strong></span> ::std::basic_string<CharT>&</span>
- <a class="link" href="meta_namespace.html#id460792-bb">get_name</a>(::boost::mpl::bool_<FullName>, ::std::char_traits<CharT>);
+ <a class="link" href="meta_namespace.html#id494626-bb">get_name</a>(::boost::mpl::bool_<FullName>, ::std::char_traits<CharT>);
};</pre></div>
<div class="refsect1" lang="en">
-<a name="id694785"></a><h2>Description</h2>
+<a name="id739619"></a><h2>Description</h2>
<p>The specializations of <code class="computeroutput">meta_type</code> can
- be used to get meta-information about the reflected types, some at compile-time and some at run-time.
- The following examples show type reflection and basic
- <code class="computeroutput">meta_type</code> usage. Mirror works with the native C++ types
- and some of the very common types like <code class="computeroutput">::std::string</code>, etc. out of the box.
- Meta-types for many other types from the standard library and Boost
- are also provided and can be <code class="computeroutput">#include</code>d when necessary.
- </p>
+ be used to get meta-information about the reflected types, some at compile-time and some at run-time.
+ The following examples show type reflection and basic
+ <code class="computeroutput">meta_type</code> usage. Mirror works with the native C++ types
+ and some of the very common types like <code class="computeroutput">::std::string</code>, etc. out of the box.
+ Meta-types for many other types from the standard library and Boost
+ are also provided and can be <code class="computeroutput">#include</code>d when necessary.
+ </p>
<div class="section" lang="en">
<div class="titlepage"></div>
-<div class="toc"><dl>
-<dt><span class="section">Example - Basic usage</span></dt>
-<dt><span class="section">Example - Scope and ancestors</span></dt>
-<dt><span class="section">Example - Generic namespace name getter</span></dt>
-</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h6 class="title">
<a name="mirror.meta_namespace.reference.sample01"></a>Example - Basic usage</h6></div></div></div>
<p>This sample code shows how to reflect a namespace and how to get its
- base and full name.
- </p>
+ base and full name.
+ </p>
<a name="mirror.reference.sample.meta_namespace.usage01"></a><pre class="programlisting">
#include <boost/char_type_switch/iostream.hpp>
#include <boost/mirror/meta_namespace.hpp>
@@ -107,11 +102,11 @@
<div class="titlepage"><div><div><h6 class="title">
<a name="mirror.meta_namespace.reference.sample02"></a>Example - Scope and ancestors</h6></div></div></div>
<p>The following example shows what can be done with the
- <code class="computeroutput">meta_namespace</code>s <code class="computeroutput">scope</code> and
- <code class="computeroutput">ancestors</code> <code class="computeroutput">typedef</code>s. It also shows the usage
- of the <code class="computeroutput">reflects_global_scope</code> trait
- template.
- </p>
+ <code class="computeroutput">meta_namespace</code>s <code class="computeroutput">scope</code> and
+ <code class="computeroutput">ancestors</code> <code class="computeroutput">typedef</code>s. It also shows the usage
+ of the <code class="computeroutput">reflects_global_scope</code> trait
+ template.
+ </p>
<a name="mirror.reference.sample.meta_namespace.usage02"></a><pre class="programlisting">
#include <boost/mpl/for_each.hpp>
#include <boost/char_type_switch/iostream.hpp>
@@ -171,18 +166,18 @@
<div class="titlepage"><div><div><h6 class="title">
<a name="mirror.meta_namespace.reference.sample03"></a>Example - Generic namespace name getter</h6></div></div></div>
<p>The <code class="computeroutput">base_name</code> and the
- <code class="computeroutput">full_name</code> methods
- are convenient but not very generic. The <code class="computeroutput">get_name</code>
- member function allows to specify the character type of the returned string and
- to specify wheter a full or just the base namespace name should be returned, based
- on compile time arguments.
- </p>
+ <code class="computeroutput">full_name</code> methods
+ are convenient but not very generic. The <code class="computeroutput">get_name</code>
+ member function allows to specify the character type of the returned string and
+ to specify wheter a full or just the base namespace name should be returned, based
+ on compile time arguments.
+ </p>
<p>The first argument must be either <code class="computeroutput">mpl::true_</code> for full type name
- or <code class="computeroutput">mpl::false_</code> for base type name and the second argument must be
- a specialization of the <code class="computeroutput">::std::char_traits</code> template with <code class="computeroutput">char</code>
- for <code class="computeroutput">::std::string</code> return value type or <code class="computeroutput">wchar_t</code> for
- <code class="computeroutput">::std::wstring</code> return value type.
- </p>
+ or <code class="computeroutput">mpl::false_</code> for base type name and the second argument must be
+ an instance of the <code class="computeroutput">::std::char_traits</code> template with <code class="computeroutput">char</code>
+ for <code class="computeroutput">::std::string</code> return value type or <code class="computeroutput">wchar_t</code> for
+ <code class="computeroutput">::std::wstring</code> return value type.
+ </p>
<a name="mirror.reference.sample.meta_namespace.usage03"></a><pre class="programlisting">
#include <iostream>
#include <boost/mirror/meta_namespace.hpp>
@@ -218,34 +213,34 @@
</div>
</div>
<div class="refsect2" lang="en">
-<a name="id694952"></a><h3>
-<a name="id461012-bbtypes"></a><code class="computeroutput">meta_namespace</code> public types</h3>
+<a name="id739786"></a><h3>
+<a name="id494844-bbtypes"></a><code class="computeroutput">meta_namespace</code> public types</h3>
<div class="orderedlist"><ol type="1">
<li>
<p>
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a name="boost.mirror.meta_namespace.scope"></a>scope;</p>
<p>A meta-object describing the scope in which the reflected namespace
- is defined. It is a specialization of <code class="computeroutput">meta_namespace</code>
- with the exception of the meta-namespace reflecting the global scope where
- this type is not defined.
- </p>
+ is defined. It is a specialization of <code class="computeroutput">meta_namespace</code>
+ with the exception of the meta-namespace reflecting the global scope where
+ this type is not defined.
+ </p>
<p>To find out whether a meta-namespace reflects the global scope
- use the <code class="computeroutput">reflects_global_scope</code> template meta-function.
- </p>
+ use the <code class="computeroutput">reflects_global_scope</code> template meta-function.
+ </p>
</li>
<li>
<p>
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a name="boost.mirror.meta_namespace.ancestors"></a>ancestors;</p>
<p>An <code class="computeroutput">mpl::vector</code> containing the <code class="computeroutput">meta_namespace</code>
- specializations for all the namespaces in which the reflected namespace is
- directly or indirectly nested (not-containing the <code class="computeroutput">meta_namespace</code>
- for the reflected namespace). The elements of this <code class="computeroutput">mpl::vector</code> are
- ordered from the <code class="computeroutput">meta_namespace</code> reflecting
- the global scope to the <code class="computeroutput">meta_namespace</code>
- reflecting the parent namespace. The following holds
- for <code class="computeroutput">meta_namespace</code>s
- reflecting any namespace with the exception of the global scope:
- </p>
+ specializations for all the namespaces in which the reflected namespace is
+ directly or indirectly nested (not-containing the <code class="computeroutput">meta_namespace</code>
+ for the reflected namespace). The elements of this <code class="computeroutput">mpl::vector</code> are
+ ordered from the <code class="computeroutput">meta_namespace</code> reflecting
+ the global scope to the <code class="computeroutput">meta_namespace</code>
+ reflecting the parent namespace. The following holds
+ for <code class="computeroutput">meta_namespace</code>s
+ reflecting any namespace with the exception of the global scope:
+ </p>
<a name="mirror.reference.sample.meta_namespace.ancestors01"></a><pre class="programlisting">
using namespace ::boost;
using namespace ::boost::mirror;
@@ -276,8 +271,8 @@
));
</pre>
<p>For the <code class="computeroutput">meta_namespace</code>
- reflecting the global scope the following holds true.
- </p>
+ reflecting the global scope the following holds true.
+ </p>
<a name="mirror.reference.sample.meta_namespace.ancestors02"></a><pre class="programlisting">
BOOST_MPL_ASSERT((
mpl::empty <
@@ -287,76 +282,76 @@
</pre>
<p>To find out whether a meta-namespace reflects the global scope
- use the <code class="computeroutput">reflects_global_scope</code> template meta-function.
- </p>
+ use the <code class="computeroutput">reflects_global_scope</code> template meta-function.
+ </p>
</li>
</ol></div>
</div>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id460888-bb"></a>base_name();</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id494721-bb"></a>base_name();</pre>
<p>This static member function returns the base name of the
- namespace reflected by a <code class="computeroutput">meta_namespace</code>.
- For example the base namespace name "returned" by the invocation of
- </p>
-<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE</code>(::boost::mirror) :: base_name()
- </pre>
+ namespace reflected by a <code class="computeroutput">meta_namespace</code>.
+ For example the base namespace name "returned" by the invocation of
+ </p>
+<pre class="programlisting"><code class="computeroutput"><a class="link" href="../../BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a></code>(::boost::mirror) :: base_name()
+ </pre>
<p>
- is <code class="computeroutput">"mirror"</code>. When a full namespace name
- <span class="bold"><strong>with</strong></span> the nested name specifier
- is needed use the <code class="computeroutput">full_name</code> member function
- instead.</p>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id460846-bb"></a>full_name();</pre>
+ is <code class="computeroutput">"mirror"</code>. When a full namespace name
+ <span class="bold"><strong>with</strong></span> the nested name specifier
+ is needed use the <code class="computeroutput">full_name</code> member function
+ instead.</p>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id494679-bb"></a>full_name();</pre>
<p>This static member function returns the full name of the
- namespace reflected by a <code class="computeroutput">meta_namespace</code>
- with the nested name specifier. For example:
- </p>
+ namespace reflected by a <code class="computeroutput">meta_namespace</code>
+ with the nested name specifier. For example:
+ </p>
<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE</code>(::boost::mirror) :: full_name()
- </pre>
+ </pre>
<p>
- returns <code class="computeroutput">"::boost::mirror"</code>. When the base namespace name
- <span class="bold"><strong>without</strong></span> the nested name specifier
- is needed use the <code class="computeroutput">base_name</code> member function
- instead.</p>
+ returns <code class="computeroutput">"::boost::mirror"</code>. When the base namespace name
+ <span class="bold"><strong>without</strong></span> the nested name specifier
+ is needed use the <code class="computeroutput">base_name</code> member function
+ instead.</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term">Notes:</span></p></td>
<td><p>The first call to this function can be expensive
- for deeply nested namespaces, because the name needs to be properly composed from
- the base namespace names, which may
- lead to multiple string concatenations. Subsequent calls to this member function
- for a concrete specialization of meta_namespace
- are usually much faster.
- </p></td>
+ for deeply nested namespaces, because the name needs to be properly composed from
+ the base namespace names, which may
+ lead to multiple string concatenations. Subsequent calls to this member function
+ for a concrete specialization of meta_namespace
+ are usually much faster.
+ </p></td>
</tr></tbody>
</table></div>
<pre class="literallayout"><span class="bold"><strong>template</strong></span><<span class="bold"><strong>bool</strong></span> FullName, <span class="bold"><strong>typename</strong></span> CharT>
<span class="type"><span class="bold"><strong>const</strong></span> ::std::basic_string<CharT>&</span>
- <a name="id460792-bb"></a>get_name(::boost::mpl::bool_<FullName> full, ::std::char_traits<CharT> cht);</pre>
+ <a name="id494626-bb"></a>get_name(::boost::mpl::bool_<FullName> full, ::std::char_traits<CharT> cht);</pre>
<p>This static member template function returns either the base name
- <span class="bold"><strong>without</strong></span> the nested name specifier
- or the full name <span class="bold"><strong>with</strong></span> the
- nested name specifier of the namespace reflected by this
- <code class="computeroutput">meta_namespace</code>,
- depending on the value of the template argument <code class="computeroutput">FullName</code>.
- Furthermore it allows to choose whether the return value type is
- <code class="computeroutput">::std::string</code> or <code class="computeroutput">::std::wstring</code> based
- on the type of the second argument.
- For example:
- </p>
+ <span class="bold"><strong>without</strong></span> the nested name specifier
+ or the full name <span class="bold"><strong>with</strong></span> the
+ nested name specifier of the namespace reflected by this
+ <code class="computeroutput">meta_namespace</code>,
+ depending on the value of the template argument <code class="computeroutput">FullName</code>.
+ Furthermore it allows to choose whether the return value type is
+ <code class="computeroutput">::std::string</code> or <code class="computeroutput">::std::wstring</code> based
+ on the type of the second argument.
+ For example:
+ </p>
<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE</code>(::boost::mirror) :: get_name(::boost::mpl::false_(), ::std::char_traits<char>())
- </pre>
+ </pre>
<p> is equivalent to calling the
- <code class="computeroutput">base_name</code> member function with the
- <code class="computeroutput">BOOST_CTS_USE_WIDE_CHARS</code> symbol undefined,
- which returns a <code class="computeroutput">::std::string</code> holding the string <code class="computeroutput">"mirror"</code> and calling
- </p>
+ <code class="computeroutput">base_name</code> member function with the
+ <code class="computeroutput">BOOST_CTS_USE_WIDE_CHARS</code> symbol undefined,
+ which returns a <code class="computeroutput">::std::string</code> holding the string <code class="computeroutput">"mirror"</code> and calling
+ </p>
<pre class="programlisting"><code class="computeroutput">BOOST_MIRRORED_NAMESPACE</code>(::boost::mirror) :: get_name(::boost::mpl::true_(), ::std::char_traits<wchar_t>())
- </pre>
+ </pre>
<p> is equivalent to calling the
- <code class="computeroutput">full_name</code> method with the
- <code class="computeroutput">BOOST_CTS_USE_WIDE_CHARS</code> symbol defined,
- which returns a <code class="computeroutput">::std::wstring</code> holding this string <code class="computeroutput">L"::boost::mirror"</code>.
- </p>
+ <code class="computeroutput">full_name</code> method with the
+ <code class="computeroutput">BOOST_CTS_USE_WIDE_CHARS</code> symbol defined,
+ which returns a <code class="computeroutput">::std::wstring</code> holding this string <code class="computeroutput">L"::boost::mirror"</code>.
+ </p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -369,7 +364,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../../mirror/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_type.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../mirror/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_MIRROR_REG_NAMESPACE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/mirror/doc/html/boost/mirror/meta_type.html
==============================================================================
--- sandbox/mirror/doc/html/boost/mirror/meta_type.html (original)
+++ sandbox/mirror/doc/html/boost/mirror/meta_type.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="The Mirror library documentation">
<link rel="up" href="../../mirror/reference.html#header.boost.mirror.meta_type.hpp" title="Header <boost/mirror/meta_type.hpp>">
-<link rel="prev" href="meta_namespace.html" title="Class template meta_namespace">
+<link rel="prev" href="../../BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">
<link rel="next" href="meta_class.html" title="Class template meta_class">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="meta_namespace.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_MIRRORED_GLOBAL_SCOPE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="refentry" lang="en">
<a name="boost.mirror.meta_type"></a><div class="titlepage"></div>
@@ -44,17 +44,17 @@
<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> Type>
<span class="bold"><strong>class</strong></span> <a class="link" href="meta_type.html" title="Class template meta_type">meta_type</a> {
<span class="bold"><strong>public</strong></span>:
- <span class="emphasis"><em>// <a class="link" href="meta_type.html#id460402-bbtypes">types</a></em></span>
+ <span class="emphasis"><em>// <a class="link" href="meta_type.html#id670745-bbtypes">types</a></em></span>
<span class="bold"><strong>typedef</strong></span> Type <a class="link" href="meta_type.html#boost.mirror.meta_type.reflected_type">reflected_type</a>;
<span class="bold"><strong>typedef</strong></span> <span class="emphasis"><em>unspecified</em></span> <a class="link" href="meta_type.html#boost.mirror.meta_type.scope">scope</a>;
- <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_type.html#id460341-bb">base_name</a>();
- <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_type.html#id460281-bb">full_name</a>();
+ <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_type.html#id669385-bb">base_name</a>();
+ <span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a class="link" href="meta_type.html#id671185-bb">full_name</a>();
<span class="bold"><strong>template</strong></span><<span class="bold"><strong>bool</strong></span> FullName, <span class="bold"><strong>typename</strong></span> CharT>
<span class="type"><span class="bold"><strong>const</strong></span> ::std::basic_string<CharT>&</span>
- <a class="link" href="meta_type.html#id460216-bb">get_name</a>(::boost::mpl::bool_<FullName>, ::std::char_traits<CharT>);
+ <a class="link" href="meta_type.html#id670572-bb">get_name</a>(::boost::mpl::bool_<FullName>, ::std::char_traits<CharT>);
};</pre></div>
<div class="refsect1" lang="en">
-<a name="id695492"></a><h2>Description</h2>
+<a name="id740815"></a><h2>Description</h2>
<p>The specializations of <code class="computeroutput">meta_type</code> can
be used to get meta-information about the reflected types, some at compile-time and some at run-time.
The following examples show type reflection and basic
@@ -65,17 +65,11 @@
</p>
<div class="section" lang="en">
<div class="titlepage"></div>
-<div class="toc"><dl>
-<dt><span class="section">Example - Basic usage</span></dt>
-<dt><span class="section">Example - Using with typeof and getting scope-related information</span></dt>
-<dt><span class="section">Example - Reflection of typedef
-ined types</span></dt>
-<dt><span class="section">Example - Generic typename getter</span></dt>
-</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h6 class="title">
<a name="mirror.meta_type.reference.sample01"></a>Example - Basic usage</h6></div></div></div>
<p>This sample code shows how to reflect a type and how to get its full type name.
- Since various specializations of <code class="computeroutput">::std::pair</code> are reflected,
+ Since various instances of <code class="computeroutput">::std::pair</code> are reflected,
the <code class="computeroutput">meta_type</code>s for this template need to be
included.
</p>
@@ -248,7 +242,7 @@
</p>
<p>The first argument must be either <code class="computeroutput">mpl::true_</code> for full type name
or <code class="computeroutput">mpl::false_</code> for base type name and the second argument must be
- a specialization of the <code class="computeroutput">::std::char_traits</code> template with <code class="computeroutput">char</code>
+ an instance of the <code class="computeroutput">::std::char_traits</code> template with <code class="computeroutput">char</code>
for <code class="computeroutput">::std::string</code> return value type or <code class="computeroutput">wchar_t</code> for
<code class="computeroutput">::std::wstring</code> return value type.
</p>
@@ -287,8 +281,8 @@
</div>
</div>
<div class="refsect2" lang="en">
-<a name="id695701"></a><h3>
-<a name="id460402-bbtypes"></a><code class="computeroutput">meta_type</code> public types</h3>
+<a name="id741024"></a><h3>
+<a name="id670745-bbtypes"></a><code class="computeroutput">meta_type</code> public types</h3>
<div class="orderedlist"><ol type="1">
<li>
<p>
@@ -307,7 +301,7 @@
</li>
</ol></div>
</div>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id460341-bb"></a>base_name();</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id669385-bb"></a>base_name();</pre>
<p>This static member function returns the base name of the
type reflected by <code class="computeroutput">meta_type</code>
without the nested name specifier. For example:
@@ -337,7 +331,7 @@
</p></td>
</tr></tbody>
</table></div>
-<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id460281-bb"></a>full_name();</pre>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> cts::bstring&</span> <a name="id671185-bb"></a>full_name();</pre>
<p>This static member function returns the full name of the
type reflected by <code class="computeroutput">meta_type</code>
with the nested name specifier. For example:
@@ -369,7 +363,7 @@
</table></div>
<pre class="literallayout"><span class="bold"><strong>template</strong></span><<span class="bold"><strong>bool</strong></span> FullName, <span class="bold"><strong>typename</strong></span> CharT>
<span class="type"><span class="bold"><strong>const</strong></span> ::std::basic_string<CharT>&</span>
- <a name="id460216-bb"></a>get_name(::boost::mpl::bool_<FullName> full, ::std::char_traits<CharT> cht);</pre>
+ <a name="id670572-bb"></a>get_name(::boost::mpl::bool_<FullName> full, ::std::char_traits<CharT> cht);</pre>
<p>This static member template function returns either the base name
<span class="bold"><strong>without</strong></span> the nested name specifier
or the full name <span class="bold"><strong>with</strong></span> the
@@ -412,7 +406,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="meta_namespace.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../BOOST_MIRRORED_GLOBAL_SCOPE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.meta_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="meta_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_class.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_class.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,78 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_class</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_class.hpp" title="Header <boost/mirror/traits/reflects_class.hpp>">
+<link rel="prev" href="reflects_type.html" title="Class template reflects_type">
+<link rel="next" href="reflects_inheritance.html" title="Class template reflects_inheritance">
+</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="reflects_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_inheritance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_class"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_class</span></h2>
+<p>boost::mirror::reflects_class — If <code class="computeroutput">MetaObject</code> is an instantiation of
+ <code class="computeroutput">meta_class</code>, then <code class="computeroutput">reflects_class</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaObject>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_class.html" title="Class template reflects_class">reflects_class</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id744410"></a><h2>Description</h2>
+<p>This template can be used to distinguish whether the opaque <code class="computeroutput">MetaObject</code> type reflects a class
+ and thus is an instantiation of <code class="computeroutput">meta_class</code>.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.reflects_class.reference.samples"></a>Examples</h6></div></div></div>
+<pre class="programlisting">
+BOOST_MPL_ASSERT_NOT((
+ reflects_class< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_class< BOOST_MIRRORED_CLASS(::std::string) >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT_NOT((
+ reflects_class< BOOST_MIRRORED_CLASS(::std::string)::scope >
+));
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_class.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_inheritance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_global_scope.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_global_scope.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,94 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_global_scope</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_global_scope.hpp" title="Header <boost/mirror/traits/reflects_global_scope.hpp>">
+<link rel="prev" href="reflects_namespace.html" title="Class template reflects_namespace">
+<link rel="next" href="reflects_type.html" title="Class template reflects_type">
+</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="reflects_namespace.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_global_scope.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_type.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_global_scope"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_global_scope</span></h2>
+<p>boost::mirror::reflects_global_scope — If <code class="computeroutput">MetaObject</code> is the specialization of <code class="computeroutput">meta_namespace</code>,
+ reflecting the global scope,
+ then <code class="computeroutput">reflects_global_scope</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaObject>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_global_scope.html" title="Class template reflects_global_scope">reflects_global_scope</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id744065"></a><h2>Description</h2>
+<p>This template can be used to distinguish whether the opaque <code class="computeroutput">MetaObject</code> type reflects the global scope
+ and thus is an instantiation of <code class="computeroutput">meta_namespace</code> for the global scope.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.reflects_global_scope.reference.samples"></a>Examples</h6></div></div></div>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_GLOBAL_SCOPE() >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ !reflects_global_scope< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ !reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(int)::scope >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string)::scope::scope >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT_NOT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string)::scope >
+));
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_namespace.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_global_scope.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_type.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_inheritance.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_inheritance.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_inheritance</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_inheritance.hpp" title="Header <boost/mirror/traits/reflects_inheritance.hpp>">
+<link rel="prev" href="reflects_class.html" title="Class template reflects_class">
+<link rel="next" href="reflects_virtual_inheritance.html" title="Class template reflects_virtual_inheritance">
+</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="reflects_class.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_inheritance.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_virtual_inheritance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_inheritance"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_inheritance</span></h2>
+<p>boost::mirror::reflects_inheritance — If <code class="computeroutput">MetaObject</code> is an instantiation of <code class="computeroutput">meta_inheritance</code>,
+ then <code class="computeroutput">reflects_inheritance</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaObject>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_inheritance.html" title="Class template reflects_inheritance">reflects_inheritance</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_class.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_inheritance.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_virtual_inheritance.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_namespace.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_namespace.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_namespace</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_namespace.hpp" title="Header <boost/mirror/traits/reflects_namespace.hpp>">
+<link rel="prev" href="meta_class.html" title="Class template meta_class">
+<link rel="next" href="reflects_global_scope.html" title="Class template reflects_global_scope">
+</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="meta_class.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_global_scope.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_namespace"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_namespace</span></h2>
+<p>boost::mirror::reflects_namespace — If <code class="computeroutput">MetaObject</code> is an instantiation of <code class="computeroutput">meta_namespace</code>,
+ then <code class="computeroutput">reflects_namespace</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaObject>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_namespace.html" title="Class template reflects_namespace">reflects_namespace</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id743893"></a><h2>Description</h2>
+<p>This template can be used to distinguish whether the opaque <code class="computeroutput">MetaObject</code> type reflects a namespace
+ and thus is an instantiation of <code class="computeroutput">meta_namespace</code>.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.reflects_namespace.reference.samples"></a>Examples</h6></div></div></div>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string)::scope >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ !reflects_namespace< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string)::scope >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT_NOT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="meta_class.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_namespace.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_global_scope.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_type.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_type.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_type</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp" title="Header <boost/mirror/traits/reflects_type.hpp>">
+<link rel="prev" href="reflects_global_scope.html" title="Class template reflects_global_scope">
+<link rel="next" href="reflects_class.html" title="Class template reflects_class">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reflects_global_scope.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_type"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_type</span></h2>
+<p>boost::mirror::reflects_type — If <code class="computeroutput">MetaObject</code> is either an instantiation of <code class="computeroutput">meta_type</code>
+ or <code class="computeroutput">meta_class</code>, then <code class="computeroutput">reflects_type</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaObject>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_type.html" title="Class template reflects_type">reflects_type</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id744240"></a><h2>Description</h2>
+<p>This template can be used to distinguish whether the opaque <code class="computeroutput">MetaObject</code> type reflects a type or a class
+ and thus is an instantiation of <code class="computeroutput">meta_type</code>.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="mirror.reflects_type.reference.samples"></a>Examples</h6></div></div></div>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_type< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ reflects_type< BOOST_MIRRORED_CLASS(::std::pair<int, ::std::string>) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ !reflects_type< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_STATIC_ASSERT((
+ !reflects_type< BOOST_MIRRORED_TYPE(::std::string)::scope >::value
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT((
+ reflects_type< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</pre>
+<pre class="programlisting">
+BOOST_MPL_ASSERT_NOT((
+ reflects_type< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >
+));
+</pre>
+</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_global_scope.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reflects_class.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_type_meta_type_Type___id536867.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_type_meta_type_Type___id536867.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_type<meta_type<Type>></title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp" title="Header <boost/mirror/traits/reflects_type.hpp>">
+<link rel="prev" href="reflects_type.html" title="Class template reflects_type">
+<link rel="next" href="../../char_type_switch.html" title="Chapter 2. Char Type Switch">
+</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="reflects_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_type<meta_type<Type>>_id536867"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_type<meta_type<Type>></span></h2>
+<p>boost::mirror::reflects_type<meta_type<Type>></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> Type>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_type_meta_type_Type___id536867.html" title="Class template reflects_type<meta_type<Type>>">reflects_type</a><meta_type<Type>> : <span class="bold"><strong>public</strong></span> <span class="type">::boost::true_type</span> {
+};</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_type.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_type.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/mirror/doc/html/boost/mirror/reflects_virtual_inheritance.html
==============================================================================
--- (empty file)
+++ sandbox/mirror/doc/html/boost/mirror/reflects_virtual_inheritance.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template reflects_virtual_inheritance</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="The Mirror library documentation">
+<link rel="up" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_virtual_inheritance.hpp" title="Header <boost/mirror/traits/reflects_virtual_inheritance.hpp>">
+<link rel="prev" href="reflects_inheritance.html" title="Class template reflects_inheritance">
+<link rel="next" href="../../char_type_switch.html" title="Chapter 2. Char Type Switch">
+</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="reflects_inheritance.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_virtual_inheritance.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.mirror.reflects_virtual_inheritance"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template reflects_virtual_inheritance</span></h2>
+<p>boost::mirror::reflects_virtual_inheritance — If <code class="computeroutput">MetaInheritance</code> is a specialization of <code class="computeroutput">meta_inheritance</code>
+ reflecting virtual inheritance,
+ then <code class="computeroutput">reflects_virtual_inheritance</code>
+ inherits from <code class="computeroutput">::boost::true_type</code>. Otherwise it inherits from
+ <code class="computeroutput">::boost::false_type</code>.
+ </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> MetaInheritance>
+<span class="bold"><strong>class</strong></span> <a class="link" href="reflects_virtual_inheritance.html" title="Class template reflects_virtual_inheritance">reflects_virtual_inheritance</a> : <span class="bold"><strong>public</strong></span> <span class="type">false_type-or-true_type</span> {
+};</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 Matúš Chochlík<p>Use, modification and distribution is subject to the Boost
+ Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> 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="reflects_inheritance.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../mirror/reference.html#header.boost.mirror.traits.reflects_virtual_inheritance.hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../char_type_switch.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/mirror/doc/html/char_type_switch.html
==============================================================================
--- sandbox/mirror/doc/html/char_type_switch.html (original)
+++ sandbox/mirror/doc/html/char_type_switch.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="The Mirror library documentation">
<link rel="up" href="libraries.html" title="Part I. Libraries">
-<link rel="prev" href="boost/mirror/meta_class.html" title="Class template meta_class">
+<link rel="prev" href="boost/mirror/reflects_virtual_inheritance.html" title="Class template reflects_virtual_inheritance">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -19,7 +19,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="boost/mirror/meta_class.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a>
+<a accesskey="p" href="boost/mirror/reflects_virtual_inheritance.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a>
</div>
<div class="chapter" lang="en">
<div class="titlepage"><div>
@@ -33,7 +33,7 @@
</div></div>
<div><p class="copyright">Copyright © 2008 Matúš Chochlík</p></div>
<div><div class="legalnotice">
-<a name="id696308"></a><p>Use, modification and distribution is subject to the Boost
+<a name="id744723"></a><p>Use, modification and distribution is subject to the Boost
Software License, Version 1.0. (See accompanying file
<code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -172,7 +172,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="boost/mirror/meta_class.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a>
+<a accesskey="p" href="boost/mirror/reflects_virtual_inheritance.html"><img src="../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><img src="../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/html/images/home.png" alt="Home"></a>
</div>
</body>
</html>
Modified: sandbox/mirror/doc/html/doc_HTML.manifest
==============================================================================
--- sandbox/mirror/doc/html/doc_HTML.manifest (original)
+++ sandbox/mirror/doc/html/doc_HTML.manifest 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -5,6 +5,15 @@
mirror/tutorial.html
mirror/reference.html
boost/mirror/meta_namespace.html
+BOOST_MIRROR_REG_NAMESPACE.html
+BOOST_MIRRORED_NAMESPACE.html
+BOOST_MIRRORED_GLOBAL_SCOPE.html
boost/mirror/meta_type.html
boost/mirror/meta_class.html
+boost/mirror/reflects_namespace.html
+boost/mirror/reflects_global_scope.html
+boost/mirror/reflects_type.html
+boost/mirror/reflects_class.html
+boost/mirror/reflects_inheritance.html
+boost/mirror/reflects_virtual_inheritance.html
char_type_switch.html
Modified: sandbox/mirror/doc/html/index.html
==============================================================================
--- sandbox/mirror/doc/html/index.html (original)
+++ sandbox/mirror/doc/html/index.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -21,7 +21,7 @@
<div class="book" lang="en">
<div class="titlepage">
<div><div><h1 class="title">
-<a name="id592739"></a>The Mirror library documentation</h1></div></div>
+<a name="id637522"></a>The Mirror library documentation</h1></div></div>
<hr>
</div>
<div class="toc">
Modified: sandbox/mirror/doc/html/mirror.html
==============================================================================
--- sandbox/mirror/doc/html/mirror.html (original)
+++ sandbox/mirror/doc/html/mirror.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -34,7 +34,7 @@
</div></div>
<div><p class="copyright">Copyright © 2008 Matúš Chochlík</p></div>
<div><div class="legalnotice">
-<a name="id694223"></a><p>Use, modification and distribution is subject to the Boost
+<a name="id739006"></a><p>Use, modification and distribution is subject to the Boost
Software License, Version 1.0. (See accompanying file
<code class="filename">LICENSE_1_0.txt</code> or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -51,9 +51,9 @@
<dt><span class="section">Tutorial</span></dt>
<dt><span class="section">Mirror Reference</span></dt>
<dd><dl>
-<dt><span class="section">Header <boost/mirror/meta_namespace.hpp></span></dt>
-<dt><span class="section">Header <boost/mirror/meta_type.hpp></span></dt>
-<dt><span class="section">Header <boost/mirror/meta_class.hpp></span></dt>
+<dt><span class="section">Meta Objects</span></dt>
+<dt><span class="section">Traits</span></dt>
+<dt><span class="section">Header files</span></dt>
</dl></dd>
</dl>
</div>
@@ -95,7 +95,7 @@
</p>
<p>
<a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> is designed with the principle of stratification
- in mind and tries to be as less intrusive as possible. New classes do not need
+ in mind and tries to be as less intrusive as possible. New or existing classes do not need
to be designed to directly support <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a>
and no <a class="link" href="mirror.html" title="Chapter 1. Mirror">Mirror</a> related code is necessary
in the class' definition, as far as some general guidelines are followed
@@ -154,6 +154,9 @@
</p>
<div class="itemizedlist"><ul type="disc">
<li>
+ Reflection of class' member functions and constructors.
+ </li>
+<li>
Facility for generating customizable object factories with a uniform interface.
</li>
<li>
Modified: sandbox/mirror/doc/html/mirror/reference.html
==============================================================================
--- sandbox/mirror/doc/html/mirror/reference.html (original)
+++ sandbox/mirror/doc/html/mirror/reference.html 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -26,15 +26,38 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="mirror.reference"></a>Mirror Reference</h2></div></div></div>
<div class="toc"><dl>
-<dt><span class="section">Header <boost/mirror/meta_namespace.hpp></span></dt>
-<dt><span class="section">Header <boost/mirror/meta_type.hpp></span></dt>
-<dt><span class="section">Header <boost/mirror/meta_class.hpp></span></dt>
+<dt><span class="section">Meta Objects</span></dt>
+<dt><span class="section">Traits</span></dt>
+<dt><span class="section">Header files</span></dt>
</dl></div>
<p>
</p>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="id739386"></a>Meta Objects</h3></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title">
+<a name="id739393"></a>Traits</h3></div></div></div></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="header.boost.mirror.meta_namespace.hpp"></a>Header <boost/mirror/meta_namespace.hpp></h3></div></div></div>
+<a name="id739400"></a>Header files</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/mirror/meta_namespace.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/meta_type.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/meta_class.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_namespace.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_global_scope.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_type.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_class.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_inheritance.hpp></span></dt>
+<dt><span class="section">Header <boost/mirror/traits/reflects_virtual_inheritance.hpp></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.meta_namespace.hpp"></a>Header <boost/mirror/meta_namespace.hpp></h4></div></div></div>
+<pre class="synopsis">
+
+<a class="link" href="../BOOST_MIRROR_REG_NAMESPACE.html" title="Macro BOOST_MIRROR_REG_NAMESPACE">BOOST_MIRROR_REG_NAMESPACE</a>(PP_SEQ)
+<a class="link" href="../BOOST_MIRRORED_NAMESPACE.html" title="Macro BOOST_MIRRORED_NAMESPACE">BOOST_MIRRORED_NAMESPACE</a>(FULL_NAMESPACE_NAME)
+<a class="link" href="../BOOST_MIRRORED_GLOBAL_SCOPE.html" title="Macro BOOST_MIRRORED_GLOBAL_SCOPE">BOOST_MIRRORED_GLOBAL_SCOPE</a>()</pre>
<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
<span class="bold"><strong>namespace</strong></span> mirror {
<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> NamespacePlaceholder> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/meta_namespace.html" title="Class template meta_namespace">meta_namespace</a>;
@@ -42,8 +65,8 @@
}</pre>
</div>
<div class="section" lang="en">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="header.boost.mirror.meta_type.hpp"></a>Header <boost/mirror/meta_type.hpp></h3></div></div></div>
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.meta_type.hpp"></a>Header <boost/mirror/meta_type.hpp></h4></div></div></div>
<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
<span class="bold"><strong>namespace</strong></span> mirror {
<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> Type> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/meta_type.html" title="Class template meta_type">meta_type</a>;
@@ -51,14 +74,69 @@
}</pre>
</div>
<div class="section" lang="en">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="header.boost.mirror.meta_class.hpp"></a>Header <boost/mirror/meta_class.hpp></h3></div></div></div>
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.meta_class.hpp"></a>Header <boost/mirror/meta_class.hpp></h4></div></div></div>
<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
<span class="bold"><strong>namespace</strong></span> mirror {
<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> Class> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/meta_class.html" title="Class template meta_class">meta_class</a>;
}
}</pre>
</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_namespace.hpp"></a>Header <boost/mirror/traits/reflects_namespace.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaObject> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_namespace.html" title="Class template reflects_namespace">reflects_namespace</a>;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_global_scope.hpp"></a>Header <boost/mirror/traits/reflects_global_scope.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaObject> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_global_scope.html" title="Class template reflects_global_scope">reflects_global_scope</a>;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_type.hpp"></a>Header <boost/mirror/traits/reflects_type.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaObject> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_type.html" title="Class template reflects_type">reflects_type</a>;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_class.hpp"></a>Header <boost/mirror/traits/reflects_class.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaObject> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_class.html" title="Class template reflects_class">reflects_class</a>;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_inheritance.hpp"></a>Header <boost/mirror/traits/reflects_inheritance.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaObject> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_inheritance.html" title="Class template reflects_inheritance">reflects_inheritance</a>;
+ }
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.mirror.traits.reflects_virtual_inheritance.hpp"></a>Header <boost/mirror/traits/reflects_virtual_inheritance.hpp></h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>namespace</strong></span> mirror {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> MetaInheritance> <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/mirror/reflects_virtual_inheritance.html" title="Class template reflects_virtual_inheritance">reflects_virtual_inheritance</a>;
+ }
+}</pre>
+</div>
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Modified: sandbox/mirror/libs/mirror/doc/introduction.xml
==============================================================================
--- sandbox/mirror/libs/mirror/doc/introduction.xml (original)
+++ sandbox/mirror/libs/mirror/doc/introduction.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -29,7 +29,7 @@
</para>
<para>
<libraryname>Mirror</libraryname> is designed with the principle of stratification
- in mind and tries to be as less intrusive as possible. New classes do not need
+ in mind and tries to be as less intrusive as possible. New or existing classes do not need
to be designed to directly support <libraryname>Mirror</libraryname>
and no <libraryname>Mirror</libraryname> related code is necessary
in the class' definition, as far as some general guidelines are followed
@@ -92,6 +92,9 @@
<itemizedlist>
<listitem>
+ Reflection of class' member functions and constructors.
+ </listitem>
+ <listitem>
Facility for generating customizable object factories with a uniform interface.
</listitem>
<listitem>
Modified: sandbox/mirror/libs/mirror/doc/reference.xml
==============================================================================
--- sandbox/mirror/libs/mirror/doc/reference.xml (original)
+++ sandbox/mirror/libs/mirror/doc/reference.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -6,8 +6,25 @@
<para>
</para>
- <xi:include href="reference/meta_namespace.xml"/>
- <xi:include href="reference/meta_type.xml"/>
- <xi:include href="reference/meta_class.xml"/>
+ <section>
+ <title>Meta Objects</title>
+ </section>
+ <section>
+ <title>Traits</title>
+ </section>
+ <section>
+ <title>Header files</title>
+ <xi:include href="reference/meta_namespace.xml"/>
+ <xi:include href="reference/meta_type.xml"/>
+ <xi:include href="reference/meta_class.xml"/>
+
+ <xi:include href="reference/traits/reflects_namespace.xml"/>
+ <xi:include href="reference/traits/reflects_global_scope.xml"/>
+ <xi:include href="reference/traits/reflects_type.xml"/>
+ <xi:include href="reference/traits/reflects_class.xml"/>
+
+ <xi:include href="reference/traits/reflects_inheritance.xml"/>
+ <xi:include href="reference/traits/reflects_virtual_inheritance.xml"/>
+ </section>
</library-reference>
Added: sandbox/mirror/libs/mirror/doc/reference/class_meta_namespace.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/class_meta_namespace.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<class name="meta_namespace">
+ <template>
+ <template-type-parameter name="NamespacePlaceholder"/>
+ </template>
+ <purpose>
+ <para>
+ This class template provides meta-data
+ about the reflected namespace, especially allows to get the
+ base and full namespace name and to
+ get information about the scope inside of which this namespace
+ has been defined.
+ </para>
+ <para>
+ To obtain a <code><classname>meta_namespace</classname></code> for a particular
+ namespace (with the exception of the global scope) use the reflection
+ macro <code><macroname>BOOST_MIRRORED_NAMESPACE</macroname>(FULL_NAMESPACE_NAME)</code>. To
+ get the <code><classname>meta_namespace</classname></code> specialization for
+ the global scope use the <code><macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()</code>
+ macro.
+ </para>
+ </purpose>
+ <description>
+ <para>The specializations of <code><classname>meta_type</classname></code> can
+ be used to get meta-information about the reflected types, some at compile-time and some at run-time.
+ The following examples show type reflection and basic
+ <code><classname>meta_type</classname></code> usage. Mirror works with the native C++ types
+ and some of the very common types like <code>::std::string</code>, etc. out of the box.
+ Meta-types for many other types from the standard library and <libraryname>Boost</libraryname>
+ are also provided and can be <code>#include</code>d when necessary.
+ </para>
+ <section id="mirror.meta_namespace.reference.samples">
+ <section id="mirror.meta_namespace.reference.sample01">
+ <title>Example - Basic usage</title>
+ <para>This sample code shows how to reflect a namespace and how to get its
+ base and full name.
+ </para>
+ <xi:include href="../samples/usage_meta_namespace_01.xml"/>
+ </section>
+ <section id="mirror.meta_namespace.reference.sample02">
+ <title>Example - Scope and ancestors</title>
+ <para>The following example shows what can be done with the
+ <code><classname>meta_namespace</classname></code>s <code>scope</code> and
+ <code>ancestors</code> <code>typedef</code>s. It also shows the usage
+ of the <code><classname>reflects_global_scope</classname></code> trait
+ template.
+ </para>
+ <xi:include href="../samples/usage_meta_namespace_02.xml"/>
+ </section>
+ <section id="mirror.meta_namespace.reference.sample03">
+ <title>Example - Generic namespace name getter</title>
+ <para>The <code><methodname>base_name</methodname></code> and the
+ <code><methodname>full_name</methodname></code> methods
+ are convenient but not very generic. The <code><methodname>get_name</methodname></code>
+ member function allows to specify the character type of the returned string and
+ to specify wheter a full or just the base namespace name should be returned, based
+ on compile time arguments.
+ </para>
+ <para>The first argument must be either <code>mpl::true_</code> for full type name
+ or <code>mpl::false_</code> for base type name and the second argument must be
+ an instance of the <code>::std::char_traits</code> template with <code>char</code>
+ for <code>::std::string</code> return value type or <code>wchar_t</code> for
+ <code>::std::wstring</code> return value type.
+ </para>
+ <xi:include href="../samples/usage_meta_namespace_03.xml"/>
+ </section>
+ </section>
+ </description>
+
+ <access name="public">
+ <typedef name="scope">
+ <type><emphasis>unspecified</emphasis></type>
+ <purpose>Meta-namespace describing the scope where the reflected namespace is defined</purpose>
+ <description>
+ <para>A meta-object describing the scope in which the reflected namespace
+ is defined. It is a specialization of <code><classname>meta_namespace</classname></code>
+ with the exception of the meta-namespace reflecting the global scope where
+ this type is not defined.
+ </para>
+ <para>To find out whether a meta-namespace reflects the global scope
+ use the <code><classname>reflects_global_scope</classname></code> template meta-function.
+ </para>
+ </description>
+ </typedef>
+ <typedef name="ancestors">
+ <type><emphasis>unspecified</emphasis></type>
+ <purpose>mpl::vector containing the whole path to the reflected namespace</purpose>
+ <description>
+ <para>An <code>mpl::vector</code> containing the <code><classname>meta_namespace</classname></code>
+ specializations for all the namespaces in which the reflected namespace is
+ directly or indirectly nested (not-containing the <code><classname>meta_namespace</classname></code>
+ for the reflected namespace). The elements of this <code>mpl::vector</code> are
+ ordered from the <code><classname>meta_namespace</classname></code> reflecting
+ the global scope to the <code><classname>meta_namespace</classname></code>
+ reflecting the parent namespace. The following holds
+ for <code><classname>meta_namespace</classname></code>s
+ reflecting any namespace with the exception of the global scope:
+ </para>
+ <xi:include href="../samples/meta_namespace_ancestors_01.xml"/>
+ <para>For the <code><classname>meta_namespace</classname></code>
+ reflecting the global scope the following holds true.
+ </para>
+ <xi:include href="../samples/meta_namespace_ancestors_02.xml"/>
+ <para>To find out whether a meta-namespace reflects the global scope
+ use the <code><classname>reflects_global_scope</classname></code> template meta-function.
+ </para>
+ </description>
+ </typedef>
+ <method name="base_name">
+ <type>const <classname>cts::bstring</classname>&</type>
+ <purpose>
+ <para>This static member function returns the base name of the
+ namespace reflected by a <code><classname>meta_namespace</classname></code>.
+ For example the base namespace name "returned" by the invocation of
+ <programlisting><macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::boost::mirror) :: base_name()
+ </programlisting>
+ is <code>"mirror"</code>. When a full namespace name
+ <emphasis role="bold">with</emphasis> the nested name specifier
+ is needed use the <methodname>full_name</methodname> member function
+ instead.</para>
+ </purpose>
+ </method>
+ <method name="full_name">
+ <type>const <classname>cts::bstring</classname>&</type>
+ <purpose>
+ <para>This static member function returns the full name of the
+ namespace reflected by a <code><classname>meta_namespace</classname></code>
+ with the nested name specifier. For example:
+ <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: full_name()
+ </programlisting>
+ returns <code>"::boost::mirror"</code>. When the base namespace name
+ <emphasis role="bold">without</emphasis> the nested name specifier
+ is needed use the <methodname>base_name</methodname> member function
+ instead.</para>
+ </purpose>
+ <notes>
+ <para>The first call to this function can be expensive
+ for deeply nested namespaces, because the name needs to be properly composed from
+ the base namespace names, which may
+ lead to multiple string concatenations. Subsequent calls to this member function
+ for a concrete specialization of <classname>meta_namespace</classname>
+ are usually much faster.
+ </para>
+ </notes>
+ </method>
+ <method name="get_name">
+ <template>
+ <template-nontype-parameter name="FullName">
+ <type>bool</type>
+ </template-nontype-parameter>
+ <template-type-parameter name="CharT"/>
+ </template>
+ <type>const <classname>::std::basic_string<CharT></classname>&</type>
+ <parameter name="full">
+ <paramtype>::boost::mpl::bool_<FullName></paramtype>
+ </parameter>
+ <parameter name="cht">
+ <paramtype>::std::char_traits<CharT></paramtype>
+ </parameter>
+ <purpose>
+ <para>This static member template function returns either the base name
+ <emphasis role="bold">without</emphasis> the nested name specifier
+ or the full name <emphasis role="bold">with</emphasis> the
+ nested name specifier of the namespace reflected by this
+ <code><classname>meta_namespace</classname></code>,
+ depending on the value of the template argument <code>FullName</code>.
+ Furthermore it allows to choose whether the return value type is
+ <code>::std::string</code> or <code>::std::wstring</code> based
+ on the type of the second argument.
+ For example:
+ <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: get_name(::boost::mpl::false_(), ::std::char_traits<char>())
+ </programlisting> is equivalent to calling the
+ <code><methodname>base_name</methodname></code> member function with the
+ <code><macroname>BOOST_CTS_USE_WIDE_CHARS</macroname></code> symbol undefined,
+ which returns a <code>::std::string</code> holding the string <code>"mirror"</code> and calling
+ <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: get_name(::boost::mpl::true_(), ::std::char_traits<wchar_t>())
+ </programlisting> is equivalent to calling the
+ <code><methodname>full_name</methodname></code> method with the
+ <code><macroname>BOOST_CTS_USE_WIDE_CHARS</macroname></code> symbol defined,
+ which returns a <code>::std::wstring</code> holding this string <code>L"::boost::mirror"</code>.
+ </para>
+ </purpose>
+ </method>
+ </access>
+</class>
+
Added: sandbox/mirror/libs/mirror/doc/reference/macro_REG_NAMESPACE.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/macro_REG_NAMESPACE.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<macro name="BOOST_MIRROR_REG_NAMESPACE" kind="functionlike">
+ <macro-parameter name="PP_SEQ">
+ </macro-parameter>
+ <purpose>
+ <para>This macro is used to register a namespace with <libraryname>Mirror</libraryname>.
+ After successful registration the namespace can be reflected and can be used
+ as a scope when registering types, classes, etc.
+ </para>
+ </purpose>
+ <description>
+ <para>The <code><macroname>BOOST_MIRROR_REG_NAMESPACE</macroname></code> macro registers a namespace with
+ the <libraryname>Mirror</libraryname> library.
+ <note>The registering must be done in the <code>::boost::mirror</code> namespace.</note>
+ The only argument of this macro is a <libraryname>Preprocessor</libraryname> sequence, containing
+ the names of the namespaces from the topmost to the one being registered. For example to register
+ these namespaces,
+<programlisting>
+namespace ns_1 {
+ namespace ns_2 {
+ namespace ns_3 {
+ //...
+ namespace ns_N {
+ } // namespace ns_N
+ // ...
+ } // namespace ns_3
+ } // namespace ns_2
+} // namespace ns_1
+</programlisting>
+ use
+<programlisting>
+// note that the registering must be done
+// in the boost::mirror namespace
+
+namespace boost {
+namespace mirror {
+
+// registers ::ns_1
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((ns_1))
+// registers ::ns_1::ns_2
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((ns_1)(ns_2))
+// registers ::ns_1::ns_2::ns_3
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((ns_1)(ns_2)(ns_3))
+// registers ::ns_1::ns_2::ns_3::...::ns_N
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((ns_1)(ns_2)(ns_3)...(ns_N))
+
+} //namespace mirror
+} //namespace boost
+</programlisting>
+ and afterwards the namespaces can be reflected with the
+ <code><macroname>BOOST_MIRRORED_NAMESPACE</macroname></code> macro
+<programlisting>
+BOOST_MPL_ASSERT((
+ <classname>reflects_namespace</classname>< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::ns_1) >
+));
+BOOST_MPL_ASSERT((
+ <classname>reflects_namespace</classname>< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::ns_1::ns_2::ns_3) >
+));
+BOOST_MPL_ASSERT_NOT((
+ <classname>reflects_global_scope</classname>< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::ns_1) >
+));
+BOOST_MPL_ASSERT_NOT((
+ <classname>reflects_global_scope</classname>< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::ns_1::ns_2::ns_3) >
+));
+BOOST_MPL_ASSERT((
+ <classname>reflects_global_scope</classname>< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::ns_1::ns_2)::scope::scope >
+));
+</programlisting>
+ and referenced in other registering macros. The <libraryname>Mirror</libraryname> has several namespaces preregistered:
+<programlisting>
+namespace boost {
+namespace mirror {
+
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((std))
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((boost))
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((boost)(mirror))
+
+} //namespace mirror
+} //namespace boost
+</programlisting>
+ </para>
+
+ <section id="mirror.REG_NAMESPACE.reference.samples">
+ <title>Examples</title>
+ <para>This example shows the registering and reflection of namespaces
+ and basic usage of the <code><classname>meta_namespace</classname></code>
+ template class and its members.
+ </para>
+ <xi:include href="../samples/usage_namespaces_01.xml"/>
+ </section>
+
+ </description>
+</macro>
Added: sandbox/mirror/libs/mirror/doc/reference/macro_RFL_GLOBAL_SCOPE.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/macro_RFL_GLOBAL_SCOPE.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<macro name="BOOST_MIRRORED_GLOBAL_SCOPE" kind="functionlike">
+ <purpose>
+ <para>This macro is used to reflect the global scope and expands into a specialization
+ of the <code><classname>meta_namespace</classname></code> template, which provides
+ meta-data about the global scope.
+ To reflect a registered named namespace use the <code><macroname>BOOST_MIRRORED_NAMESPACE</macroname></code>.
+ </para>
+ </purpose>
+ <description>
+ <para>The <code><macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()</code> macro can be used to get
+ the meta-data about the global scope, which is registered with the <libraryname>Mirror</libraryname> library by default.
+ </para>
+ <section id="mirror.RFL_GLOBAL_SCOPE.reference.samples">
+ <title>Examples</title>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_global_scope< <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>() >::value
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_global_scope< <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>() >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::std)::scope,
+ <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()
+ >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ <macroname>BOOST_MIRRORED_TYPE</macroname>(int)::scope,
+ <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()
+ >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ ::boost::is_same<
+ <macroname>BOOST_MIRRORED_TYPE</macroname>(::std::wstring)::scope::scope,
+ <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()
+ >
+));
+</programlisting>
+
+ </section>
+ </description>
+</macro>
Added: sandbox/mirror/libs/mirror/doc/reference/macro_RFL_NAMESPACE.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/macro_RFL_NAMESPACE.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<macro name="BOOST_MIRRORED_NAMESPACE" kind="functionlike">
+ <macro-parameter name="FULL_NAMESPACE_NAME"/>
+ <purpose>
+ <para>This macro is used to reflect a namespace and expands into a specialization
+ of the <code><classname>meta_namespace</classname></code> template, which provides
+ meta-data about the namespace. To reflect the global scope use the
+ <code><macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname></code> macro.
+ </para>
+ </purpose>
+ <description>
+ <para>The <code><macroname>BOOST_MIRRORED_NAMESPACE</macroname></code> macro reflects a namespace
+ previously registered with the <libraryname>Mirror</libraryname> library by the means of
+ the <code><macroname>BOOST_MIRROR_REG_NAMESPACE</macroname></code>.
+ The only argument of this macro is the full namespace name including the leading double colon,
+ so this is ok
+ <programlisting><code>BOOST_MIRRORED_NAMESPACE(::boost::mirror) /* OK */</code></programlisting>
+ but, neither this
+ <programlisting><code>BOOST_MIRRORED_NAMESPACE(boost::mirror) /* Error */</code></programlisting>
+ nor this
+ <programlisting><code>BOOST_MIRRORED_NAMESPACE(mirror) /* Error */</code></programlisting>
+ will work.
+ </para>
+ <section id="mirror.RFL_NAMESPACE.reference.samples">
+ <title>Examples</title>
+ <para>This example shows the registering and reflection of namespaces
+ and basic usage of the <code><classname>meta_namespace</classname></code>
+ template class and its members.
+ </para>
+ <xi:include href="../samples/usage_namespaces_01.xml"/>
+ </section>
+ </description>
+</macro>
Modified: sandbox/mirror/libs/mirror/doc/reference/meta_namespace.xml
==============================================================================
--- sandbox/mirror/libs/mirror/doc/reference/meta_namespace.xml (original)
+++ sandbox/mirror/libs/mirror/doc/reference/meta_namespace.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -4,190 +4,15 @@
<header name="boost/mirror/meta_namespace.hpp">
<namespace name="boost">
<namespace name="mirror">
- <class name="meta_namespace">
- <template>
- <template-type-parameter name="NamespacePlaceholder"/>
- </template>
- <purpose>
- <para>
- This class template provides meta-data
- about the reflected namespace, especially allows to get the
- base and full namespace name and to
- get information about the scope inside of which this namespace
- has been defined.
- </para>
- <para>
- To obtain a <code><classname>meta_namespace</classname></code> for a particular
- namespace (with the exception of the global scope) use the reflection
- macro <code><macroname>BOOST_MIRRORED_NAMESPACE</macroname>(FULL_NAMESPACE_NAME)</code>. To
- get the <code><classname>meta_namespace</classname></code> specialization for
- the global scope use the <code><macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>()</code>
- macro.
- </para>
- </purpose>
- <description>
- <para>The specializations of <code><classname>meta_type</classname></code> can
- be used to get meta-information about the reflected types, some at compile-time and some at run-time.
- The following examples show type reflection and basic
- <code><classname>meta_type</classname></code> usage. Mirror works with the native C++ types
- and some of the very common types like <code>::std::string</code>, etc. out of the box.
- Meta-types for many other types from the standard library and <libraryname>Boost</libraryname>
- are also provided and can be <code>#include</code>d when necessary.
- </para>
- <section id="mirror.meta_namespace.reference.samples">
- <section id="mirror.meta_namespace.reference.sample01">
- <title>Example - Basic usage</title>
- <para>This sample code shows how to reflect a namespace and how to get its
- base and full name.
- </para>
- <xi:include href="../samples/usage_meta_namespace_01.xml"/>
- </section>
- <section id="mirror.meta_namespace.reference.sample02">
- <title>Example - Scope and ancestors</title>
- <para>The following example shows what can be done with the
- <code><classname>meta_namespace</classname></code>s <code>scope</code> and
- <code>ancestors</code> <code>typedef</code>s. It also shows the usage
- of the <code><classname>reflects_global_scope</classname></code> trait
- template.
- </para>
- <xi:include href="../samples/usage_meta_namespace_02.xml"/>
- </section>
- <section id="mirror.meta_namespace.reference.sample03">
- <title>Example - Generic namespace name getter</title>
- <para>The <code><methodname>base_name</methodname></code> and the
- <code><methodname>full_name</methodname></code> methods
- are convenient but not very generic. The <code><methodname>get_name</methodname></code>
- member function allows to specify the character type of the returned string and
- to specify wheter a full or just the base namespace name should be returned, based
- on compile time arguments.
- </para>
- <para>The first argument must be either <code>mpl::true_</code> for full type name
- or <code>mpl::false_</code> for base type name and the second argument must be
- an instance of the <code>::std::char_traits</code> template with <code>char</code>
- for <code>::std::string</code> return value type or <code>wchar_t</code> for
- <code>::std::wstring</code> return value type.
- </para>
- <xi:include href="../samples/usage_meta_namespace_03.xml"/>
- </section>
- </section>
- </description>
+
+ <xi:include href="class_meta_namespace.xml"/>
- <access name="public">
- <typedef name="scope">
- <type><emphasis>unspecified</emphasis></type>
- <purpose>Meta-namespace describing the scope where the reflected namespace is defined</purpose>
- <description>
- <para>A meta-object describing the scope in which the reflected namespace
- is defined. It is a specialization of <code><classname>meta_namespace</classname></code>
- with the exception of the meta-namespace reflecting the global scope where
- this type is not defined.
- </para>
- <para>To find out whether a meta-namespace reflects the global scope
- use the <code><classname>reflects_global_scope</classname></code> template meta-function.
- </para>
- </description>
- </typedef>
- <typedef name="ancestors">
- <type><emphasis>unspecified</emphasis></type>
- <purpose>mpl::vector containing the whole path to the reflected namespace</purpose>
- <description>
- <para>An <code>mpl::vector</code> containing the <code><classname>meta_namespace</classname></code>
- specializations for all the namespaces in which the reflected namespace is
- directly or indirectly nested (not-containing the <code><classname>meta_namespace</classname></code>
- for the reflected namespace). The elements of this <code>mpl::vector</code> are
- ordered from the <code><classname>meta_namespace</classname></code> reflecting
- the global scope to the <code><classname>meta_namespace</classname></code>
- reflecting the parent namespace. The following holds
- for <code><classname>meta_namespace</classname></code>s
- reflecting any namespace with the exception of the global scope:
- </para>
- <xi:include href="../samples/meta_namespace_ancestors_01.xml"/>
- <para>For the <code><classname>meta_namespace</classname></code>
- reflecting the global scope the following holds true.
- </para>
- <xi:include href="../samples/meta_namespace_ancestors_02.xml"/>
- <para>To find out whether a meta-namespace reflects the global scope
- use the <code><classname>reflects_global_scope</classname></code> template meta-function.
- </para>
- </description>
- </typedef>
- <method name="base_name">
- <type>const <classname>cts::bstring</classname>&</type>
- <purpose>
- <para>This static member function returns the base name of the
- namespace reflected by a <code><classname>meta_namespace</classname></code>.
- For example the base namespace name "returned" by the invocation of
- <programlisting><macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::boost::mirror) :: base_name()
- </programlisting>
- is <code>"mirror"</code>. When a full namespace name
- <emphasis role="bold">with</emphasis> the nested name specifier
- is needed use the <methodname>full_name</methodname> member function
- instead.</para>
- </purpose>
- </method>
- <method name="full_name">
- <type>const <classname>cts::bstring</classname>&</type>
- <purpose>
- <para>This static member function returns the full name of the
- namespace reflected by a <code><classname>meta_namespace</classname></code>
- with the nested name specifier. For example:
- <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: full_name()
- </programlisting>
- returns <code>"::boost::mirror"</code>. When the base namespace name
- <emphasis role="bold">without</emphasis> the nested name specifier
- is needed use the <methodname>base_name</methodname> member function
- instead.</para>
- </purpose>
- <notes>
- <para>The first call to this function can be expensive
- for deeply nested namespaces, because the name needs to be properly composed from
- the base namespace names, which may
- lead to multiple string concatenations. Subsequent calls to this member function
- for a concrete specialization of <classname>meta_namespace</classname>
- are usually much faster.
- </para>
- </notes>
- </method>
- <method name="get_name">
- <template>
- <template-nontype-parameter name="FullName">
- <type>bool</type>
- </template-nontype-parameter>
- <template-type-parameter name="CharT"/>
- </template>
- <type>const <classname>::std::basic_string<CharT></classname>&</type>
- <parameter name="full">
- <paramtype>::boost::mpl::bool_<FullName></paramtype>
- </parameter>
- <parameter name="cht">
- <paramtype>::std::char_traits<CharT></paramtype>
- </parameter>
- <purpose>
- <para>This static member template function returns either the base name
- <emphasis role="bold">without</emphasis> the nested name specifier
- or the full name <emphasis role="bold">with</emphasis> the
- nested name specifier of the namespace reflected by this
- <code><classname>meta_namespace</classname></code>,
- depending on the value of the template argument <code>FullName</code>.
- Furthermore it allows to choose whether the return value type is
- <code>::std::string</code> or <code>::std::wstring</code> based
- on the type of the second argument.
- For example:
- <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: get_name(::boost::mpl::false_(), ::std::char_traits<char>())
- </programlisting> is equivalent to calling the
- <code><methodname>base_name</methodname></code> member function with the
- <code><macroname>BOOST_CTS_USE_WIDE_CHARS</macroname></code> symbol undefined,
- which returns a <code>::std::string</code> holding the string <code>"mirror"</code> and calling
- <programlisting><classname>BOOST_MIRRORED_NAMESPACE</classname>(::boost::mirror) :: get_name(::boost::mpl::true_(), ::std::char_traits<wchar_t>())
- </programlisting> is equivalent to calling the
- <code><methodname>full_name</methodname></code> method with the
- <code><macroname>BOOST_CTS_USE_WIDE_CHARS</macroname></code> symbol defined,
- which returns a <code>::std::wstring</code> holding this string <code>L"::boost::mirror"</code>.
- </para>
- </purpose>
- </method>
- </access>
- </class>
</namespace><!-- mirror -->
</namespace><!-- boost -->
+
+ <!-- macros -->
+ <xi:include href="macro_REG_NAMESPACE.xml"/>
+ <xi:include href="macro_RFL_NAMESPACE.xml"/>
+ <xi:include href="macro_RFL_GLOBAL_SCOPE.xml"/>
+
</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_class.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_class.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_class.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_class">
+ <template>
+ <template-type-parameter name="MetaObject"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaObject</code> is an instantiation of
+ <code><classname>meta_class</classname></code>, then <code><classname>reflects_class</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ <description>
+ <para>This template can be used to distinguish whether the opaque <code>MetaObject</code> type reflects a class
+ and thus is an instantiation of <code><classname>meta_class</classname></code>.
+ </para>
+ <section id="mirror.reflects_class.reference.samples">
+ <title>Examples</title>
+<programlisting>
+BOOST_MPL_ASSERT_NOT((
+ reflects_class< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_class< BOOST_MIRRORED_CLASS(::std::string) >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT_NOT((
+ reflects_class< BOOST_MIRRORED_CLASS(::std::string)::scope >
+));
+</programlisting>
+ </section>
+ </description>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_global_scope.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_global_scope.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_global_scope.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_global_scope">
+ <template>
+ <template-type-parameter name="MetaObject"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaObject</code> is the specialization of <code><classname>meta_namespace</classname></code>,
+ reflecting the global scope,
+ then <code><classname>reflects_global_scope</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ <description>
+ <para>This template can be used to distinguish whether the opaque <code>MetaObject</code> type reflects the global scope
+ and thus is an instantiation of <code><classname>meta_namespace</classname></code> for the global scope.
+ </para>
+ <section id="mirror.reflects_global_scope.reference.samples">
+ <title>Examples</title>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_GLOBAL_SCOPE() >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ !reflects_global_scope< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ !reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(int)::scope >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string)::scope::scope >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT_NOT((
+ reflects_global_scope< BOOST_MIRRORED_TYPE(::std::string)::scope >
+));
+</programlisting>
+ </section>
+ </description>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_inheritance.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_inheritance.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_inheritance.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_inheritance">
+ <template>
+ <template-type-parameter name="MetaObject"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaObject</code> is an instantiation of <code><classname>meta_inheritance</classname></code>,
+ then <code><classname>reflects_inheritance</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_namespace.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_namespace.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_namespace.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_namespace">
+ <template>
+ <template-type-parameter name="MetaObject"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaObject</code> is an instantiation of <code><classname>meta_namespace</classname></code>,
+ then <code><classname>reflects_namespace</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ <description>
+ <para>This template can be used to distinguish whether the opaque <code>MetaObject</code> type reflects a namespace
+ and thus is an instantiation of <code><classname>meta_namespace</classname></code>.
+ </para>
+ <section id="mirror.reflects_namespace.reference.samples">
+ <title>Examples</title>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string)::scope >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ !reflects_namespace< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string)::scope >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT_NOT((
+ reflects_namespace< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</programlisting>
+ </section>
+ </description>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_type.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_type.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_type.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_type">
+ <template>
+ <template-type-parameter name="MetaObject"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaObject</code> is either an instantiation of <code><classname>meta_type</classname></code>
+ or <code><classname>meta_class</classname></code>, then <code><classname>reflects_type</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ <description>
+ <para>This template can be used to distinguish whether the opaque <code>MetaObject</code> type reflects a type or a class
+ and thus is an instantiation of <code><classname>meta_type</classname></code>.
+ </para>
+ <section id="mirror.reflects_type.reference.samples">
+ <title>Examples</title>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_type< BOOST_MIRRORED_TYPE(::std::string) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ reflects_type< BOOST_MIRRORED_CLASS(::std::pair<int, ::std::string>) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ !reflects_type< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >::value
+));
+</programlisting>
+<programlisting>
+BOOST_STATIC_ASSERT((
+ !reflects_type< BOOST_MIRRORED_TYPE(::std::string)::scope >::value
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT((
+ reflects_type< BOOST_MIRRORED_TYPE(::std::string) >
+));
+</programlisting>
+<programlisting>
+BOOST_MPL_ASSERT_NOT((
+ reflects_type< BOOST_MIRRORED_NAMESPACE(::boost::mirror) >
+));
+</programlisting>
+ </section>
+ </description>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/reference/traits/reflects_virtual_inheritance.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/reference/traits/reflects_virtual_inheritance.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/mirror/traits/reflects_virtual_inheritance.hpp">
+ <namespace name="boost">
+ <namespace name="mirror">
+ <class name="reflects_virtual_inheritance">
+ <template>
+ <template-type-parameter name="MetaInheritance"/>
+ </template>
+ <purpose>
+ <para>If <code>MetaInheritance</code> is a specialization of <code><classname>meta_inheritance</classname></code>
+ reflecting virtual inheritance,
+ then <code><classname>reflects_virtual_inheritance</classname></code>
+ inherits from <code><classname>::boost::true_type</classname></code>. Otherwise it inherits from
+ <code><classname>::boost::false_type</classname></code>.
+ </para>
+ </purpose>
+ <inherit access="public">
+ <type><classname>false_type</classname>-or-<classname>true_type</classname></type>
+ </inherit>
+ </class>
+ </namespace><!-- mirror -->
+ </namespace><!-- boost -->
+</header>
Added: sandbox/mirror/libs/mirror/doc/samples/usage_namespaces_01.xml
==============================================================================
--- (empty file)
+++ sandbox/mirror/libs/mirror/doc/samples/usage_namespaces_01.xml 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<programlisting>
+#include <boost/char_type_switch/iostream.hpp>
+#include <boost/mirror/meta_namespace.hpp>
+#include <boost/mirror/traits/reflects_namespace.hpp>
+#include <boost/mirror/traits/reflects_global_scope.hpp>
+
+#include <boost/mpl/assert.hpp>
+
+namespace foo {
+namespace bar {
+namespace baz {
+
+} //namespace baz
+} //namespace bar
+} //namespace foo
+
+// the registering must be done in the boost::mirror namespace
+namespace boost {
+namespace mirror {
+
+// register foo
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((foo))
+// register foo::bar
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((foo)(bar))
+// register foo::bar::baz
+<macroname>BOOST_MIRROR_REG_NAMESPACE</macroname>((foo)(bar)(baz))
+
+} // namespace mirror
+} // namespace boost
+
+
+// prints meta-info about the global scope
+template < class MetaNamespace >
+void do_print_meta_data(::boost::true_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ cts::bostream& bcout = cts::bcout();
+ bcout <<
+ <macroname>BOOST_CTS_LIT</macroname>("This is the global scope") <<
+ endl <<
+ <macroname>BOOST_CTS_LIT</macroname>("------------------------------------") <<
+ endl;
+}
+
+// prints meta-info about named namespaces
+template < class MetaNamespace >
+void do_print_meta_data(::boost::false_type)
+{
+ using namespace ::std;
+ using namespace ::boost;
+ using namespace ::boost::mirror;
+ cts::bostream& bcout = cts::bcout();
+
+ bcout <<
+ <macroname>BOOST_CTS_LIT</macroname>("Namespace '") <<
+ MetaNamespace::base_name() <<
+ <macroname>BOOST_CTS_LIT</macroname>("': ") <<
+ endl <<
+ <macroname>BOOST_CTS_LIT</macroname>(" - the full name is '") <<
+ MetaNamespace::full_name() <<
+ <macroname>BOOST_CTS_LIT</macroname>("'") <<
+ endl <<
+ <macroname>BOOST_CTS_LIT</macroname>(" - it's defined ");
+
+ if(reflects_global_scope<typename MetaNamespace::scope>::value)
+ bcout << <macroname>BOOST_CTS_LIT</macroname>(" - on the global scope ");
+ else
+ bcout << <macroname>BOOST_CTS_LIT</macroname>(" - in the '") <<
+ MetaNamespace::scope::full_name() <<
+ <macroname>BOOST_CTS_LIT</macroname>("' namespace");
+
+ bcout << endl <<
+ <macroname>BOOST_CTS_LIT</macroname>("------------------------------------") <<
+ endl;
+}
+
+
+
+template < class MetaNamespace >
+void print_meta_data(void)
+{
+ using namespace ::boost::mirror;
+ // check the template argument
+ BOOST_MPL_ASSERT((
+ <classname>reflects_namespace</classname>< MetaNamespace >
+ ));
+
+ // call the specialized printer based on whether
+ // the passed meta-namespace reflects the global
+ // scope or not
+ typename <classname>reflects_global_scope</classname><MetaNamespace>::type
+ selector;
+
+ do_print_meta_data<MetaNamespace>(selector);
+}
+
+
+int main(void)
+{
+ // reflect and print meta-info about the pre-registered namespaces
+ print_meta_data< <macroname>BOOST_MIRRORED_GLOBAL_SCOPE</macroname>() >();
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::std) >();
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::boost) >();
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::boost::mirror) >();
+
+ // reflect and print meta-info about the namespaces registered here
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::foo) >();
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::foo::bar) >();
+ print_meta_data< <macroname>BOOST_MIRRORED_NAMESPACE</macroname>(::foo::bar::baz) >();
+
+ return 0;
+}
+</programlisting>
+
Modified: sandbox/mirror/libs/mirror/example/registering/virtual_bases.cpp
==============================================================================
--- sandbox/mirror/libs/mirror/example/registering/virtual_bases.cpp (original)
+++ sandbox/mirror/libs/mirror/example/registering/virtual_bases.cpp 2008-07-18 09:41:20 EDT (Fri, 18 Jul 2008)
@@ -208,6 +208,8 @@
//
typedef BOOST_MIRRORED_CLASS(T) meta_T;
//
+ //
+ //
// Print some basic info about the reflected class
//
bcout << "The reflected class has " << endl;
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