$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: hervebronnimann_at_[hidden]
Date: 2007-06-28 02:43:09
Author: hervebronnimann
Date: 2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
New Revision: 7295
URL: http://svn.boost.org/trac/boost/changeset/7295
Log:
Major clean up of the documentation, script, providing skeletton for main page,
etc.  Doxygen looks really nice now.
Text files modified: 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp                                   |   127 +++++++++++++--                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp              |    10                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp         |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp                 |    13                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp            |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp               |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp         |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp                       |    10                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp      |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp         |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp       |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp               |    10                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp        |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp                |    13                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp           |    12                                         
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_traits.hpp                                     |   333 +++++++++++++++++++++++++++------------ 
   sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf                                         |     4                                         
   sandbox/SOC/2007/geometry/libs/hdstl/tools/doc.pl                                           |    54 +++++-                                  
   19 files changed, 490 insertions(+), 204 deletions(-)
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -2,21 +2,115 @@
 //
 //@PURPOSE: Provides concept checking classes for HDS-related concepts.
 //
-///HDS Introduction
-///----------------
-// The Halfedge Data Structure Template Library, or HDSTL, is a C++ library of
-// edge-based data structures and algorithms to represent two-dimensional
-// combinatorial structures.Halfedge data structures represent two-dimensional
-// combinatorial structures like planar structures (including planar graphs,
-// triangulations, Voronoi diagrams), and 2-manifolds (like polyhedral
-// boundaries, 2D surfaces).
-
-
-
-//
 ///HDS Concepts
 ///------------
-// FILLME
+// This library defines the following concepts:
+//
+// - [hdsconcept] is the basic concept, which all the other HDS concepts refine.
+//   Requires a halfedge descriptor type and access to the opposite halfedge.
+//
+// - [forwardhdsconcept] refines the [hdsconcept], and requires access to the next
+//   halfedge along a facet boundary, at source, or at target.  All three
+//   halfedges are linked by algebraic relations involving opposite, so having
+//   one is like having all three.
+//
+// - [backwardhdsconcept] refines the [hdsconcept], and requires access to the
+//   previous halfedge along a facet boundary, at source, or at target.  All
+//   three halfedges are linked by algebraic relations involving opposite, so
+//   having one is like having all three.
+//
+// - [bidirectionalhdsconcept] is a combination of the [forwardhdsconcept] and
+//   of the [backwardhdSconcept], with no extra requirements.
+//
+// - [facethdsconcept] requires, in addition to the [hdsconcept], a facet
+//   descriptor and access to the facet incident to a given halfedge.
+//
+// - [vertexhdsconcept] requires, in addition to the [hdsconcept], a vertex
+//   descriptor and access to the vertex incident to a given halfedge, either at
+//   source or at target.
+//
+// - [halfedgelisthdsconcept] requires, in addition to [hdsconcept], a halfedge
+//   iterator, and methods for accessing the range of all halfedges in a given
+//   HDS.  Note that there are no pre-defined order for these halfedges.
+//
+// - [facetlisthdsconcept] requires, in addition to [facethdsconcept], a
+//   halfedge iterator, and methods for accessing the range of all facets in a
+//   given HDS.  Note that there are no pre-defined order for these facets.
+//
+// - [vertexlisthdsconcept] requires, in addition to [vertexhdsconcept], a
+//   vertex iterator, and methods for accessing the range of all vertices in a
+//   given HDS.  Note that there are no pre-defined order for these vertices.
+//
+// In addition to these concepts, this library also defines mutable concepts
+// mirroring each one of the above concepts:
+//
+// - [mutablehdsconcept] refines [hdsconcept], and requires the ability to
+//   create a new edge (pair of opposite halfedges), and to remove such a pair.
+//
+// - [mutableforwardhdsconcept] refines the [mutablehdsconcept] and the
+//   [forwardhdsconcept], and requires the ability to set the next halfedge
+//   along a facet boundary, at source, or at target.
+//
+// - [mutablebackwardhdsconcept] refines the [mutablehdsconcept] and the
+//   [backwardhdsconcept], and requires the ability to set the 
+//   previous halfedge along a facet boundary, at source, or at target.
+//
+// - [mutablebidirectionalhdsconcept] is a combination of the [mutableforwardhdsconcept] and
+//   of the [mutablebackwardhdSconcept], with no extra requirements.
+//
+// - [mutablefacethdsconcept] requires, in addition to the [mutablehdsconcept]
+//   and the [facethdsconcept], the ability to set the facet of a halfedge to a
+//   given facet descriptor.
+//
+// - [mutablevertexhdsconcept] requires, in addition to the [mutablehdsconcept]
+//   and the [vertexdsconcept], the ability to set the source or target of a
+//   halfedge to a given vertex descriptor.
+//
+// The following concept hierarchy gives a description of the relation ships
+// between these concepts.  The arrows '-->'  describe a *isA* relationship
+// between these concepts, that is, there is an arrow from *B* to *A* when a
+// concept *B* refines another concept *A*.
+//..
+//  ,---------------------.  ,------------------------.   ,----------------------. 
+//  | FacetListHDSConcept |  | HalfedgeListHDSConcept |   | VertexListHDSConcept | 
+//  `---------------------'  `------------------------'   `----------------------' 
+//             |                        |                           |
+//             v                        |                           v
+//    ,-----------------.               |                 ,------------------. 
+//    | FacetHDSConcept |               |                 | VertexHDSConcept | 
+//    `-----------------'               |                 `------------------' 
+//         |                            |                           |
+//         |                            |                           |
+//         |                ,-------------------------.             |
+//         |                | BidirectionalHDSConcept |             |
+//         |                `-------------------------'             |
+//         |                     |      |         |                 |
+//         |                     v      |         v                 |
+//         |    ,-------------------.   |   ,-------------------.   |
+//         |    | BackwardHDSConcept |  |   | ForwardHDSConcept |   |
+//         |    `-------------------'   |   `-------------------'   |
+//         |                     |      |    |                      |
+//         \                     v      v    v                      |
+//          \                   ,-------------.                    /
+//           `----------------> |  HDSConcept | <-----------------' 
+//                              `-------------'                     
+//..
+// In addition, there is an identical hierarchy among the mutable concepts,
+// with horizontal arrows between mutable and non-mutable.  That is, there is
+// an arrow from *MutableB* to *MutableA* iff there is an arrow from *B* to
+// *A*, and there always is an arrow from *MutableA* to *A*.  As an example,
+// the sub-lattice involving the 'HDS', 'ForwardHDS', 'MutableHDS', and
+// 'MutableForwardHDS' concepts looks like this:
+//..
+//             .   ,-------------------.        ,--------------------------.
+//             .   | ForwardHDSConcept |<-------| MutableForwardHDSConcept |
+//             .   `-------------------'        `--------------------------'
+//          .  .     |          .                  |
+//          v  v     v        .                    v             .
+//      ,-------------. < . .   ,-------------------.          .
+// . . >|  HDSConcept | <-------| MutableHDSConcept |< . . . .
+//      `-------------'         `-------------------'  
+//..
 
 #ifndef HDSTL_HDS_CONCEPTS_HPP
 #define HDSTL_HDS_CONCEPTS_HPP
