$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: huseyinakcan_at_[hidden]
Date: 2007-06-14 19:43:43
Author: huseyinakcan
Date: 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
New Revision: 7048
URL: http://svn.boost.org/trac/boost/changeset/7048
Log:
new archetypes.
archetypes for mutables are coming.
Added:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp
Text files modified: 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp |     4 ++--                                    
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp         |     4 ++--                                    
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp    |    20 ++++++++------------                    
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp       |     4 ++--                                    
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp        |     4 ++--                                    
   5 files changed, 16 insertions(+), 20 deletions(-)
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,145 @@
+// backward_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'BackwardHDS' concept archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'BackwardHDSConcept' class.  Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'BackwardHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'BackwardHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  template <typename BackwardCategory>
+//  struct hds_traits<BackwardHDSConcept_archetype<BackwardCategory> > {
+//      typedef boost::default_constructible_archetype<
+//              boost::copy_constructible_archetype<
+//              boost::equality_comparable_archetype<
+//              boost::assignable_archetype<> > > > halfedge_descriptor;
+//      typedef boost::convertible_to_archetype<backward_traversal_tag>
+//                                                  traversal_category;
+//      typedef BackwardCategory                     backward_category;
+//  };
+//  template <typename BackwardCategory>
+//  class BackwardHDSConcept_archetype : public HDSConcept_archetype {
+//      typedef typename hds_traits<BackwardHDSConcept_archetype
+//                                 >::halfedge_descriptor halfedge_descriptor;
+//      BackwardHDSConcept_archetype();
+//      BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
+//    public:
+//      halfedge_descriptor
+//      prev_in_facet(BackwardHDSConcept_archetype const& hds,
+//                    halfedge_descriptor                h) const;
+//      halfedge_descriptor
+//      prev_at_source(BackwardHDSConcept_archetype const& hds,
+//                     halfedge_descriptor                h) const;
+//      halfedge_descriptor
+//      prev_at_target(BackwardHDSConcept_archetype const& hds,
+//                     halfedge_descriptor                h) const;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+template <typename BackwardCategory>
+class BackwardHDSConcept_archetype;  // forward declaration
+
+template <typename BackwardCategory>
+struct hds_traits<BackwardHDSConcept_archetype<BackwardCategory> > {
+    // This template specialization of 'hds_traits' for the
+    // 'BackwardHDSConcept_archetype' provides the 'halfedge_descriptor' and
+    // 'traversal_category' types.
+    
+    // TYPES
+    typedef boost::default_constructible_archetype<
+            boost::copy_constructible_archetype<
+            boost::equality_comparable_archetype<
+            boost::assignable_archetype<> > > > halfedge_descriptor;
+        // Halfedge descriptor type for the 'BackwardHDSConcept' archetype.
+
+    typedef boost::convertible_to_archetype<backward_traversal_tag>
+                                                traversal_category;
+        // This type, convertible to 'backward_traversal_tag', indicates that
+        // the 'BackwardHDSConcept' archetype is a model of 'BackwardHDSConcept'.
+
+    typedef BackwardCategory                     backward_category;
+        // This type, convertible to one or more of 'prev_in_facet_tag',
+        // 'prev_at_source_tag', or 'prev_at_target_tag', indicates which is
+        // the primary accessor(s) for which the 'set_...' methods are defined.
+};
+
+
+template <typename BackwardCategory>
+class BackwardHDSConcept_archetype : public HDSConcept_archetype {
+    // This class provides an exact implementation (no more, no less) of the
+    // 'BackwardHDS' concept.  It can be used to instantiate class and function
+    // templates that require their template arguments to be a model of this
+    // concept in order to verify that there are no extra syntactic
+    // requirements.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<BackwardHDSConcept_archetype
+                               >::halfedge_descriptor halfedge_descriptor;
+
+    // NOT IMPLEMENTED
+    BackwardHDSConcept_archetype();
+    BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
+
+  public:
+    // MANIPULATORS
+    halfedge_descriptor
+    prev_in_facet(BackwardHDSConcept_archetype const& hds,
+                  halfedge_descriptor                h) const;
+        // Return the halfedge preceding 'h' in the (counter-clockwise) facet
+        // cycle of 'h' in 'hds'.
+
+    halfedge_descriptor
+    prev_at_source(BackwardHDSConcept_archetype const& hds,
+                   halfedge_descriptor                h) const;
+        // Returns the halfedge preceding 'h' in the (clockwise) vertex
+        // cycle of the source of 'h' in 'hds'.
+
+     halfedge_descriptor
+     prev_at_target(BackwardHDSConcept_archetype const& hds,
+                    halfedge_descriptor                h) const;
+        // Returns the halfedge preceding 'h' in the (clockwise) vertex
+        // cycle of the target of 'h' in 'hds'.
+};
+
+// MANIPULATORS
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_in_facet(
+                                        BackwardHDSConcept_archetype const& hds,
+                                        halfedge_descriptor                h)
+{
+    return halfedge_descriptor();
+}
+
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_at_source(
+                                        BackwardHDSConcept_archetype const& hds,
+                                        halfedge_descriptor                h)
+{
+    return halfedge_descriptor();
+}
+
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_at_target(
+                                        BackwardHDSConcept_archetype const& hds,
+                                        halfedge_descriptor                h)
+{
+    return halfedge_descriptor();
+}
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,101 @@
+// bidirectional_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'BidirectionalHDS' concept archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'BidirectionalHDSConcept' class.  Namely, this class can be used
+// wherever a template parameter of a class or of a function template is
+// required to be a model of the 'BidirectionalHDS' concept, in order to ensure
+// that no further requirements are placed on the template parameter than are
+// stated in the 'BidirectionalHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  template <typename ForwardCategory, typename BackwardCategory>
+//  struct hds_traits<BidirectionalHDSConcept_archetype<ForwardCategory, 
+//                                                      BackwardCategory> > {
+//      typedef boost::default_constructible_archetype<
+//              boost::copy_constructible_archetype<
+//              boost::equality_comparable_archetype<
+//              boost::assignable_archetype<> > > > halfedge_descriptor;
+//      typedef boost::convertible_to_archetype<bidirectional_traversal_tag>
+//                                                  traversal_category;
+//      typedef ForwardCategory                     forward_category;
+//      typedef BackwardCategory                     backward_category;
+//  };
+//  template <typename ForwardCategory, typename BackwardCategory>
+//  class BidirectionalHDSConcept_archetype 
+//  : public ForwardHDSConcept_archetype<ForwardCategory>, 
+//           BackwardHDSConcept_archetype<BackwardCategory> {
+//      typedef typename hds_traits<BidirectionalHDSConcept_archetype
+//                                 >::halfedge_descriptor halfedge_descriptor;
+//      BidirectionalHDSConcept_archetype();
+//      BidirectionalHDSConcept_archetype(
+//                                    const BidirectionalHDSConcept_archetype&);
+//  };
+//..
+
+#ifndef BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+template <typename ForwardCategory, typename BackwardCategory>
+class BidirectionalHDSConcept_archetype;  // forward declaration
+
+template <typename ForwardCategory, typename BackwardCategory>
+struct hds_traits<BidirectionalHDSConcept_archetype<ForwardCategory, 
+                                                    BackwardCategory> > {
+    // This template specialization of 'hds_traits' for the
+    // 'BidirectionalHDSConcept_archetype' provides the 'halfedge_descriptor' 
+    // and 'traversal_category' types.
+    
+    // TYPES
+    typedef boost::default_constructible_archetype<
+            boost::copy_constructible_archetype<
+            boost::equality_comparable_archetype<
+            boost::assignable_archetype<> > > > halfedge_descriptor;
+        // Halfedge descriptor type for the 'BidirectionalHDSConcept' archetype.
+
+    typedef boost::convertible_to_archetype<bidirectional_traversal_tag>
+                                                traversal_category;
+        // This type, convertible to 'bidirectional_traversal_tag', indicates
+        // that the 'BidirectionalHDSConcept' archetype is a model of
+        // 'BidirectionalHDSConcept'.
+
+    typedef ForwardCategory                     forward_category;
+        // This type, convertible to one or more of 'next_in_facet_tag',
+        // 'next_at_source_tag', or 'next_at_target_tag', indicates which is
+        // the primary accessor(s) for which the 'set_...' methods are defined.
+
+    typedef BackwardCategory                     backward_category;
+        // This type, convertible to one or more of 'prev_in_facet_tag',
+        // 'prev_at_source_tag', or 'prev_at_target_tag', indicates which is
+        // the primary accessor(s) for which the 'set_...' methods are defined.
+};
+
+
+template <typename ForwardCategory, typename BackwardCategory>
+class BidirectionalHDSConcept_archetype 
+: public ForwardHDSConcept_archetype<ForwardCategory>, 
+         BackwardHDSConcept_archetype<BackwardCategory> {
+    // This class provides an exact implementation (no more, no less) of the
+    // 'BidirectionalHDS' concept.  It can be used to instantiate class and
+    // function templates that require their template arguments to be a model
+    // of this concept in order to verify that there are no extra syntactic
+    // requirements.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<BidirectionalHDSConcept_archetype
+                               >::halfedge_descriptor halfedge_descriptor;
+
+    // NOT IMPLEMENTED
+    BidirectionalHDSConcept_archetype();
+    BidirectionalHDSConcept_archetype(const BidirectionalHDSConcept_archetype&);
+};
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,61 @@
+// facet_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'FacetHDSConcept' archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'FacetHDSConcept' class.  Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'FacetHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'FacetHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  class FacetHDSConcept_archetype : public HDSConcept_archetype {
+//      typedef typename hds_traits<FacetHDSConcept_archetype
+//                                 >::facet_descriptor facet_descriptor;
+//  };
+//
+//  template<>
+//  struct hds_traits<FacetHDSConcept_archetype> {
+//      typedef boost::default_constructible_archetype<
+//              boost::copy_constructible_archetype<
+//              boost::equality_comparable_archetype<
+//              boost::assignable_archetype<> > > > facet_descriptor;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class FacetHDSConcept_archetype;  // forward declaration
+
+template<>
+struct hds_traits<FacetHDSConcept_archetype> {
+    // This template specialization of 'hds_traits' for the
+    // 'FacetHDSConcept_archetype' provides the 'facet_descriptor' type.
+
+    // TYPES
+    typedef boost::default_constructible_archetype<
+            boost::copy_constructible_archetype<
+            boost::equality_comparable_archetype<
+            boost::assignable_archetype<> > > > facet_descriptor;
+        // Facet descriptor type for the 'FacetHDSConcept' archetype.
+};
+
+class FacetHDSConcept_archetype : public HDSConcept_archetype {
+    // This archetype class for the 'FacetHDSConcept' class can be used
+    // wherever a template parameter of a class or of a function template is
+    // required to be a model of the 'FacetHDS' concept, in order to ensure
+    // that no further requirements are placed on the template parameter than
+    // are stated in the 'FacetHDS' concept.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<FacetHDSConcept_archetype
+                               >::facet_descriptor facet_descriptor;
+};
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,115 @@
+// facet_list_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'FacetListHDS' concept archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'FacetListHDSConcept' class.  Namely, this class can be used wherever
+// a template parameter of a class or of a function template is required to be
+// a model of the 'FacetListHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'FacetListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  template <>
+//  struct hds_traits<FacetListHDSConcept_archetype> {
+//      typedef hdstl_detail::MultiPassInputIteratorConcept<> facet_iterator;
+//      typedef facet_size_type                      facet_size_type;
+//  };
+//  class FacetListHDSConcept_archetype : public HDSConcept_archetype, 
+//                                        public FacetHDSConcept_archetype {
+//      typedef typename hds_traits<FacetListHDSConcept_archetype
+//                                 >::facet_iterator facet_iterator;
+//      typedef typename hds_traits<FacetHDSConcept_archetype
+//                                 >::facet_descriptor facet_descriptor;
+//      typedef typename hds_traits<FacetListHDSConcept_archetype
+//                                 >::facet_size_type facet_size_type;
+//      FacetListHDSConcept_archetype();
+//      FacetListHDSConcept_archetype(const FacetListHDSConcept_archetype&);
+//    public:
+//      std::pair<facet_iterator,facet_iterator>
+//      facets(FacetListHDSConcept_archetype const& hds) const;
+//      facet_size_type
+//      num_facets(FacetListHDSConcept_archetype const& hds) const;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_FACET_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_FACET_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class FacetListHDSConcept_archetype;  // forward declaration
+
+template <>
+struct hds_traits<FacetListHDSConcept_archetype> {
+    // This template specialization of 'hds_traits' for the
+    // 'FacetListHDSConcept_archetype' provides the 'facet_iterator'
+    // and 'facet_size_type' types.
+    
+    // TYPES
+    typedef hdstl_detail::MultiPassInputIteratorConcept<> facet_iterator;
+        // Facet iterator type for the 'FacetListHDSConcept' archetype.
+
+    typedef facet_size_type                      facet_size_type;
+        // Facet size type for the 'FacetListHDSConcept' archetype.
+};
+
+
+class FacetListHDSConcept_archetype : public HDSConcept_archetype, 
+                                      public FacetHDSConcept_archetype {
+    // This class provides an exact implementation (no more, no less) of the
+    // 'FacetListHDS' concept.  It can be used to instantiate class and function
+    // templates that require their template arguments to be a model of this
+    // concept in order to verify that there are no extra syntactic
+    // requirements.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<FacetListHDSConcept_archetype
+                               >::facet_iterator facet_iterator;
+    
+    typedef typename hds_traits<FacetHDSConcept_archetype
+                               >::facet_descriptor facet_descriptor;
+        //facet_descriptor from the FacetHDSConcept used here.
+
+    typedef typename hds_traits<FacetListHDSConcept_archetype
+                               >::facet_size_type facet_size_type;
+    
+    // NOT IMPLEMENTED
+    FacetListHDSConcept_archetype();
+    FacetListHDSConcept_archetype(const FacetListHDSConcept_archetype&);
+
+  public:
+    // MANIPULATORS
+    std::pair<facet_iterator,facet_iterator>
+    facets(FacetListHDSConcept_archetype const& hds) const;
+        // Returns a 'facet_iterator' pair, consistent with the STL style
+        // iterator ranges, which means all the facets can be accessed by
+        // increasing the first part of the pair until the second part is
+        // reached.
+
+    facet_size_type
+    num_facets(FacetListHDSConcept_archetype const& hds) const;
+        // Returns the number of facets in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<facet_iterator,facet_iterator>
+FacetListHDSConcept_archetype<>::facets(
+                               FacetListHDSConcept_archetype const& hds) const
+{
+    return std::pair<facet_iterator,facet_iterator>();
+}
+
+typename hds_traits<FacetListHDSConcept_archetype>::facet_size_type
+FacetListHDSConcept_archetype<>::num_facets(
+                               FacetListHDSConcept_archetype const& hds) const
+{
+    return facet_size_type();
+}
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,112 @@
+// halfedge_list_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'HalfedgeListHDS' concept archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'HalfedgeListHDSConcept' class.  Namely, this class can be used
+// wherever a template parameter of a class or of a function template is
+// required to be a model of the 'HalfedgeListHDS' concept, in order to ensure
+// that no further requirements are placed on the template parameter than are
+// stated in the 'HalfedgeListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  template <>
+//  struct hds_traits<HalfedgeListHDSConcept_archetype> {
+//      typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
+//      typedef halfedge_size_type                      halfedge_size_type;
+//  };
+//  class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
+//      typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+//                                 >::halfedge_iterator halfedge_iterator;
+//      typedef typename hds_traits<HalfedgeHDSConcept_archetype
+//                                 >::halfedge_descriptor halfedge_descriptor;
+//      typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+//                                 >::halfedge_size_type halfedge_size_type;
+//      HalfedgeListHDSConcept_archetype();
+//    HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
+//    public:
+//      std::pair<halfedge_iterator,halfedge_iterator>
+//      halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+//      halfedge_size_type
+//      num_halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_HALFEDGE_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_HALFEDGE_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class HalfedgeListHDSConcept_archetype;  // forward declaration
+
+template <>
+struct hds_traits<HalfedgeListHDSConcept_archetype> {
+    // This template specialization of 'hds_traits' for the
+    // 'HalfedgeListHDSConcept_archetype' provides the 'halfedge_iterator'
+    // and 'halfedge_size_type' types.
+    
+    // TYPES
+    typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
+        // Halfedge iterator type for the 'HalfedgeListHDSConcept' archetype.
+
+    typedef halfedge_size_type                      halfedge_size_type;
+        // Halfedge size type for the 'HalfedgeListHDSConcept' archetype.
+};
+
+class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
+    // This class provides an exact implementation (no more, no less) of the
+    // 'HalfedgeListHDS' concept.  It can be used to instantiate class and
+    // function templates that require their template arguments to be a model
+    // of this concept in order to verify that there are no extra syntactic
+    // requirements.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+                               >::halfedge_iterator halfedge_iterator;
+    
+    typedef typename hds_traits<HalfedgeHDSConcept_archetype
+                               >::halfedge_descriptor halfedge_descriptor;
+        //halfedge_descriptor from the HalfedgeHDSConcept used here.
+
+    typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+                               >::halfedge_size_type halfedge_size_type;
+    
+    // NOT IMPLEMENTED
+    HalfedgeListHDSConcept_archetype();
+    HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
+
+  public:
+    // MANIPULATORS
+    std::pair<halfedge_iterator,halfedge_iterator>
+    halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+        // Returns a 'halfedge_iterator' pair, consistent with the STL style
+        // iterator ranges, which means all the halfedges can be accessed by
+        // increasing the first part of the pair until the second part is
+        // reached.
+
+    halfedge_size_type
+    num_halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+        // Returns the number of halfedges in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<halfedge_iterator,halfedge_iterator>
+HalfedgeListHDSConcept_archetype<>::halfedges(
+                              HalfedgeListHDSConcept_archetype const& hds) const
+{
+    return std::pair<halfedge_iterator,halfedge_iterator>();
+}
+
+typename hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_size_type
+HalfedgeListHDSConcept_archetype<>::num_halfedges(
+                              HalfedgeListHDSConcept_archetype const& hds) const
+{
+    return halfedge_size_type();
+}
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,79 @@
+// mutable_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'MutableHDSConcept' archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'MutableHDSConcept' class.  Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'MutableHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'MutableHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  class MutableHDSConcept_archetype : public HDSConcept_archetype {
+//      typedef typename hds_traits<HDSConcept_archetype
+//                                 >::halfedge_descriptor halfedge_descriptor;
+//    public:
+//      void set_opposite(MutableHDSConcept_archetype&, halfedge_descriptor&, 
+//                                                      halfedge_descriptor&);
+//      halfedge_descriptor& new_edge(MutableHDSConcept_archetype&, 
+//                                  halfedge_descriptor&, halfedge_descriptor&);
+//      void delete_edge(MutableHDSConcept_archetype&, halfedge_descriptor&, 
+//                                                      halfedge_descriptor&);
+//  };
+//..
+
+#ifndef BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class MutableHDSConcept_archetype;  // forward declaration
+
+class MutableHDSConcept_archetype : public HDSConcept_archetype {
+    // This archetype class for the 'MutableHDSConcept' class can be used
+    // wherever a template parameter of a class or of a function template is
+    // required to be a model of the 'MutableHDS' concept, in order to ensure
+    // that no further requirements are placed on the template parameter than
+    // are stated in the 'MutableHDS' concept.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<HDSConcept_archetype
+                               >::halfedge_descriptor halfedge_descriptor;
+
+  public:
+    void set_opposite(MutableHDSConcept_archetype&, halfedge_descriptor&, 
+                                                    halfedge_descriptor&);
+        // Set the second halfedge descriptor as the opposite of the first
+        // halfedge descriptor in 'hds'.
+
+    halfedge_descriptor& new_edge(MutableHDSConcept_archetype&, 
+                                  halfedge_descriptor&, halfedge_descriptor&);
+       // add two halfedges to the data structure.
+    
+    void delete_edge(MutableHDSConcept_archetype&, halfedge_descriptor&, 
+                                                    halfedge_descriptor&);
+      // delete two halfedges from the data structure.
+};
+
+// MANIPULATORS
+void 
+MutableHDSConcept_archetype::set_opposite(MutableHDSConcept_archetype&, 
+                                   halfedge_descriptor&, halfedge_descriptor&)
+{}
+
+typename hds_traits<MutableHDSConcept_archetype>::halfedge_descriptor
+new_edge(MutableHDSConcept_archetype&, 
+                                  halfedge_descriptor&, halfedge_descriptor&)
+{
+    return halfedge_descriptor();
+}
+
+void 
+MutableHDSConcept_archetype::delete_edge(MutableHDSConcept_archetype&, 
+                                   halfedge_descriptor&, halfedge_descriptor&)
+{}
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,61 @@
+// vertex_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'VertexHDSConcept' archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'VertexHDSConcept' class.  Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'VertexHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'VertexHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  class VertexHDSConcept_archetype : public HDSConcept_archetype { 
+//      typedef typename hds_traits<VertexHDSConcept_archetype
+//                                 >::vertex_descriptor vertex_descriptor;
+//  };
+//
+//  template<>
+//  struct hds_traits<VertexHDSConcept_archetype> {
+//      typedef boost::default_constructible_archetype<
+//              boost::copy_constructible_archetype<
+//              boost::equality_comparable_archetype<
+//              boost::assignable_archetype<> > > > vertex_descriptor;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class VertexHDSConcept_archetype;  // forward declaration
+
+template<>
+struct hds_traits<VertexHDSConcept_archetype> {
+    // This template specialization of 'hds_traits' for the
+    // 'VertexHDSConcept_archetype' provides the 'vertex_descriptor' type.
+
+    // TYPES
+    typedef boost::default_constructible_archetype<
+            boost::copy_constructible_archetype<
+            boost::equality_comparable_archetype<
+            boost::assignable_archetype<> > > > vertex_descriptor;
+        // Vertex descriptor type for the 'VertexHDSConcept' archetype.
+};
+
+class VertexHDSConcept_archetype : public HDSConcept_archetype {
+    // This archetype class for the 'VertexHDSConcept' class can be used
+    // wherever a template parameter of a class or of a function template is
+    // required to be a model of the 'VertexHDS' concept, in order to ensure
+    // that no further requirements are placed on the template parameter than
+    // are stated in the 'VertexHDS' concept.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<VertexHDSConcept_archetype
+                               >::vertex_descriptor vertex_descriptor;
+};
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp	2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,115 @@
+// vertex_list_hds_concept_archetype.hpp   -*- C++ -*-
+//
+//@PURPOSE: Provide a 'VertexListHDS' concept archetype 
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'VertexListHDSConcept' class.  Namely, this class can be used wherever
+// a template parameter of a class or of a function template is required to be
+// a model of the 'VertexListHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'VertexListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+//  template <>
+//  struct hds_traits<VertexListHDSConcept_archetype> {
+//      typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
+//      typedef vertex_size_type                      vertex_size_type;
+//  };
+//  class VertexListHDSConcept_archetype : public HDSConcept_archetype, 
+//                                        public VertexHDSConcept_archetype {
+//      typedef typename hds_traits<VertexListHDSConcept_archetype
+//                                 >::vertex_iterator vertex_iterator;
+//      typedef typename hds_traits<VertexHDSConcept_archetype
+//                                 >::vertex_descriptor vertex_descriptor;
+//      typedef typename hds_traits<VertexListHDSConcept_archetype
+//                                 >::vertex_size_type vertex_size_type;
+//      VertexListHDSConcept_archetype();
+//      VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
+//    public:
+//      std::pair<vertex_iterator,vertex_iterator>
+//      vertices(VertexListHDSConcept_archetype const& hds) const;
+//      vertex_size_type
+//      num_vertices(VertexListHDSConcept_archetype const& hds) const;
+//  };
+//..
+
+#ifndef BOOST_HDSTL_VERTEX_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_VERTEX_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class VertexListHDSConcept_archetype;  // forward declaration
+
+template <>
+struct hds_traits<VertexListHDSConcept_archetype> {
+    // This template specialization of 'hds_traits' for the
+    // 'VertexListHDSConcept_archetype' provides the 'vertex_iterator'
+    // and 'vertex_size_type' types.
+    
+    // TYPES
+    typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
+        // Vertex iterator type for the 'VertexListHDSConcept' archetype.
+
+    typedef vertex_size_type                      vertex_size_type;
+        // Vertex size type for the 'VertexListHDSConcept' archetype.
+};
+
+
+class VertexListHDSConcept_archetype : public HDSConcept_archetype, 
+                                      public VertexHDSConcept_archetype {
+    // This class provides an exact implementation (no more, no less) of the
+    // 'VertexListHDS' concept.  It can be used to instantiate class and
+    // function templates that require their template arguments to be a model
+    // of this concept in order to verify that there are no extra syntactic
+    // requirements.
+
+    // PRIVATE TYPES
+    typedef typename hds_traits<VertexListHDSConcept_archetype
+                               >::vertex_iterator vertex_iterator;
+    
+    typedef typename hds_traits<VertexHDSConcept_archetype
+                               >::vertex_descriptor vertex_descriptor;
+        //vertex_descriptor from the VertexHDSConcept used here.
+
+    typedef typename hds_traits<VertexListHDSConcept_archetype
+                               >::vertex_size_type vertex_size_type;
+    
+    // NOT IMPLEMENTED
+    VertexListHDSConcept_archetype();
+    VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
+
+  public:
+    // MANIPULATORS
+    std::pair<vertex_iterator,vertex_iterator>
+    vertices(VertexListHDSConcept_archetype const& hds) const;
+        // Returns a 'vertex_iterator' pair, consistent with the STL style
+        // iterator ranges, which means all the vertices can be accessed by
+        // increasing the first part of the pair until the second part is
+        // reached.
+
+    vertex_size_type
+    num_vertices(VertexListHDSConcept_archetype const& hds) const;
+        // Returns the number of vertices in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<vertex_iterator,vertex_iterator>
+VertexListHDSConcept_archetype<>::vertices(
+                               VertexListHDSConcept_archetype const& hds) const
+{
+    return std::pair<vertex_iterator,vertex_iterator>();
+}
+
+typename hds_traits<VertexListHDSConcept_archetype>::vertex_size_type
+VertexListHDSConcept_archetype<>::num_vertices(
+                               VertexListHDSConcept_archetype const& hds) const
+{
+    return vertex_size_type();
+}
+
+#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-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -106,8 +106,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_BIDIRECTIONALHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_BIDIRECTIONALHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_BIDIRECTIONAL_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_BIDIRECTIONAL_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 
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-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -81,8 +81,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_FACETHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_FACETHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_FACET_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_FACET_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 
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-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -91,11 +91,9 @@
 //     {
 //         using namespace boost;
 //         function_requires<HDSConcept>();
-//         function_requires<DefaultConstructibleConcept<facet_descriptor> >();
-//         function_requires<CopyConstructibleConcept<facet_descriptor> >();
-//         function_requires<EqualityComparableConcept<facet_descriptor> >();
-//         function_requires<AssignableConcept<facet_descriptor> >();
-//         function_requires<hdstl_detail::MultiPassInputIteratorConcept<facet_iterator> >();
+//         function_requires<FacetHDSConcept>();
+//         function_requires<hdstl_detail::MultiPassInputIteratorConcept<
+//                                                         facet_iterator> >();
 //         p = facets(hds);
 //         f = *p.first;
 //         F = num_facets(hds);
@@ -116,8 +114,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_FACET_LIST_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_FACET_LIST_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 
@@ -155,11 +153,9 @@
        {
            using namespace boost;
            function_requires<HDSConcept>();
-           function_requires<DefaultConstructibleConcept<facet_descriptor> >();
-           function_requires<CopyConstructibleConcept<facet_descriptor> >();
-           function_requires<EqualityComparableConcept<facet_descriptor> >();
-           function_requires<AssignableConcept<facet_descriptor> >();
-           function_requires<hdstl_detail::MultiPassInputIteratorConcept<facet_iterator> >();
+           function_requires<FacetHDSConcept>();
+           function_requires<hdstl_detail::MultiPassInputIteratorConcept<
+                                                           facet_iterator> >();
            p = facets(hds);
            f = *p.first;
            F = num_facets(hds);
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-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -110,8 +110,8 @@
 // };
 //.. 
 
-#ifdef BOOST_HDSTL_CONCEPTS_MUTABLEHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_MUTABLEHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_MUTABLE_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_MUTABLE_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 
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-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -81,8 +81,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_VERTEXHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_VERTEXHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_VERTEX_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_VERTEX_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>