$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70639 - in sandbox/opaque/boost/opaque: . macros meta_mixin
From: vicente.botet_at_[hidden]
Date: 2011-03-27 13:48:21
Author: viboes
Date: 2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
New Revision: 70639
URL: http://svn.boost.org/trac/boost/changeset/70639
Log:
Opaque: macros moved to a specific directory
Added:
   sandbox/opaque/boost/opaque/macros/
   sandbox/opaque/boost/opaque/macros/forward_constructors.hpp   (contents, props changed)
   sandbox/opaque/boost/opaque/macros/inherit_from_underlying_spec.hpp   (contents, props changed)
   sandbox/opaque/boost/opaque/macros/new_class.hpp   (contents, props changed)
   sandbox/opaque/boost/opaque/macros/new_type.hpp   (contents, props changed)
   sandbox/opaque/boost/opaque/macros/private_opaque.hpp   (contents, props changed)
   sandbox/opaque/boost/opaque/macros/public_opaque.hpp   (contents, props changed)
Removed:
   sandbox/opaque/boost/opaque/new_class_macro.hpp
   sandbox/opaque/boost/opaque/new_type_macro.hpp
Text files modified: 
   sandbox/opaque/boost/opaque/boolean.hpp                                              |     3                                         
   sandbox/opaque/boost/opaque/macros.hpp                                               |   305 --------------------------------------- 
   sandbox/opaque/boost/opaque/meta_mixin/combined_operators.hpp                        |    13 +                                       
   sandbox/opaque/boost/opaque/meta_mixin/inherited_from_underlying.hpp                 |     5                                         
   sandbox/opaque/boost/opaque/meta_mixin/linear_hierarchy.hpp                          |     5                                         
   sandbox/opaque/boost/opaque/meta_mixin/operators.hpp                                 |    12                                         
   sandbox/opaque/boost/opaque/meta_mixin/using_explicit_conversion_to_ut_hierarchy.hpp |     5                                         
   sandbox/opaque/boost/opaque/meta_mixin/using_implicit_conversion_to_ut_hierarchy.hpp |     5                                         
   sandbox/opaque/boost/opaque/new_class.hpp                                            |     3                                         
   sandbox/opaque/boost/opaque/new_type.hpp                                             |     5                                         
   sandbox/opaque/boost/opaque/opaque.hpp                                               |    13 +                                       
   sandbox/opaque/boost/opaque/private_opaque_class.hpp                                 |     7                                         
   sandbox/opaque/boost/opaque/private_opaque_type.hpp                                  |     5                                         
   sandbox/opaque/boost/opaque/public_opaque_class.hpp                                  |     5                                         
   sandbox/opaque/boost/opaque/public_opaque_type.hpp                                   |     5                                         
   15 files changed, 87 insertions(+), 309 deletions(-)
Modified: sandbox/opaque/boost/opaque/boolean.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/boolean.hpp	(original)
+++ sandbox/opaque/boost/opaque/boolean.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -11,7 +11,8 @@
 //////////////////////////////////////////////////////////////////////////////
 
 /**
- * @File Defines an opaque boolean class.
+ * @file
+ * Defines an opaque boolean class.
  */
 
 #ifndef BOOST_OPAQUE_BOOLEAN_HPP
Modified: sandbox/opaque/boost/opaque/macros.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/macros.hpp	(original)
+++ sandbox/opaque/boost/opaque/macros.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -12,309 +12,18 @@
 
 /**
  * @file
- * Defines helper macros.
+ * Includes all the helper macros files.
  */
 
 #ifndef BOOST_OPAQUE_MACROS_HPP
 #define BOOST_OPAQUE_MACROS_HPP
 