@@ -25,17 +119,16 @@
 #include <hds_concepts/forward_hds_concept.hpp>
 #include <hds_concepts/backward_hds_concept.hpp>
 #include <hds_concepts/bidirectional_hds_concept.hpp>
-#include <hds_concepts/vertex_hds_concept.hpp>
 #include <hds_concepts/facet_hds_concept.hpp>
-#include <hds_concepts/mutable_hds_concept.hpp>
+#include <hds_concepts/vertex_hds_concept.hpp>
+#include <hds_concepts/halfedge_list_hds_concept.hpp>
 #include <hds_concepts/vertex_list_hds_concept.hpp>
 #include <hds_concepts/facet_list_hds_concept.hpp>
-#include <hds_concepts/halfedge_list_hds_concept.hpp>
 #include <hds_concepts/mutable_hds_concept.hpp>
 #include <hds_concepts/mutable_forward_hds_concept.hpp>
 #include <hds_concepts/mutable_backward_hds_concept.hpp>
 #include <hds_concepts/mutable_bidirectional_hds_concept.hpp>
-#include <hds_concepts/mutable_vertex_hds_concept.hpp>
 #include <hds_concepts/mutable_facet_hds_concept.hpp>
+#include <hds_concepts/mutable_vertex_hds_concept.hpp>
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -15,7 +15,7 @@
 // argument is a model of the HDS concept described on the page
 // [backwardhds].
 //
-//@CONCEPT: [backwardhds] Backward HDS concept
+//@CONCEPT: [backwardhdsconcept] Backward HDS concept
 //
 ///Definition
 ///----------
@@ -130,6 +130,7 @@
 #ifndef BOOST_HDSTL_CONCEPTS_BACKWARD_HDS_CONCEPT_HPP
 #define BOOST_HDSTL_CONCEPTS_BACKWARD_HDS_CONCEPT_HPP 1
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
 
@@ -147,12 +148,12 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'BackwardHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::backward_category backward_category;
 
-        // MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints()
             // Check that the 'HDS' template parameter satisfies all the
             // constraints of 'BackwardHDSConcept' on page 
@@ -174,7 +175,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'BackwardHDSConcept'.
@@ -193,5 +194,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -14,9 +14,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page
-// [bidirectionalhds].
+// [bidirectionalhdsconcept].
 //
-//@CONCEPT: [bidirectionalhds] Bidirectional HDS concept
+//@CONCEPT: [bidirectionalhdsconcept] Bidirectional HDS concept
 //
 ///Definition
 ///-----------
@@ -100,6 +100,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
    
@@ -117,7 +118,7 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'BidirectionalHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::forward_category forward_category;
@@ -127,7 +128,7 @@
             // description of the 'BidirectionalHDS' concept on page 
             // [bidirectionalhdsconcept].
 
-        //MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameter satisfies all the
             // constraints of 'BidirectionalHDSConcept' on page 
@@ -140,7 +141,7 @@
                                                  bidirectional_traversal_tag> >();  
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'BidirectionalHDSConcept'.
@@ -154,5 +155,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -12,9 +12,10 @@
 //  BOOST_CLASS_REQUIRE(HDS, boost::hdstl,FacetHDSConcept);
 //..
 // inside a class body, checks whether the type given as template
-// argument is a model of the HDS concept described on the page [facethds].
+// argument is a model of the HDS concept described on the page
+// [facethdsconcept].
 //
-//@CONCEPT: [facethds] Facet HDS concept
+//@CONCEPT: [facethdsconcept] Facet HDS concept
 //
 ///Definition
 ///----------
@@ -98,6 +99,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -115,13 +117,13 @@
        // inside a class definition body, should trigger a compile-time error
        // if the type HDS does not model the 'FacetHDSConcept'.
 
-       // TYPES
+       // OPAQUE TYPES
        typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor; 
            // The specialization of 'hds_traits<HDS>' must have these required
            // types, obeying the types requirements stated in the detailed
            // description of the 'FacetHDS' concept on page [facethdsconcept].
 
-       //MANIPULATORS
+       // OPAQUE MANIPULATORS
        void constraints() 
            // Check that the 'HDS' template parameters satisfies all the
            // constraints of 'FacetHDSConcept' on page [facethdsconcept].
@@ -138,7 +140,7 @@
            const_constraints(hds);
        }
 
-       // ACCESSORS
+       // OPAQUE ACCESSORS
        void const_constraints(HDS const& hds) 
            // Check that the non-modifiable 'HDS' template parameters
            // satisfies all the constraints of 'FacetHDSConcept'.
@@ -154,5 +156,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page 
-// [facetlisthds].
+// [facetlisthdsconcept].
 //
-//@CONCEPT: [facetlisthds] Facet List HDS concept
+//@CONCEPT: [facetlisthdsconcept] Facet List HDS concept
 //
 ///Definition
 ///----------
@@ -123,6 +123,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -140,7 +141,7 @@
        // inside a class definition body, should trigger a compile-time error
        // if the type HDS does not model the 'FacetListHDSConcept'.
 
