$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: hervebronnimann_at_[hidden]
Date: 2007-06-09 01:04:26
Author: hervebronnimann
Date: 2007-06-09 01:04:26 EDT (Sat, 09 Jun 2007)
New Revision: 4507
URL: http://svn.boost.org/trac/boost/changeset/4507
Log:
A few improvements, moving doc to file-level doc, doxygen looks a lot
better.  Also corrected a few anomalies.  What happened to
traversal_category?
Text files modified: 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp |   123 +++++++++++++++++++++++++-------------- 
   1 files changed, 78 insertions(+), 45 deletions(-)
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp	2007-06-09 01:04:26 EDT (Sat, 09 Jun 2007)
@@ -1,12 +1,83 @@
+/**
+ * @file hds_concept.hpp
+ *
+ * @brief HDS concept definition.
+ *
+ * @par Definition
+ * This concept is the basic HDS concept, which all the other HDS
+ * concepts refine.  It contains a few requirements which are common to
+ * all the graph concepts.  One should note that a model of HDS is not
+ * required to be a model of Assignable, so algorithms should pass HDS
+ * objects by reference.
+ *
+ * @par Refinement of:
+ * This concept is not a refinement of another concept, in   particular a
+ * model HDS of HDSConcept does @e not need to be DefaultConstructible,
+ * CopyConstructible, or Assignable.
+ *
+ * @par Notation
+ *  - HDS        A type that is a model of HDSConcept
+ *  - hds        A non-modifiable instance of HDS
+ *  - h,g        Halfedge descriptors, of type X::halfedge_descriptor
+ *
+ * @par Associated types
+ *  - hds_traits<HDS>::halfedge_descriptor: must be DefaultConstructible and 
+ *                         CopyConstructible, EqualityComparable, Assignable.
+ *
+ * @par Definitions
+ * @e halfedge @e descriptor is a type that contains information to access
+ * the halfedge.  Note that the halfedge descriptor type (accessible as a
+ * member of the hds_traits<HDS> type) is an opaque type.  All that can be
+ * done to it is passing it to the function opposite and letting the hds use
+ * the information it contains to find the opposite halfedge.  In
+ * particular, there is no guarantee that it is a pointer type.
+ *
+ * @par Valid Expressions
+ *   - opposite(hds, h): Must return a value assignable to h.
+ *
+ * @par Expression Semantics
+ *   - opposite(hds, h): Returns a descriptor to the halfedge opposite h in
+ *     the data structure hds. Does not modify the state of either hds,
+ *     or h.
+ *
+ * @par Complexity guarantees
+ *   - opposite(hds, h): Amortized constant time.
+ *
+ * @par Invariants
+ *   - Every valid halfedge descriptor h must have a valid opposite
+ *     g = opposite(hds, h), @e distinct from h, such that
+ *     opposite(hds, g) returns h.  (Hence, opposite is an involution.)
+ *
+ * @par Concept-checking class
+ * \code
+ * template <class HDS> 
+ * struct HDSConcept {
+ *   typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
+ *   void constraints() {
+ *     using namespace boost;
+ *     function_requires<DefaultConstructibleConcept<halfedge_descriptor> >();
+ *     function_requires<CopyConstructibleConcept<halfedge_descriptor> >();
+ *     function_requires<EqualityComparableConcept<halfedge_descriptor> >();
+ *     function_requires<AssignableConcept<halfedge_descriptor> >();
+ *     h = opposite(hds,h);
+ *     const_constraints(hds);
+ *   }
+ *   void const_constraints(HDS const& hds) {
+ *     h = opposite(hds,h);
+ *   }
+ * \endcode
+ */
+
+#ifdef BOOST_HDSTL_CONCEPTS_HDSCONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_HDSCONCEPT_HPP 1
+
 namespace hdstl{
 namespace concepts {
 
    /**
-    * @file hds_concept.hpp
-    *
     * @class HDSConcept
     *
-    * @brief HDS concept definition.
+    * @brief HDS concept checking class
     *
     * @par Definition
     * This class provides a concept checking class for the HDSConcept, i.e.,
@@ -14,49 +85,9 @@
     * function body, or BOOST_CLASS_REQUIRE(HDS, boost::hdstl, HDSConcept)
     * inside a class definition body, should trigger a compile-time error if
     * the type HDS does not model the HDSConcept.
-    *
-    * @par Refinement of:
-    * This concept is not a refinement of another concept, in   particular a
-    * model HDS of HDSConcept does @e not need to be DefaultConstructible,
-    * CopyConstructible, or Assignable.
-    *
-    * @par Notation
-    *  - HDS        A type that is a model of HDSConcept
-    *  - X          The type HDSConcept<HDS>
-    *  - hds        A non-modifiable instance of HDS
-    *  - h,g        Halfedge descriptors, of type X::halfedge_descriptor
-    *
-    * @par Associated types
-    *  - X::halfedge_descriptor: must be DefaultConstructible and 
-    *    CopyConstructible, EqualityComparable, Assignable.
-    *
-    * @par Definitions
-    * @e halfedge @e descriptor is a type that contains information to access
-    * the halfedge.  Note that the halfedge descriptor type (accessible as a
-    * member of the hds_traits<HDS> type) is an opaque type.  All that can be
-    * done to it is passing it to the function opposite and letting the hds use
-    * the information it contains to find the opposite halfedge.  In
-    * particular, there is no guarantee that it is a pointer type.
-    *
-    * @par Valid Expressions
-    *   - opposite(hds, h): Must return a value assignable to h.
-    *
-    * @par Expression Semantics
-    *   - opposite(hds, h): Returns a descriptor to the halfedge opposite h in
-    *     the data structure hds. Does not modify the state of either hds,
-    *     or h
-    *
-    * @par Complexity guarantees
-    *   - opposite(hds, h): Amortized constant time.
-    *
-    * @par Invariants
-    *   - Every valid halfedge descriptor h must have a valid opposite
-    *     g = opposite(hds, h), @e distinct from h, such that
-    *     opposite(hds, g) returns h.  (Hence, opposite is an involution.)
     */
    template <class HDS> 
    struct HDSConcept {
-      /// \cond
       //@{
       /** @name Required types: 
        * The specialization of hds_traits<HDS> must have the required types
@@ -88,7 +119,9 @@
       }
       HDS hds;
       halfedge_descriptor h;
-      /// \endcond
    };
 
- }}//namespaces
+}  // close namespace concepts
+}  // close namespace hdstl
+
+#endif