-#include <boost/config.hpp>
-#include <boost/opaque/private_opaque_type.hpp>
-#include <boost/opaque/boolean.hpp>
-#include <boost/opaque/public_opaque_type.hpp>
-#include <boost/opaque/private_opaque_class.hpp>
-#include <boost/opaque/public_opaque_class.hpp>
-
-
-/** forward the constructors from the new class @c OT to the base class @ BASE
-
- @Note This macro can be used only inside the public part of a class.
-
- @Params
- @Param{OT, the class been defined}
- @Param{BASE, the base class}
-
- @Result
- @code
-    OT(){}
-    template <typename W>
-    explicit OT(W w)
-        : BASE(w)
-    {}
-    OT(OT const& r)
-        : BASE(r.val_)
-    {}
- @endcode
- */
-#define BOOST_OPAQUE_FORWARD_CONSTRUCTORS(OT,BASE) \
-    OT(){} \
-    template <typename W> \
-    explicit OT(W w) \
-        : BASE(w) \
-    {}\
-    OT(OT const& r) \
-        : BASE(r.val_) \
-    {}
-
-
-/**
- Specialize inherited_from_underlying for the type @ OT just inheriting the ones from its underlying type.
-
- @Note This macro can be used only outside a namespace.
-
- @Params
- @Param{OT, the opaque type}
-
- @Result
- @code
- namespace boost {
-   namespace opaque {
-    template <typename Bool>
-    struct inherited_from_underlying<OT,Bool>
-      : inherited_from_underlying<typename OT::underlying_type,Bool> { };
-   }
- }
- @endcode
- */
-#define BOOST_OPAQUE_INHERIT_FROM_UNDERLYING(OT) \
-namespace boost {\
-namespace opaque {\
-  template <typename Bool>\
-  struct inherited_from_underlying<OT,Bool>\
-    : inherited_from_underlying<typename OT::underlying_type,Bool> { };\
-} \
-}
-
-#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
-
-#define BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, B) \
-  struct BOOST_JOIN(OT, _tag) {};\
-  typedef boost::opaque::public_opaque_type<UT, BOOST_JOIN(OT, _tag), B> OT
-
-#endif
-/**
- Declares a @c public_opaque_type typedef @c OT defining a specific tag @c OT_tag having @c boost::opaque::boolean as <em>Boolean</em> type.
-
- @Note This macro must be used inside the @c OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct OT_tag {};
- typedef boost::opaque::public_opaque_type<UT, OT_tag, boost::opaque::boolean> OT
- @endcode
- */
-#define BOOST_OPAQUE_BOOLEAN_PUBLIC_TYPEDEF(UT, OT) \
-BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, boost::opaque::boolean)
-
-/**
- Declares a @c public_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
-
- @Note This macro must be used inside the @c OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct OT_tag {};
- typedef boost::opaque::public_opaque_type<UT, OT_tag, bool> OT
- @endcode
- */
-#define BOOST_OPAQUE_PUBLIC_TYPEDEF(UT, OT) \
-BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, bool)
-
-//////////////////////////
-#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
-
-#define BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, NT1, B) \
-  struct NT1 : boost::opaque::public_opaque_class<NT1, UT,B> \
-  { \
-    BOOST_OPAQUE_FORWARD_CONSTRUCTORS(NT1, (boost::opaque::public_opaque_class<NT1, UT,B>)) \
-  }
-
-#endif
-
-/**
- Declares a @c public_opaque_class @c OT having @c boost::opaque::boolean as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct NT1 : boost::opaque::public_opaque_class<NT1, UT,boost::opaque::boolean>
- {
-    typedef boost::opaque::public_opaque_class<NT1, UT,boost::opaque::boolean> base_type;
-    OT(){}
-    template <typename W>
-    explicit OT(W w)
-        : base_type(w)
-    {}
-    OT(OT const& r)
-        : base_type(r.val_)
-    {}
- }
- @endcode
- */
-#define BOOST_OPAQUE_BOOLEAN_PUBLIC_CLASS(UT, OT) \
-  BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, OT, boost::opaque::boolean)
-
-
-/**
- Declares a @c public_opaque_class @c OT having @c bool as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct NT1 : boost::opaque::public_opaque_class<NT1, UT, bool>
- {
-    typedef boost::opaque::public_opaque_class<NT1, UT,bool> base_type;
-    OT(){}
-    template <typename W>
-    explicit OT(W w)
-        : base_type(w)
-    {}
-    OT(OT const& r)
-        : base_type(r.val_)
-    {}
- }
- @endcode
- */
-#define BOOST_OPAQUE_PUBLIC_CLASS(UT, OT) \
-  BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, OT, bool)
-
-//////////////////////////
-#define BOOST_OPAQUE_PRIVATE_FORWARD_CONSTRUCTORS(UT, OT) \
-    BOOST_OPAQUE_FORWARD_CONSTRUCTORS(OT,(boost::opaque::private_opaque_class<OT, UT>))
-
-#define BOOST_OPAQUE_PRIVATE_OPERATIONS(UT, OT) \
-    BOOST_OPAQUE_PRIVATE_FORWARD_CONSTRUCTORS(UT, OT)
-
-//////////////////////////
-#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
-
-#define BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT,B) \
-  struct BOOST_JOIN(OT, _tag) {};\
-  typedef boost::opaque::private_opaque_type<UT, BOOST_JOIN(OT, _tag),B> OT
-
-#endif
-
-/**
- Declares a @c private_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct OT_tag {};
- typedef boost::opaque::private_opaque_type<UT, OT_tag, boost::opaque::boolean> OT
- @endcode
- */
-#define BOOST_OPAQUE_BOOLEAN_PRIVATE_TYPEDEF(UT, OT) \
-  BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT, boost::opaque::boolean)
-
-/**
- Declares a @c private_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct OT_tag {};
- typedef boost::opaque::private_opaque_type<UT, OT_tag, bool> OT
- @endcode
- */
-#define BOOST_OPAQUE_PRIVATE_TYPEDEF(UT, OT) \
-  BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT, bool)
-
-#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
-
-#define BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, NT1, B) \
-struct NT1 : boost::opaque::private_opaque_class<NT1, UT,B> \
-{ \
-    typedef boost::opaque::private_opaque_class<NT1, UT, B> base_type; \
-    BOOST_OPAQUE_FORWARD_CONSTRUCTORS(NT1, (boost::opaque::private_opaque_class<NT1, UT,B>)) \
-}
-
-#endif
-
-/**
- Declares a @c private_opaque_class @c OT having @c boost::opaque::boolean as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct NT1 : boost::opaque::private_opaque_class<NT1, UT, boost::opaque::boolean>
- {
-    typedef boost::opaque::private_opaque_class<NT1, UT,boost::opaque::boolean> base_type;
-    OT(){}
-    template <typename W>
-    explicit OT(W w)
-        : base_type(w)
-    {}
-    OT(OT const& r)
-        : base_type(r.val_)
-    {}
- }
- @endcode
- */
-
-#define BOOST_OPAQUE_BOOLEAN_PRIVATE_CLASS(UT, OT) \
-  BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, OT, boost::opaque::boolean)
-
-/**
- Declares a @c private_opaque_class @c OT having @c bool as <em>Boolean</em> type.
-
- @Note This macro must be used inside the OT's namespace.
-
- @Params
- @Param{UT, the underlying type}
- @Param{OT, the opaque type}
-
- @Result
- @code
- struct NT1 : boost::opaque::private_opaque_class<NT1, UT, bool>
- {
-    typedef boost::opaque::private_opaque_class<NT1, UT,bool> base_type;
-    OT(){}
-    template <typename W>
-    explicit OT(W w)
-        : base_type(w)
-    {}
-    OT(OT const& r)
-        : base_type(r.val_)
-    {}
- }
- @endcode
- */
-#define BOOST_OPAQUE_PRIVATE_CLASS(UT, OT) \
-  BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, OT, bool)
+#include <boost/opaque/macros/forward_constructors.hpp>
+#include <boost/opaque/macros/inherit_from_underlying_spec.hpp>
+#include <boost/opaque/macros/new_class.hpp>
+#include <boost/opaque/macros/new_type.hpp>
+#include <boost/opaque/macros/private_opaque.hpp>
+#include <boost/opaque/macros/public_opaque.hpp>
 
 #endif
 