-       // TYPES
+       // OPAQUE TYPES
        typedef typename hds_traits<HDS>::facet_iterator  facet_iterator;
        typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor;
        typedef typename hds_traits<HDS>::size_type size_type;
@@ -149,7 +150,7 @@
        // description of the 'FacetListHDS' concept on page 
        // [facetlisthdsconcept].
 
-       //MANIPULATORS
+       // OPAQUE MANIPULATORS
        void constraints() 
            // Check that the 'HDS' template parameters satisfies all the
            // constraints of 'FacetListHDSConcept' on page 
@@ -169,7 +170,7 @@
            const_constraints(hds);
        }
 
-       // ACCESSORS
+       // OPAQUE ACCESSORS
        void const_constraints(HDS const& hds) 
            // Check that the non-modifiable 'HDS' template parameters
            // satisfies all the constraints of 'FacetListHDSConcept'.
@@ -192,5 +193,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page
-// [forwardhds].
+// [forwardhdsconcept].
 //
-//@CONCEPT: [forwardhds] Forward HDS concept
+//@CONCEPT: [forwardhdsconcept] Forward HDS concept
 //
 ///Definition
 ///----------
@@ -133,6 +133,7 @@
 #ifndef BOOST_HDSTL_CONCEPTS_FORWARD_HDS_CONCEPT_HPP
 #define BOOST_HDSTL_CONCEPTS_FORWARD_HDS_CONCEPT_HPP 1
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
 
@@ -150,7 +151,7 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'ForwardHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::forward_category forward_category;
@@ -159,7 +160,7 @@
             // description of the 'ForwardHDS' concept on page 
             // [forwardhdsconcept].
 
-        // MANIPULATORS
+        //  OPAQUE MANIPULATORS
         void constraints()
             // Check that the 'HDS' template parameter satisfies all the
             // constraints of 'ForwardHDSConcept' on page 
@@ -182,7 +183,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'ForwardHDSConcept'.
@@ -201,5 +202,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page 
-// [halfedgelisthds].
+// [halfedgelisthdsconcept].
 //
-//@CONCEPT: [halfedgelisthds] Halfedge List HDS concept
+//@CONCEPT: [halfedgelisthdsconcept] Halfedge List HDS concept
 //
 ///Definition
 ///----------
@@ -121,6 +121,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -138,7 +139,7 @@
        // inside a class definition body, should trigger a compile-time error
        // if the type HDS does not model the 'HalfedgeListHDSConcept'.
 
-       // TYPES
+       // OPAQUE TYPES
        typedef typename hds_traits<HDS>::halfedge_iterator  halfedge_iterator;
        typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
        typedef typename hds_traits<HDS>::halfedges_size_type halfedges_size_type;
@@ -147,7 +148,7 @@
        // description of the 'HalfedgeListHDS' concept on page 
        // [halfedgelisthdsconcept].
 
-       //MANIPULATORS
+       // OPAQUE MANIPULATORS
        void constraints() 
            // Check that the 'HDS' template parameters satisfies all the
            // constraints of 'HalfedgeListHDSConcept' on page 
@@ -164,7 +165,7 @@
            const_constraints(hds);
        }
 
-       // ACCESSORS
+       // OPAQUE ACCESSORS
        void const_constraints(HDS const& hds) 
            // Check that the non-modifiable 'HDS' template parameters
            // satisfies all the constraints of 'HalfedgeListHDSConcept'.
@@ -185,5 +186,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
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-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -15,7 +15,7 @@
 // argument is a model of the HDS concept described on the page
 // [hdsconcept].
 //
-//@CONCEPT: [hdsconcept] HDS concept definition
+//@CONCEPT: [hdsconcept] HDS concept
 //
 ///Definition
 ///----------
@@ -113,6 +113,7 @@
 
 namespace boost {
 namespace hdstl {
+namespace concepts {
 
     template <class HDS> 
     struct HDSConcept {
@@ -128,13 +129,13 @@
         // inside a class definition body, should trigger a compile-time
         // error if the type 'HDS' does not model the 'HDS' concept.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
             // The specialization of 'hds_traits<HDS>' must have these required
             // types, obeying the types requirements stated in the detailed
             // description of the 'HDS' concept on page [hdsconcept].
 
-        // MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints()
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'HDSConcept' on page [hdsconcept].
@@ -149,7 +150,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(const HDS& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'HDSConcept'.
@@ -165,6 +166,7 @@
         halfedge_descriptor h;   // a halfedge descriptor
     };
 
+}  // close namespace concepts
 }  // close namespace hdstl
 }  // close namespace boost
 
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page
-// [mutablebackwardhds].
+// [mutablebackwardhdsconcept].
 //
-//@CONCEPT: [mutablebackwardhds] Mutable Backward HDS concept
+//@CONCEPT: [mutablebackwardhdsconcept] Mutable Backward HDS concept
 //
 ///Definition
 ///----------
@@ -109,6 +109,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
 
@@ -126,7 +127,7 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'MutableBackwardHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::backward_category backward_category;
@@ -135,7 +136,7 @@
             // detailed description of the 'MutableBackwardHDS' concept on page
             // [mutablebackwardhdsconcept].
 
-        // MANIPULATORS
+        //  OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'MutableBackwardHDSConcept' on page 
@@ -152,7 +153,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'MutableBackwardHDSConcept'.
@@ -167,5 +168,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -14,9 +14,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page
-// [mutablebidirectionalhds].
+// [mutablebidirectionalhdsconcept].
 //
-//@CONCEPT: [mutablebidirectionalhds] Mutable Bidirectional HDS concept
+//@CONCEPT: [mutablebidirectionalhdsconcept] Mutable Bidirectional HDS concept
 //
 ///Definition
 ///-----------
@@ -91,6 +91,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
    
@@ -108,7 +109,7 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'MutableBidirectionalHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::forward_category forward_category;
@@ -118,7 +119,7 @@
             // description of the 'MutableBidirectionalHDS' concept on page 
             // [mutablebidirectionalhdsconcept].
 
-        //MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'MutableBidirectionalHDSConcept' on page 
@@ -132,7 +133,7 @@
                                                  bidirectional_traversal_tag> >();  
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 
@@ -147,5 +148,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page 
-// [mutablefacethds].
+// [mutablefacethdsconcept].
 //
-//@CONCEPT: [mutablefacethds] Mutable Facet HDS concept
+//@CONCEPT: [mutablefacethdsconcept] Mutable Facet HDS concept
 //
 ///Definition
 ///----------
@@ -105,6 +105,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -122,14 +123,14 @@
        // inside a class definition body, should trigger a compile-time error
        // if the type HDS does not model the 'MutableFacetHDSConcept'.
 
-       // TYPES
+       // OPAQUE TYPES
        typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor; 
            // The specialization of 'hds_traits<HDS>' must have these required
            // types, obeying the types requirements stated in the detailed
            // description of the 'MutableFacetHDS' concept on page 
            // [mutablefacethdsconcept].
 
-       //MANIPULATORS
+       // OPAQUE MANIPULATORS
        void constraints() 
            // Check that the 'HDS' template parameters satisfies all the
            // constraints of 'MutableFacetHDSConcept' on page 
@@ -148,7 +149,7 @@
            const_constraints(hds);
        }
 