Added: sandbox/opaque/boost/opaque/macros/forward_constructors.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/forward_constructors.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2010-2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+/**
+ * @file
+ * Defines helper macro @c BOOST_OPAQUE_FORWARD_CONSTRUCTORS.
+ */
+
+#ifndef BOOST_OPAQUE_MACROS_FORWARD_CONSTRUCTORS_HPP
+#define BOOST_OPAQUE_MACROS_FORWARD_CONSTRUCTORS_HPP
+
+/** forward the constructors from the new class @c OT to the base class @ BASE
+
+ @Note This macro can be used only inside the public part of a class.
+
+ @Params
+ @Param{OT, the class been defined}
+ @Param{BASE, the base class}
+
+ @Result
+ @code
+    OT(){}
+    template <typename W>
+    explicit OT(W w)
+        : BASE(w)
+    {}
+    OT(OT const& r)
+        : BASE(r.val_)
+    {}
+ @endcode
+ */
+#define BOOST_OPAQUE_FORWARD_CONSTRUCTORS(OT,BASE) \
+    OT(){} \
+    template <typename W> \
+    explicit OT(W w) \
+        : BASE(w) \
+    {}\
+    OT(OT const& r) \
+        : BASE(r.val_) \
+    {}
+
+#endif
+
Added: sandbox/opaque/boost/opaque/macros/inherit_from_underlying_spec.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/inherit_from_underlying_spec.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2010-2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+/**
+ * @file
+ * Defines helper macro @c BOOST_OPAQUE_INHERIT_FROM_UNDERLYING.
+ */
+
+#ifndef BOOST_OPAQUE_MACROS_INHERIT_FROM_UNDERLYING_SPEC_HPP
+#define BOOST_OPAQUE_MACROS_INHERIT_FROM_UNDERLYING_SPEC_HPP
+
+#include <boost/opaque/meta_mixin/inherited_from_underlying.hpp>
+
+/**
+ Specialize inherited_from_underlying for the type @ OT just inheriting the ones from its underlying type.
+
+ @Note This macro can be used only outside a namespace.
+
+ @Params
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ namespace boost {
+   namespace opaque {
+    template <typename Bool>
+    struct inherited_from_underlying<OT,Bool>
+      : inherited_from_underlying<typename OT::underlying_type,Bool> { };
+   }
+ }
+ @endcode
+ */
+#define BOOST_OPAQUE_INHERIT_FROM_UNDERLYING(OT) \
+namespace boost {\
+namespace opaque {\
+  template <typename Bool>\
+  struct inherited_from_underlying<OT,Bool>\
+    : inherited_from_underlying<typename OT::underlying_type,Bool> { };\
+} \
+}
+
+#endif
+
Added: sandbox/opaque/boost/opaque/macros/new_class.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/new_class.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,47 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_OPAQUE_MACROS_NEW_CLASS_HPP
+#define BOOST_OPAQUE_MACROS_NEW_CLASS_HPP
+
+#include <boost/config.hpp>
+#include <boost/opaque/new_class.hpp>
+#include <boost/opaque/macros.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+
+
+/**
+
+ @brief
+
+ @Params
+ @Param{NC,the new class to be defined }
+ @Param{UT,the underlying type}
+ @Param{MMSEQ,the META_MIXIN_SEQ sequence}
+
+ @Result If @c MMSEQ is <c>( (MM1) ... ((MMn) )</c>
+ @code
+  boost::opaque::new_class< NC, UT,
+      boost::mpl::vector<MM1, ..., MMn>
+  >
+ @endcode
+
+ */
+
+#define BOOST_OPAQUE_NEW_CLASS(NC, UT, MMSEQ)                \
+  boost::opaque::new_class< NC, UT,       \
+      boost::mpl::vector<                                   \
+          BOOST_PP_SEQ_ENUM(MMSEQ)                          \
+      > >
+
+
+#endif // BOOST_OPAQUE_MACROS_NEW_CLASS_HPP
Added: sandbox/opaque/boost/opaque/macros/new_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/new_type.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,47 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_OPAQUE_MACROS_NEW_TYPE_HPP
+#define BOOST_OPAQUE_MACROS_NEW_TYPE_HPP
+
+#include <boost/config.hpp>
+#include <boost/opaque/new_type.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+
+/**
+
+ @brief Generates the code to define a new typedef.
+
+ @Params
+ @Param{UT,the underlying type}
+ @Param{NT,the new type to be defined }
+ @Param{MMSEQ,the META_MIXIN_SEQ sequence}
+
+ @Result If @c MMSEQ is <c>( (MM1) ... ((MMn) )</c>
+ @code
+  struct NC_tag {};
+  typedef boost::opaque::new_type< UT, NC_tag,
+      boost::mpl::vector<MM1, ..., MMn>
+  > NT
+ @endcode
+
+ */
+
+#define BOOST_OPAQUE_NEW_TYPE(UT,NT,MMSEQ)                  \
+  struct BOOST_JOIN(NT,_tag){};                             \
+  typedef boost::opaque::new_type< UT, BOOST_JOIN(NT,_tag), \
+      boost::mpl::vector<                                   \
+          BOOST_PP_SEQ_ENUM(MMSEQ)                          \
+      >                                                     \
+  > NT
+
+#endif // BOOST_OPAQUE_MACROS_NEW_TYPE_HPP
Added: sandbox/opaque/boost/opaque/macros/private_opaque.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/private_opaque.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,141 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2010-2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+/**
+ * @file
+ * Defines helper macros.
+ */
+
+#ifndef BOOST_OPAQUE_MACROS_PRIVATE_OPAQUE_HPP
+#define BOOST_OPAQUE_MACROS_PRIVATE_OPAQUE_HPP
+
+#include <boost/config.hpp>
+#include <boost/opaque/private_opaque_type.hpp>
+#include <boost/opaque/private_opaque_class.hpp>
+#include <boost/opaque/boolean.hpp>
+#include <boost/opaque/macros/forward_constructors.hpp>
+
+//////////////////////////
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
+
+#define BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT,B) \
+  struct BOOST_JOIN(OT, _tag) {};\
+  typedef boost::opaque::private_opaque_type<UT, BOOST_JOIN(OT, _tag),B> OT
+
+#endif
+
+/**
+ Declares a @c private_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct OT_tag {};
+ typedef boost::opaque::private_opaque_type<UT, OT_tag, boost::opaque::boolean> OT
+ @endcode
+ */
+#define BOOST_OPAQUE_BOOLEAN_PRIVATE_TYPEDEF(UT, OT) \
+  BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT, boost::opaque::boolean)
+
+/**
+ Declares a @c private_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct OT_tag {};
+ typedef boost::opaque::private_opaque_type<UT, OT_tag, bool> OT
+ @endcode
+ */
+#define BOOST_OPAQUE_PRIVATE_TYPEDEF(UT, OT) \
+  BOOST_OPAQUE_EXT_PRIVATE_TYPEDEF(UT, OT, bool)
+
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
+
+#define BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, NT1, B) \
+struct NT1 : boost::opaque::private_opaque_class<NT1, UT,B> \
+{ \
+    typedef boost::opaque::private_opaque_class<NT1, UT, B> base_type; \
+    BOOST_OPAQUE_FORWARD_CONSTRUCTORS(NT1, (boost::opaque::private_opaque_class<NT1, UT,B>)) \
+}
+
+#endif
+
+/**
+ Declares a @c private_opaque_class @c OT having @c boost::opaque::boolean as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct NT1 : boost::opaque::private_opaque_class<NT1, UT, boost::opaque::boolean>
+ {
+    typedef boost::opaque::private_opaque_class<NT1, UT,boost::opaque::boolean> base_type;
+    OT(){}
+    template <typename W>
+    explicit OT(W w)
+        : base_type(w)
+    {}
+    OT(OT const& r)
+        : base_type(r.val_)
+    {}
+ }
+ @endcode
+ */
+
+#define BOOST_OPAQUE_BOOLEAN_PRIVATE_CLASS(UT, OT) \
+  BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, OT, boost::opaque::boolean)
+
+/**
+ Declares a @c private_opaque_class @c OT having @c bool as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct NT1 : boost::opaque::private_opaque_class<NT1, UT, bool>
+ {
+    typedef boost::opaque::private_opaque_class<NT1, UT,bool> base_type;
+    OT(){}
+    template <typename W>
+    explicit OT(W w)
+        : base_type(w)
+    {}
+    OT(OT const& r)
+        : base_type(r.val_)
+    {}
+ }
+ @endcode
+ */
+#define BOOST_OPAQUE_PRIVATE_CLASS(UT, OT) \
+  BOOST_OPAQUE_EXT_PRIVATE_CLASS(UT, OT, bool)
+
+#endif
+
Added: sandbox/opaque/boost/opaque/macros/public_opaque.hpp
==============================================================================
--- (empty file)
+++ sandbox/opaque/boost/opaque/macros/public_opaque.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,141 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Vicente J. Botet Escriba 2010-2011.
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/opaque for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+/**
+ * @file
+ * Defines helper macros.
+ */
+
+#ifndef BOOST_OPAQUE_MACROS_PUBLIC_OPAQUE_HPP
+#define BOOST_OPAQUE_MACROS_PUBLIC_OPAQUE_HPP
+
+#include <boost/config.hpp>
+#include <boost/opaque/public_opaque_type.hpp>
+#include <boost/opaque/public_opaque_class.hpp>
+#include <boost/opaque/boolean.hpp>
+#include <boost/opaque/macros/forward_constructors.hpp>
+
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
+
+#define BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, B) \
+  struct BOOST_JOIN(OT, _tag) {};\
+  typedef boost::opaque::public_opaque_type<UT, BOOST_JOIN(OT, _tag), B> OT
+
+#endif
+/**
+ Declares a @c public_opaque_type typedef @c OT defining a specific tag @c OT_tag having @c boost::opaque::boolean as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the @c OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct OT_tag {};
+ typedef boost::opaque::public_opaque_type<UT, OT_tag, boost::opaque::boolean> OT
+ @endcode
+ */
+#define BOOST_OPAQUE_BOOLEAN_PUBLIC_TYPEDEF(UT, OT) \
+BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, boost::opaque::boolean)
+
+/**
+ Declares a @c public_opaque_type typedef @c OT defining a specific tag @c OT_tag  having @c bool as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the @c OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct OT_tag {};
+ typedef boost::opaque::public_opaque_type<UT, OT_tag, bool> OT
+ @endcode
+ */
+#define BOOST_OPAQUE_PUBLIC_TYPEDEF(UT, OT) \
+BOOST_OPAQUE_EXT_PUBLIC_TYPEDEF(UT, OT, bool)
+
+//////////////////////////
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
+
+#define BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, NT1, B) \
+  struct NT1 : boost::opaque::public_opaque_class<NT1, UT,B> \
+  { \
+    BOOST_OPAQUE_FORWARD_CONSTRUCTORS(NT1, (boost::opaque::public_opaque_class<NT1, UT,B>)) \
+  }
+
+#endif
+
+/**
+ Declares a @c public_opaque_class @c OT having @c boost::opaque::boolean as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct NT1 : boost::opaque::public_opaque_class<NT1, UT,boost::opaque::boolean>
+ {
+    typedef boost::opaque::public_opaque_class<NT1, UT,boost::opaque::boolean> base_type;
+    OT(){}
+    template <typename W>
+    explicit OT(W w)
+        : base_type(w)
+    {}
+    OT(OT const& r)
+        : base_type(r.val_)
+    {}
+ }
+ @endcode
+ */
+#define BOOST_OPAQUE_BOOLEAN_PUBLIC_CLASS(UT, OT) \
+  BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, OT, boost::opaque::boolean)
+
+
+/**
+ Declares a @c public_opaque_class @c OT having @c bool as <em>Boolean</em> type.
+
+ @Note This macro must be used inside the OT's namespace.
+
+ @Params
+ @Param{UT, the underlying type}
+ @Param{OT, the opaque type}
+
+ @Result
+ @code
+ struct NT1 : boost::opaque::public_opaque_class<NT1, UT, bool>
+ {
+    typedef boost::opaque::public_opaque_class<NT1, UT,bool> base_type;
+    OT(){}
+    template <typename W>
+    explicit OT(W w)
+        : base_type(w)
+    {}
+    OT(OT const& r)
+        : base_type(r.val_)
+    {}
+ }
+ @endcode
+ */
+#define BOOST_OPAQUE_PUBLIC_CLASS(UT, OT) \
+  BOOST_OPAQUE_EXT_PUBLIC_CLASS(UT, OT, bool)
+
+
+
+#endif
+
Modified: sandbox/opaque/boost/opaque/meta_mixin/combined_operators.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/combined_operators.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/combined_operators.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,8 +10,20 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * This file includes meta-mixins combining several operators.
+ *
+ * These meta-mixins have names that follows the naming used in <b>Boost.Operators</b>, but prefixed by @c using_.
+ *
+ * The composite operator templates only list what other templates they use.
+ * The supplied operations and requirements of the composite operator templates can be inferred from the
+ * operations and requirements of the listed components.
+ */
+
 #ifndef BOOST_OPAQUE_COMBINED_OPERATORS_HPP
 #define BOOST_OPAQUE_COMBINED_OPERATORS_HPP
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
 
 #include <boost/operators.hpp>
 #include <boost/opaque/meta_mixin/operators.hpp>
@@ -515,3 +527,4 @@
 
 
 #endif
+#endif
Modified: sandbox/opaque/boost/opaque/meta_mixin/inherited_from_underlying.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/inherited_from_underlying.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/inherited_from_underlying.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c inherited_from_underlying meta-function, the helper inherited_from_arithmetic and the specialization for the builtin type.
+ */
+
 #ifndef BOOST_OPAQUE_INHERITED_FROM_UNDERLYING_HPP
 #define BOOST_OPAQUE_INHERITED_FROM_UNDERLYING_HPP
 
Modified: sandbox/opaque/boost/opaque/meta_mixin/linear_hierarchy.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/linear_hierarchy.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/linear_hierarchy.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c linear_hierarchy meta-function.
+ */
+
 #ifndef BOOST_OPAQUE_LINEAR_HIERARCHY_HPP
 #define BOOST_OPAQUE_LINEAR_HIERARCHY_HPP
 
Modified: sandbox/opaque/boost/opaque/meta_mixin/operators.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/operators.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/operators.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -17,6 +17,11 @@
  * There is a meta-mixin for each one of the C++ overloadable operators.
  * These meta-mixins have names that follows the naming used in <b>Boost.ConceptsTraits</b>, but prefixed by using_.
  *
+ * See the section for a complete list of operators meta-mixins.
+ */
+
+/*
+ * In this section the meta-mixin follows the schema
  * <b>Arithmetic Operators</b>
  *
  * The arithmetic meta-mixins ease the task of creating a custom numeric type based on the underlying type.
@@ -33,8 +38,6 @@
  * has to provide. They have an additional optional template parameter Base, which is not shown, for the base class
  * chaining technique.
  *
- * In this section the meta-mixin follows the schema
- *
  * @code
  * struct meta-mixin {
  *   template <typename NT, typename Base>
@@ -53,14 +56,12 @@
  * - @c lhs_ut is the instance @c UT reference obtained @c lhs.underlying().
  * - @c rhs_ut is the instance @c UT reference obtained @c rhs.underlying().
  *
-
-
-
  *
  */
 
 #ifndef BOOST_OPAQUE_OPERATORS_HPP
 #define BOOST_OPAQUE_OPERATORS_HPP
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
 
 #include <boost/operators.hpp>
 