-       // ACCESSORS
+       // OPAQUE ACCESSORS
        void const_constraints(HDS const& hds) 
            // Check that the non-modifiable 'HDS' template parameters
            // satisfies all the constraints of 'MutableFacetHDSConcept'.
@@ -164,5 +165,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page
-// [mutableforwardhds].
+// [mutableforwardhdsconcept].
 //
-//@CONCEPT: [mutableforwardhds] Mutable Forward HDS concept
+//@CONCEPT: [mutableforwardhdsconcept] Mutable Forward HDS concept
 //
 ///Definition
 ///----------
@@ -109,6 +109,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts{
 
@@ -126,7 +127,7 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'MutableForwardHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor; 
         typedef typename hds_traits<HDS>::traversal_category traversal_category;
         typedef typename hds_traits<HDS>::forward_category forward_category;
@@ -135,7 +136,7 @@
             // detailed description of the 'MutableForwardHDS' concept on page
             // [mutableforwardhdsconcept].
 
-        // MANIPULATORS
+        //  OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'MutableForwardHDSConcept' on page 
@@ -152,7 +153,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'MutableForwardHDSConcept'.
@@ -167,5 +168,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -15,7 +15,7 @@
 // argument is a model of the MutableHDS concept described on the page
 // [mutablehdsconcept].
 //
-//@CONCEPT: [mutablehdsconcept] Mutable HDS concept definition
+//@CONCEPT: [mutablehdsconcept] Mutable HDS concept
 //
 ///Definition
 ///----------
@@ -93,6 +93,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl {
 namespace concepts {
 
@@ -111,7 +112,7 @@
         // inside a class definition body, should trigger a compile-time
         // error if the type 'HDS' does not model the 'MutableHDS' concept.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::halfedge_descriptor 
                                           halfedge_descriptor; 
             // The specialization of 'hds_traits<HDS>' must have these
@@ -119,7 +120,7 @@
             // detailed description of the 'MutableHDS' concept on page
             // [mutablehdsconcept].
 
-        // MANIPULATORS
+        //  OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'MutableHDSConcept' on page [mutablehdsconcept].
@@ -132,7 +133,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds) 
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'MutableHDSConcept'.
@@ -147,5 +148,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page 
-// [mutablevertexhds].
+// [mutablevertexhdsconcept].
 //
-//@CONCEPT: [mutablevertexhds] Mutable Vertex HDS concept
+//@CONCEPT: [mutablevertexhdsconcept] Mutable Vertex HDS concept
 //
 ///Definition
 ///----------
@@ -109,6 +109,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -126,14 +127,14 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'MutableVertexHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor; 
             // The specialization of 'hds_traits<HDS>' must have these required
             // types, obeying the types requirements stated in the detailed
             // description of the 'MutableVertexHDS' concept on page 
             // [mutablevertexhdsconcept].
 
-        //MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'MutableVertexHDSConcept' on page 
@@ -154,7 +155,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds) 
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'MutableVertexHDSConcept'.
@@ -170,5 +171,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -12,9 +12,10 @@
 //  BOOST_CLASS_REQUIRE(HDS, boost::hdstl,VertexHDSConcept);
 //..
 // inside a class body, checks whether the type given as template
-// argument is a model of the HDS concept described on the page [vertexhds].
+// argument is a model of the HDS concept described on the page
+// [vertexhdsconcept].
 //
-//@CONCEPT: [vertexhds] Vertex HDS concept
+//@CONCEPT: [vertexhdsconcept] Vertex HDS concept
 //
 ///Definition
 ///----------
@@ -102,6 +103,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -119,13 +121,13 @@
         // inside a class definition body, should trigger a compile-time error
         // if the type HDS does not model the 'VertexHDSConcept'.
 
-        // TYPES
+        // OPAQUE TYPES
         typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor; 
             // The specialization of 'hds_traits<HDS>' must have these required
             // types, obeying the types requirements stated in the detailed
             // description of the 'VertexHDS' concept on page [vertexhdsconcept].
 
-        //MANIPULATORS
+        // OPAQUE MANIPULATORS
         void constraints() 
             // Check that the 'HDS' template parameters satisfies all the
             // constraints of 'VertexHDSConcept' on page [vertexhdsconcept].
@@ -143,7 +145,7 @@
             const_constraints(hds);
         }
 
-        // ACCESSORS
+        // OPAQUE ACCESSORS
         void const_constraints(HDS const& hds) 
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'VertexHDSConcept'.
@@ -160,5 +162,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -13,9 +13,9 @@
 //..
 // inside a class body, checks whether the type given as template
 // argument is a model of the HDS concept described on the page 
-// [vertexlisthds].
+// [vertexlisthdsconcept].
 //
-//@CONCEPT: [vertexlisthds] Vertex List HDS concept
+//@CONCEPT: [vertexlisthdsconcept] Vertex List HDS concept
 //
 ///Definition
 ///----------
@@ -122,6 +122,7 @@
 
 #include <boost/concepts.h>
 