@@ -1079,3 +1080,4 @@
 }
 
 #endif
+#endif
Modified: sandbox/opaque/boost/opaque/meta_mixin/using_explicit_conversion_to_ut_hierarchy.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/using_explicit_conversion_to_ut_hierarchy.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/using_explicit_conversion_to_ut_hierarchy.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c using_explicit_conversion_to_underlying_type_hierarchy meta-mixin.
+ */
+
 #ifndef BOOST_OPAQUE_TRANSITIVE_EXPLICIT_SUBSTITUABLE_HPP
 #define BOOST_OPAQUE_TRANSITIVE_EXPLICIT_SUBSTITUABLE_HPP
 
Modified: sandbox/opaque/boost/opaque/meta_mixin/using_implicit_conversion_to_ut_hierarchy.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/meta_mixin/using_implicit_conversion_to_ut_hierarchy.hpp	(original)
+++ sandbox/opaque/boost/opaque/meta_mixin/using_implicit_conversion_to_ut_hierarchy.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c using_implicit_conversion_to_underlying_type_hierarchy meta-mixin.
+ */
+
 #ifndef BOOST_OPAQUE_TRANSITIVE_SUBSTITUABLE_HPP
 #define BOOST_OPAQUE_TRANSITIVE_SUBSTITUABLE_HPP
 
Modified: sandbox/opaque/boost/opaque/new_class.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/new_class.hpp	(original)
+++ sandbox/opaque/boost/opaque/new_class.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -12,7 +12,8 @@
 
 
 /**
- * @File Defines the new_class<> class.
+ * @file
+ * Defines the new_class<> class.
  */
 
 
Deleted: sandbox/opaque/boost/opaque/new_class_macro.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/new_class_macro.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
+++ (empty file)
@@ -1,47 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Vicente J. Botet Escriba 2011.
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/opaque for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_OPAQUE_NEW_CLASS_MACRO_HPP
-#define BOOST_OPAQUE_NEW_CLASS_MACRO_HPP
-
-#include <boost/config.hpp>
-#include <boost/opaque/new_class.hpp>
-#include <boost/opaque/macros.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
-
-
-/**
-
- @brief
-
- @Params
- @Param{NC,the new class to be defined }
- @Param{UT,the underlying type}
- @Param{MMSEQ,the META_MIXIN_SEQ sequence}
-
- @Result If @c MMSEQ is <c>( (MM1) ... ((MMn) )</c>
- @code
-  boost::opaque::new_class< NC, UT,
-      boost::mpl::vector<MM1, ..., MMn>
-  >
- @endcode
-
- */
-
-#define BOOST_OPAQUE_NEW_CLASS(NC, UT, MMSEQ)                \
-  boost::opaque::new_class< NC, UT,       \
-      boost::mpl::vector<                                   \
-          BOOST_PP_SEQ_ENUM(MMSEQ)                          \
-      > >
-
-
-#endif
Modified: sandbox/opaque/boost/opaque/new_type.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/new_type.hpp	(original)
+++ sandbox/opaque/boost/opaque/new_type.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the new_type<> class.
+ */
+
 #ifndef BOOST_OPAQUE_NEW_TYPE_HPP
 #define BOOST_OPAQUE_NEW_TYPE_HPP
 