+namespace boost {
 namespace hdstl{
 namespace concepts {
 
@@ -139,7 +140,7 @@
        // inside a class definition body, should trigger a compile-time error
        // if the type HDS does not model the 'VertexListHDSConcept'.
 
-       // TYPES
+       // OPAQUE TYPES
        typedef typename hds_traits<HDS>::vertex_iterator  vertex_iterator;
        typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor;
        typedef typename hds_traits<HDS>::size_type size_type;
@@ -148,7 +149,7 @@
            // description of the 'VertexListHDS' concept on page 
            // [vertexlisthdsconcept].
 
-       //MANIPULATORS
+       // OPAQUE MANIPULATORS
        void constraints() 
            // Check that the 'HDS' template parameters satisfies all the
            // constraints of 'VertexListHDSConcept' on page 
@@ -166,7 +167,7 @@
            const_constraints(hds);
        }
 
-       // ACCESSORS
+       // OPAQUE ACCESSORS
        void const_constraints(HDS const& hds) 
            // Check that the non-modifiable 'HDS' template parameters
            // satisfies all the constraints of 'VertexListHDSConcept'.
@@ -188,5 +189,6 @@
 
 }  // close namespace concepts
 }  // close namespace hdstl
+}  // close namespace boost
 
 #endif
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_traits.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_traits.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_traits.hpp	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -2,103 +2,129 @@
 //
 //@PURPOSE: Provide all the basic types and choices of the 'HDS'.
 //
-//@DESCRIPTION: This file provides the 'HDS' traits concept as a class, which 
-// provides all the component types for 'HDS' and defines the choices.
+//@CLASSES:
+//             'hds_traits<HDS>':  parameterized traits class for 'HDS' types
+//      'backward_traversal_tag':  tag type for models of 'BackwardHds' concept
+// 'bidirectional_traversal_tag':  tag type for models of 'BidirectionalHds' concept
+//       'forward_traversal_tag':  tag type for models of 'ForwardHds' concept
+//          'next_at_source_tag':  tag type for forward primary access
+//          'next_at_target_tag':  tag type for forward primary access
+//           'next_in_facet_tag':  tag type for forward primary access
+//          'prev_at_source_tag':  tag type for backward primary access
+//          'prev_at_target_tag':  tag type for backward primary access
+//           'prev_in_facet_tag':  tag type for backward primary access
+//  
+//@SEE_ALSO: {hds_concepts.hpp}
 //
-//@CONCEPT: [hdstraits] HDS traits definition
+//@DESCRIPTION: This file provides the default 'HDS' traits class, which 
+// provides information about the 'HDS' template parameter.  The members of the
+// traits class are as follows, grouped by concepts.  Note that, since
+// 'hds_traits' is a template, the types which have no meaning (e.g.,
+// 'facet_descriptor' when the 'HDS' template parameter does not model
+// the 'FacetHds' concept) can remain undefined, so long as they are not
+// used at instantiation.
+//..
+//  Hds concept
+//  -----------
+//  halfedge_descriptor     A type that contains information to access the
+//                          halfedge.  Note that the halfedge descriptor 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 the descriptor be a pointer type.
+//  traversal_category      A type that contains information about the 
+//                          direction of the traversal, which is forward,
+//                          backward or bidirectional.
+//  supports_facets         A value usable as a Boolean which is true if 'HDS'
+//                          models the 'FacetHds' concept.
+//  supports_vertices       A value usable as a Boolean which is true if 'HDS'
+//                          models the 'VertexHds' concept.
 //
-///Notation
-///--------
-//  - 'HDS'    A type that is a model of 'HDSConcept'
+//  ForwardHds concept
+//  ------------------
+//  forward_category        A tag type to describe the primary accessor of the
+//                          forward information for use by algorithms which
+//                          desire the most direct access.  Only for models
+//                          of 'ForwardHds' concept.
 //