Deleted: sandbox/opaque/boost/opaque/new_type_macro.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/new_type_macro.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
+++ (empty file)
@@ -1,47 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Vicente J. Botet Escriba 2011.
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/opaque for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_OPAQUE_NEW_TYPE_MACRO_HPP
-#define BOOST_OPAQUE_NEW_TYPE_MACRO_HPP
-
-#include <boost/config.hpp>
-#include <boost/opaque/new_type.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
-
-/**
-
- @brief Generates the code to define a new typedef.
-
- @Params
- @Param{UT,the underlying type}
- @Param{NT,the new type to be defined }
- @Param{MMSEQ,the META_MIXIN_SEQ sequence}
-
- @Result If @c MMSEQ is <c>( (MM1) ... ((MMn) )</c>
- @code
-  struct NC_tag {};
-  typedef boost::opaque::new_type< UT, NC_tag,
-      boost::mpl::vector<MM1, ..., MMn>
-  > NT
- @endcode
-
- */
-
-#define BOOST_OPAQUE_NEW_TYPE(UT,NT,MMSEQ)                  \
-  struct BOOST_JOIN(NT,_tag){};                             \
-  typedef boost::opaque::new_type< UT, BOOST_JOIN(NT,_tag), \
-      boost::mpl::vector<                                   \
-          BOOST_PP_SEQ_ENUM(MMSEQ)                          \
-      >                                                     \
-  > NT
-
-#endif
Modified: sandbox/opaque/boost/opaque/opaque.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/opaque.hpp	(original)
+++ sandbox/opaque/boost/opaque/opaque.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,25 +10,34 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Includes all the opaque public headers.
+ */
+
 #ifndef BOOST_OPAQUE_OPAQUE_HPP
 #define BOOST_OPAQUE_OPAQUE_HPP
 
 #include <boost/opaque/new_type.hpp>
 #include <boost/opaque/new_class.hpp>
-#include <boost/opaque/meta_mixin/operators.hpp>
-#include <boost/opaque/meta_mixin/combined_operators.hpp>
 #include <boost/opaque/private_opaque_type.hpp>
 #include <boost/opaque/private_opaque_class.hpp>
 #include <boost/opaque/public_opaque_type.hpp>
 #include <boost/opaque/public_opaque_class.hpp>
 #include <boost/opaque/boolean.hpp>
+#include <boost/opaque/meta_mixin/operators.hpp>
+#include <boost/opaque/meta_mixin/combined_operators.hpp>
 #include <boost/opaque/macros.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/assert.hpp>
 
+#if !defined(BOOST_OPAQUE_DOXYGEN_INVOKED)
+
 #define BOOST_OPAQUE_STATIC_ASSERT(CND, MSG, TYPES)                                 \
     BOOST_MPL_ASSERT_MSG(boost::mpl::bool_< (CND) >::type::value, MSG, TYPES)
 
+#endif
+
 namespace boost {
 
     #if 0
Modified: sandbox/opaque/boost/opaque/private_opaque_class.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/private_opaque_class.hpp	(original)
+++ sandbox/opaque/boost/opaque/private_opaque_class.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,11 +10,14 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c base_private_opaque_type and @c private_opaque_class classes.
+ */
+
 #ifndef BOOST_OPAQUE_PRIVATE_OPAQUE_CLASS_HPP
 #define BOOST_OPAQUE_PRIVATE_OPAQUE_CLASS_HPP
 
-
-
 #include <boost/opaque/meta_mixin/inherited_from_underlying.hpp>
 #include <boost/opaque/meta_mixin/using_explicit_conversion_to_ut_hierarchy.hpp>
 
Modified: sandbox/opaque/boost/opaque/private_opaque_type.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/private_opaque_type.hpp	(original)
+++ sandbox/opaque/boost/opaque/private_opaque_type.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c private_opaque_type class.
+ */
+
 #ifndef BOOST_OPAQUE_PRIVATE_OPAQUE_TYPE_HPP
 #define BOOST_OPAQUE_PRIVATE_OPAQUE_TYPE_HPP
 
Modified: sandbox/opaque/boost/opaque/public_opaque_class.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/public_opaque_class.hpp	(original)
+++ sandbox/opaque/boost/opaque/public_opaque_class.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c base_public_opaque_type and @c public_opaque_class classes.
+ */
+
 #ifndef BOOST_OPAQUE_PUBLIC_OPAQUE_CLASS_HPP
 #define BOOST_OPAQUE_PUBLIC_OPAQUE_CLASS_HPP
 
Modified: sandbox/opaque/boost/opaque/public_opaque_type.hpp
==============================================================================
--- sandbox/opaque/boost/opaque/public_opaque_type.hpp	(original)
+++ sandbox/opaque/boost/opaque/public_opaque_type.hpp	2011-03-27 13:48:19 EDT (Sun, 27 Mar 2011)
@@ -10,6 +10,11 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+/**
+ * @file
+ * Defines the @c public_opaque_type class.
+ */
+
 #ifndef BOOST_OPAQUE_PUBLIC_OPAQUE_TYPE_HPP
 #define BOOST_OPAQUE_PUBLIC_OPAQUE_TYPE_HPP