-///Associated types
-///----------------
-//  - 'HDS::halfedge_descriptor': must be 'DefaultConstructible',
-//    'CopyConstructible', 'EqualityComparable', and 'Assignable'.
-//  - 'HDS::vertex_descriptor': must be 'DefaultConstructible', 
-//    'CopyConstructible', 'EqualityComparable', and 'Assignable'.
-//  - 'HDS::facet_descriptor': must be 'DefaultConstructible', 
-//    'CopyConstructible', 'EqualityComparable', and 'Assignable'.
-//  - 'HDS::vertex_iterator': must be a model of the 
-//    'ForwardIterator' concept. The value type of the vertex iterator must
-//    be the same as the 'vertex_descriptor'.
-//  - 'HDS::facet_iterator': must be a model of the
-//    'ForwardIterator' concept.  The value type of the facet iterator
-//    must be the same as the 'facet_descriptor'.
-//  - 'HDS::halfedge_iterator': must be a model of the
-//    'ForwardIterator' concept. The value type of the halfedge iterator
-//    must be the same as the 'halfedge_descriptor'.
-//  - 'HDS::const_vertex_iterator': must be a model of the 
-//    'ForwardIterator' concept. The value type of the vertex iterator must
-//    be the same as the 'vertex_descriptor'.
-//  - 'HDS::facet_iterator': must be a model of the
-//    'ForwardIterator' concept.  The value type of the facet iterator
-//    must be the same as the 'facet_descriptor'.
-//  - 'HDS::halfedge_iterator': must be a model of the
-//    'ForwardIterator' concept. The value type of the halfedge iterator
-//    must be the same as the 'halfedge_descriptor'.
-//  - 'HDS::size_type': integral size type.
-//  - 'HDS::traversal_category': must be convertible to one of
-//     'hdstl::forward_traversal_tag', 'hdstl::backward_traversal_tag' or
-//     'hdstl::bidirectional_traversal_tag'
-//  - 'HDS::forward_category': defines the pointer type for forward iteration.
-//  - 'HDS::backward_category': defines the pointer type for backward iteration.
-//
-///Definitions
-///-----------
-//  - 'halfedge_descriptor' is a type that contains information to access the
-//    halfedge.  Note that the halfedge descriptor 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 the descriptor be a pointer type.
-//  - 'vertex_descriptor' is a type that contains information to access the
-//     vertex at the source or the target of the halfedge.
-//  - 'facet_descriptor' is a type that contains information to access the
-//     facet to the left of the halfedge, if forward facet cycles are
-//     ordered in counter clockwise rotation around the facet.
-//  - 'vertex_iterator' is an iterator type for the vertices.
-//  - 'facet_iterator' is an iterator type for the facets.
-//  - 'halfedge_iterator' is an iterator type for the halfedges.
-//  - 'vertex_iterator' is a const iterator type for the vertices.
-//  - 'facet_iterator' is a const iterator type for the facets.
-//  - 'halfedge_iterator' is a const iterator type for the halfedges.
-//  - 'size_type' defines the size type.
-//  - 'traversal_category' is a type that contains information about the 
-//     direction of the traversal, which is forward, backward or bidirectional.
-//  - 'forward_category' defines the primary accessor of the forward
-//     information for use by algorithms which desire the most direct access. 
-//  - 'backward_category' defines the primary accessor of the backward
-//     information for use by algorithms which desire the most direct access. 
-
-
-///HDS Traits class
-///----------------
+//  BackwardHds concept
+//  ------------------
+//  backward_category       A tag type to describe the primary accessor of the
+//                          backward information for use by algorithms which
+//                          desire the most direct access.  Only for models of
+//                          'BackwardHds' concept.
+//
+//  FacetHds concept
+//  ----------------
+//  facet_descriptor        A type that contains information to access the
+//                          facet to the left of the halfedge, if forward facet
+//                          cycles are ordered in counter clockwise rotation
+//                          around the facet.
+//
+//  FacetListHds concept
+//  --------------------
+//  facet_iterator          An iterator type for the facets.
+//  facet_const_iterator    A 'const' iterator type for the facets.
+//                          Only for 'FacetListHds' concept.
+//  size_type               An integral type to return the number of facets,
+//                          vertices and halfedges.  Only for 'FacetListHDS',
+//                          'HalfedgeListHds' and/or 'VertexListHds' concepts.
+//                          Note that the size type must then be the same for
+//                          each in the subset of those concepts modeled.
+//
+//  HalfedgeListHds concept
+//  -----------------------
+//  halfedge_iterator       An iterator type for the halfedges.
+//  halfedge_const_iterator A 'const' iterator type for the halfedges.
+//                          Only for 'HalfedgeListHds' concept.
+//  size_type               An integral type to return the number of halfedges,
+//                          See above for 'FacetListHds' concept.
+//
+//  VertexHds concept
+//  -----------------
+//  vertex_descriptor       A type that contains information to access the
+//                          vertex at the source or the target of the halfedge.
+//
+//  VertexListHds concept
+//  ---------------------
+//  vertex_iterator         An iterator type for the vertices.
+//  vertex_const_iterator   A 'const' iterator type for the vertices.
+//  size_type               An integral type to return the number of facets,
+//                          See above for 'FacetListHds' concept.
+//..
+//
+///Synopsis
+///--------
 //..
 //  template <typename HDS>
 //  struct hds_traits{
-//      typedef typename HDS::vertex_descriptor         vertex_descriptor;
-//      typedef typename HDS::halfedge_descriptor       halfedge_descriptor;
-//      typedef typename HDS::facet_descriptor          facet_descriptor;
-//      typedef typename HDS::vertex_iterator           vertex_iterator;
-//      typedef typename HDS::halfedge_iterator         halfedge_iterator;
-//      typedef typename HDS::facet_iterator            facet_iterator;
-//      typedef typename HDS::const_vertex_iterator     const_vertex_iterator;
+//      typedef typename HDS::backward_category         backward_category;
 //      typedef typename HDS::const_halfedge_iterator   const_halfedge_iterator;
 //      typedef typename HDS::const_facet_iterator      const_facet_iterator;
+//      typedef typename HDS::const_vertex_iterator     const_vertex_iterator;
+//      typedef typename HDS::facet_descriptor          facet_descriptor;
+//      typedef typename HDS::facet_iterator            facet_iterator;
+//      typedef typename HDS::forward_category          forward_category;
+//      typedef typename HDS::halfedge_descriptor       halfedge_descriptor;
+//      typedef typename HDS::halfedge_iterator         halfedge_iterator;
 //      typedef typename HDS::size_type                 size_type;
 //      typedef typename HDS::traversal_category        traversal_category; 
-//      typedef typename HDS::forward_category          forward_category;
-//      typedef typename HDS::backward_category         backward_category;
+//      typedef typename HDS::vertex_descriptor         vertex_descriptor;
+//      typedef typename HDS::vertex_iterator           vertex_iterator;
 //  };
-//  struct forward_traversal_tag {};
 //  struct backward_traversal_tag {};
-//  struct next_in_facet_tag {};
+//  struct forward_traversal_tag {};
+//  struct bidirectional_traversal_tag
+//  : public backward_traversal_tag, public forward_traversal_tag {};
 //  struct next_at_source_tag {};
 //  struct next_at_target_tag {};
-//  struct prev_in_facet_tag {};
+//  struct next_in_facet_tag {};
 //  struct prev_at_source_tag {};
 //  struct prev_at_target_tag {};
+//  struct prev_in_facet_tag {};
 //..
+
 #ifndef BOOST_HDSTL_HDS_TRAITS_HPP
 #define BOOST_HDSTL_HDS_TRAITS_HPP 1
 
@@ -107,39 +133,142 @@
 
     template <typename HDS>
     struct hds_traits{
+        // A traits class for describing the types and features associated with
+        // the 'HDS' template parameter.  By default, all these types and
+        // values are defined within the 'HDS' class.  
 
-        typedef typename HDS::vertex_descriptor         vertex_descriptor;
-        typedef typename HDS::halfedge_descriptor       halfedge_descriptor;
+        // TYPES
+        typedef typename HDS::backward_category         backward_category;
+            // A tag type to describe the primary accessor of the backward
+            // information for use by algorithms which desire the most direct
+            // access.
+        typedef typename HDS::const_facet_iterator      const_facet_iterator;
+            // A 'const' iterator type for the facets.
+        typedef typename HDS::const_halfedge_iterator   const_halfedge_iterator;
+            // A 'const' iterator type for the halfedges.
+        typedef typename HDS::const_vertex_iterator     const_vertex_iterator;
+            // A 'const' iterator type for the vertices.
         typedef typename HDS::facet_descriptor          facet_descriptor;
-
-        typedef typename HDS::vertex_iterator           vertex_iterator;
-        typedef typename HDS::halfedge_iterator         halfedge_iterator;
+            // A type that contains information to access the facet to the left
+            // of the halfedge, if forward facet cycles are ordered in counter
+            // clockwise rotation around the facet.
         typedef typename HDS::facet_iterator            facet_iterator;
+            // An iterator type for the facets.
+        typedef typename HDS::forward_category          forward_category;
+            // A tag type to describe the primary accessor of the forward
+            // information for use by algorithms which desire the most direct
+            // access.
+        typedef typename HDS::halfedge_descriptor       halfedge_descriptor;
+            // A type that contains information to access the halfedge. 
+        typedef typename HDS::halfedge_iterator         halfedge_iterator;
+            // An iterator type for the halfedges.
+        typedef typename HDS::vertex_descriptor         vertex_descriptor;
+            // A type that contains information to access the vertex at the
+            // source or the target of the halfedge.
+        typedef typename HDS::vertex_iterator           vertex_iterator;
+            // An iterator type for the vertices.
+        typedef typename HDS::size_type                 size_type;
+            // An integral type to return the number of facets, vertices and/or
+            // halfedges.  Note that the size type must then be the same for
+            // all three quantities.
+        typedef typename HDS::traversal_category        traversal_category; 
+            // A type that contains information about the direction of the
+            // traversal, which is forward, backward or bidirectional.
 
-        typedef typename HDS::const_vertex_iterator     const_vertex_iterator;
-        typedef typename HDS::const_halfedge_iterator   const_halfedge_iterator;
-        typedef typename HDS::const_facet_iterator      const_facet_iterator;
+        enum {
+            // An anonymous enumeration type defining values usable as Boolean
+            // to indicate various features associated with the 'HDS' template
+            // parameter.
+
+            supports_facets = HDS::supports_facets,
+                // A value usable as a Boolean which is true if 'HDS' models
+                // the 'FacetHds' concept.
+            supports_vertices = HDS::supports_vertices
+                // A value usable as a Boolean which is true if 'HDS' models
+                // the 'VertexHds' concept.
+        };
+    };
 
-        typedef typename HDS::size_type                 size_type;
+    struct forward_traversal_tag {
+        // A tag type for indicating a model of 'ForwardHds'.  For types 'HDS'
+        // that model the 'ForwardHds' concept, the type
+        // 'hds_traits<HDS>::traversal_category' is convertible to this
+        // 'forward_traversal_tag' type.
+    };
 
-        typedef typename HDS::traversal_category        traversal_category; 
-        typedef typename HDS::forward_category          forward_category;
-        typedef typename HDS::backward_category         backward_category;
+    struct backward_traversal_tag {
+        // A tag type for indicating a model of 'BackwardHds'.  For types 'HDS'
+        // that model the 'BackwardHds' concept, the type
+        // 'hds_traits<HDS>::traversal_category' is convertible to this
+        // 'backward_traversal_tag' type.
+
+    struct bidirectional_traversal_tag : public backward_traversal_tag, public forward_traversal_tag {
+        // A tag type for indicating a model of both 'ForwardHds' and
+        // 'BackwardHds' concepts.  This type if convertible to both
+        // 'forward_traversal_tag' and 'backward_traversal_tag'.
+    };
+
+    struct next_in_facet_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'ForwardHds' concept.  Given a type 'HDS' that models the
+        // 'ForwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'next_in_facet_tag' type, then
+        // 'set_next_in_facet(h, g, hds)' has the post-condition that
+        // 'next_in_fact(h, hds) == g', otherwise 'next_in_facet(h, hds)' is
+        // not modified.
     };
 
-    struct forward_traversal_tag {};
-    struct backward_traversal_tag {};
+    struct next_at_source_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'ForwardHds' concept.  Given a type 'HDS' that models the
+        // 'ForwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'next_at_source_tag' type, then
+        // 'set_next_at_source(h, g, hds)' has the post-condition that
+        // 'next_in_fact(h, hds) == g', otherwise 'next_at_source(h, hds)' is
+        // not modified.
+    };
 
-    struct next_in_facet_tag {};
-    struct next_at_source_tag {};
-    struct next_at_target_tag {};
-    
-    struct prev_in_facet_tag {};
-    struct prev_at_source_tag {};
-    struct prev_at_target_tag {};
+    struct next_at_target_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'ForwardHds' concept.  Given a type 'HDS' that models the
+        // 'ForwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'next_at_target_tag' type, then
+        // 'set_next_at_target(h, g, hds)' has the post-condition that
+        // 'next_in_fact(h, hds) == g', otherwise 'next_at_target(h, hds)' is
+        // not modified.
+    };
+
+    struct prev_in_facet_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'BackwardHds' concept.  Given a type 'HDS' that models the
+        // 'BackwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'prev_in_facet_tag' type, then
+        // 'set_prev_in_facet(h, g, hds)' has the post-condition that
+        // 'prev_in_fact(h, hds) == g', otherwise 'prev_in_facet(h, hds)' is
+        // not modified.
+    };
+
+    struct prev_at_source_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'BackwardHds' concept.  Given a type 'HDS' that models the
+        // 'BackwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'prev_at_source_tag' type, then
+        // 'set_prev_at_source(h, g, hds)' has the post-condition that
+        // 'prev_in_fact(h, hds) == g', otherwise 'prev_at_source(h, hds)' is
+        // not modified.
+    };
+
+    struct prev_at_target_tag {
+        // A tag type for indicating the primary pointer used by a model of
+        // the 'BackwardHds' concept.  Given a type 'HDS' that models the
+        // 'BackwardHds' concept, if the 'hds_traits<HDS>::forward_category'
+        // is convertible to this 'prev_at_target_tag' type, then
+        // 'set_prev_at_target(h, g, hds)' has the post-condition that
+        // 'prev_in_fact(h, hds) == g', otherwise 'prev_at_target(h, hds)' is
+        // not modified.
+    };
 
 } // namespace hdstl
 } // namespace boost
 
 #endif
-
Modified: sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/doc/hdstl.conf	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -468,7 +468,7 @@
 # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
 
-FILE_PATTERNS          = 
+FILE_PATTERNS          = *.h *.hpp
 
 # The RECURSIVE tag can be used to turn specify whether or not subdirectories 
 # should be searched for input files as well. Possible values are YES and NO. 
@@ -486,7 +486,7 @@
 # directories that are symbolic links (a Unix filesystem feature) are excluded 
 # from the input.
 
-EXCLUDE_SYMLINKS       = NO
+EXCLUDE_SYMLINKS       = YES
 
 # If the value of the INPUT tag contains directories, you can use the 
 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
Modified: sandbox/SOC/2007/geometry/libs/hdstl/tools/doc.pl
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/tools/doc.pl	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/tools/doc.pl	2007-06-28 02:43:06 EDT (Thu, 28 Jun 2007)
@@ -62,6 +62,7 @@
         local $remainder = $3;
 
         # Process references
+        $textpart =~ s/\{\([^\}]*\)\}/$1/g;
         $textpart =~ s/\[([^\]]*)\]/\\ref $1/g;
 
         # Guard against template and comparisons
@@ -75,6 +76,7 @@
         $textpart =~ s/\!([^!]*)\!/<b>$1<\/b>/g;
 
         # Process underline
+        $textpart =~ s/SEE_ALSO/SEEALSO/g;
         $textpart =~ s/_([^_]*)_/<u>$1<\/u>/g;
 
         # Process typewriter font
@@ -98,23 +100,36 @@
     $content =~ s/\!([^!]*)\!/<b>$1<\/b>/g;
 
     # Process underline
+    $content =~ s/SEE_ALSO/SEEALSO/g;
     $content =~ s/_([^_]*)_/<u>$1<\/u>/g;
 
     return $output.$content;
 }
 
-my $finishedTopLevel = 0; # to avoid parsing later comments as if preamble
-my $conceptMode  = 0;     # serves to remember if a @CONCEPT command was parsed
-my $conceptLabel = "";    # and if so, the concept name
-my $conceptRef   = 0;     # numbers the section references
-my $classOpen    = 0;     # serves to know if we're within a class body
-my $className    = "";    # and if so, the class name
-my $templateName = "";    # and any template parameters (one line before the class def)
-my $groupOpen    = 0;     # serves to close a named group before opening another
+my $finishedTopLevel = 0;  # to avoid parsing later comments as if preamble
+my $conceptMode      = 0;  # serves to remember if a @CONCEPT command was parsed
+my $conceptLabel     = ""; # and if so, the concept name
+my $conceptRef       = 0;  # numbers the section references
+my $classOpen        = 0;  # serves to know if we're within a class body
+my $className        = ""; # and if so, the class name
+my $classClosePrefix = ""; # how many spaces before "};"
+my $templateName     = ""; # and any template parameters (one line before the class def)
+my $groupOpen        = 0;  # serves to close a named group before opening another
+my $opaqueFlag       = 0;  # serves to close an \endcond before opening another named group
 
 sub process_toplevel_comment_line {
     my $content = shift;
 
+    if ($content =~ m/\@MAINPAGE: (.*)/) {
+        print " * \\mainpage ".$1."\n";
+        return;
+    }
+
+    if ($content =~ m/\@RELATED: \[(.*)\] (.*)/) {
+        print " * \\page ".$1." ".$2."\n";
+        return;
+    }
+
     if ($content =~ m/\@CONCEPT: \[(.*)\] (.*)/) {
         print " * \\page ".$1." ".$2."\n";
         $conceptMode = 1;
@@ -160,6 +175,14 @@
             print " * \\details ".$2."\n";
         } elsif ($1 eq "PURPOSE") {
             print " * \\brief ".$2."\n";
+        } elsif ($1 eq "CLASS") {
+            print " * \\par Class:\n";
+        } elsif ($1 eq "CLASSES") {
+            print " * \\par Classes:\n";
+        } elsif ($1 eq "SEEALSO") {
+            print " * \\par See also ".$2."\n";
+        } elsif ($1 eq "AUTHORS" || $1 eq "AUTHOR") {
+            print " * \\author ".$2."\n";
         } else {
             die("0x2: Unknown section comment".$1." at line ".$.."\n");
         }
@@ -186,9 +209,14 @@
         # Empty line, convert to @par
         print $prefix." *< \@par\n";
     }
-    elsif ($content =~ m/(TYPE|DATA|CREATOR|MANIP|ACCESS)/) {
+    elsif ($content =~ m/(OPAQUE|TYPE|DATA|CREATOR|MANIP|ACCESS)/) {
         if ($groupOpen) {
-            print $prefix."//\@\}\n";
+            if ($opaqueFlag) {
+                print $prefix."// \\endcond\n";
+                $opaqueFlag = 0;
+            } else {
+                print $prefix."//\@\}\n";
+            }
         }
         $groupOpen = 1;
         if ($content =~ m/TYPE/) {
@@ -206,6 +234,9 @@
         } elsif ($content =~ m/ACCESS/) {
             print $prefix."//\@\{\n".
                   $prefix.'/** @name Accessors'." */\n";
+        } elsif ($content =~ m/ACCESS/) {
+            print $prefix."//\\cond";
+            $opaqueFlag = 1;
         } else {
             die("0x2: Unknown group comment".$1." at line ".$.."\n");
         }
@@ -295,6 +326,7 @@
                     $groupOpen = 0;
                 }
                 $classOpen = 0;
+                $classClosePrefix = $1;
             }
         }
     } else {
@@ -312,7 +344,7 @@
         # The following is a dirty hack - we read the end of line already
         # and now we still must exit the loop...
         if (0 == $classOpen) {
-            $classLine = "};\n";
+            $classLine = $classClosePrefix."};\n";
         } else {
             $classLine = <>;
         }