Boost logo

Boost-Commit :

From: huseyinakcan_at_[hidden]
Date: 2007-07-01 01:29:21


Author: huseyinakcan
Date: 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
New Revision: 7330
URL: http://svn.boost.org/trac/boost/changeset/7330

Log:
all the archetype tests.

Added:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.t.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.cpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.t.cpp
Text files modified:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/Makefile.dbg_exc_mt | 96 +++++++++++++++++++------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp | 87 +++++++++++++---------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp | 20 +++--
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp | 47 +++++++++++-
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp | 66 ++++++++++------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.hpp | 69 ++++++++++-------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp | 78 ++++++++++++--------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.hpp | 153 +++++++++++++++++++++++++++------------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp | 122 +++++++++++++++++++++++--------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.hpp | 130 ++++++++++++++++++++++-----------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.hpp | 137 +++++++++++++++++++++++++----------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp | 74 +++++++++++-------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp | 88 +++++++++++++++-------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp | 62 +++++++++++----
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp | 96 +++++++++++++++---------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.t.cpp | 2
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp | 2
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.t.cpp | 2
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.t.cpp | 2
   19 files changed, 897 insertions(+), 436 deletions(-)

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/Makefile.dbg_exc_mt
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/Makefile.dbg_exc_mt (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/Makefile.dbg_exc_mt 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -1,5 +1,6 @@
 CXX=g++
-CXXFLAGS=-pedantic -W -Wall -I${BOOST} -I.
+CXXFLAGS=-pedantic -W -Wall -I.
+#CXXFLAGS=-pedantic -W -Wall -I${BOOST} -I.
 
 LD=g++
 
@@ -8,22 +9,36 @@
 PACKAGE_OBJECTS=backward_hds_concept_archetype.o \
         bidirectional_hds_concept_archetype.o \
         facet_hds_concept_archetype.o \
+ facet_list_hds_concept_archetype.o \
         forward_hds_concept_archetype.o \
         hds_concept_archetype.o \
+ halfedge_list_hds_concept_archetype.o \
         mutable_forward_hds_concept_archetype.o \
+ mutable_backward_hds_concept_archetype.o \
+ mutable_bidirectional_hds_concept_archetype.o \
         mutable_hds_concept_archetype.o \
- vertex_hds_concept_archetype.o
+ mutable_facet_hds_concept_archetype.o \
+ mutable_vertex_hds_concept_archetype.o \
+ vertex_hds_concept_archetype.o \
+ vertex_list_hds_concept_archetype.o
 
 PACKAGE_LIBRARY=libhds_archetypes.a
 
 TEST_DRIVERS=backward_hds_concept_archetype.t \
         bidirectional_hds_concept_archetype.t \
         facet_hds_concept_archetype.t \
+ facet_list_hds_concept_archetype.t \
         forward_hds_concept_archetype.t \
         hds_concept_archetype.t \
+ halfedge_list_hds_concept_archetype.t \
         mutable_forward_hds_concept_archetype.t \
+ mutable_backward_hds_concept_archetype.t \
+ mutable_bidirectional_hds_concept_archetype.t \
         mutable_hds_concept_archetype.t \
- vertex_hds_concept_archetype.t
+ mutable_facet_hds_concept_archetype.t \
+ mutable_vertex_hds_concept_archetype.t \
+ vertex_hds_concept_archetype.t \
+ vertex_list_hds_concept_archetype.t
 
 .SUFFIXES:
 .SUFFIXES: ${TARGET}.o .o .cpp .hpp
@@ -45,11 +60,21 @@
 facet_hds_concept.o: hds_concept.hpp
 forward_hds_concept.o: hds_concept.hpp
 hds_concept.o:
+halfedge_list_hds_concept.o: hds_concept.hpp
 mutable_forward_hds_concept.o: forward_hds_concept.hpp \
         hds_concept.hpp mutable_hds_concept.hpp
+mutable_backward_hds_concept.o: backward_hds_concept.hpp \
+ hds_concept.hpp mutable_hds_concept.hpp
+mutable_bidirectional_hds_concept.o: mutable_forward_hds_concept.hpp \
+ mutable_backward_hds_concept.hpp hds_concept.hpp \
+ mutable_hds_concept.hpp
 mutable_hds_concept.o: hds_concept.hpp
+mutable_facet_hds_concept.o: facet_hds_concept.hpp \
+ mutable_hds_concept.hpp
+mutable_vertex_hds_concept.o: vertex_hds_concept.hpp \
+ mutable_hds_concept.hpp
 vertex_hds_concept.o: hds_concept.hpp
-
+vertex_list_hds_concept.o: vertex_hds_concept.hpp
 
 ### BUILDING TEST DRIVERS AND DEPENDENCIES OF TEST DRIVER
 
@@ -59,31 +84,56 @@
 %.t: %.t.o %.o
         ${LD} ${LDFLAGS} -o $*.t $^
 
-backward_hds_concept_archetype.t.o: hds_concept.hpp
-bidirectional_hds_concept_archetype.t.o: forward_hds_concept.hpp \
- backward_hds_concept.hpp hds_concept.hpp
-facet_hds_concept_archetype.t.o: hds_concept.hpp
-forward_hds_concept_archetype.t.o: hds_concept.hpp
+backward_hds_concept_archetype.t.o: hds_concept_archetype.hpp
+bidirectional_hds_concept_archetype.t.o: forward_hds_concept_archetype.hpp \
+ backward_hds_concept_archetype.hpp hds_concept_archetype.hpp
+facet_hds_concept_archetype.t.o: hds_concept_archetype.hpp
+facet_list_hds_concept_archetype.t.o: hds_concept_archetype.hpp \
+ facet_hds_concept_archetype.hpp
+forward_hds_concept_archetype.t.o: hds_concept_archetype.hpp
 hds_concept_archetype.t.o:
-mutable_forward_hds_concept_archetype.t.o: forward_hds_concept.hpp \
- hds_concept.hpp mutable_hds_concept.hpp
-mutable_hds_concept_archetype.t.o: hds_concept.hpp
-vertex_hds_concept_archetype.t.o: hds_concept.hpp
+halfedge_list_hds_concept_archetype.t.o: hds_concept_archetype.hpp
+mutable_forward_hds_concept_archetype.t.o: forward_hds_concept_archetype.hpp \
+ hds_concept_archetype.hpp mutable_hds_concept_archetype.hpp
+mutable_backward_hds_concept_archetype.t.o: backward_hds_concept_archetype.hpp \
+ hds_concept_archetype.hpp mutable_hds_concept_archetype.hpp
+mutable_bidirectional_hds_concept_archetype.t.o: mutable_forward_hds_concept_archetype.hpp \
+ mutable_backward_hds_concept_archetype.hpp hds_concept_archetype.hpp \
+ mutable_hds_concept_archetype.hpp
+mutable_hds_concept_archetype.t.o: hds_concept_archetype.hpp
+mutable_facet_hds_concept_archetype.t.o: facet_hds_concept_archetype.hpp \
+ mutable_hds_concept_archetype.hpp
+mutable_vertex_hds_concept_archetype.t.o: vertex_hds_concept_archetype.hpp \
+ mutable_hds_concept_archetype.hpp
+vertex_hds_concept_archetype.t.o: hds_concept_archetype.hpp
+vertex_list_hds_concept_archetype.t.o: vertex_hds_concept_archetype.hpp
 
 %.t.o: %.t.cpp %.h
         ${CXX} ${CXXFLAGS} ${CXXINCLUDES} -c -o $*.t.o $<
 
-backward_hds_concept.t: hds_concept_archetype.o
-bidirectional_hds_concept.t: forward_hds_concept_archetype.o \
- backward_hds_concept_archetype.o hds_concept.o
-facet_hds_concept.t.o: hds_concept_archetype.o
-forward_hds_concept.t.o: hds_concept_archetype.o
+backward_hds_concept.t: hds_concept.o
+bidirectional_hds_concept.t: forward_hds_concept.o \
+ backward_hds_concept.o hds_concept.o
+facet_hds_concept.t.o: hds_concept.o
+facet_list_hds_concept.t.o: hds_concept.o \
+ facet_hds_concept.o
+forward_hds_concept.t.o: hds_concept.o
 hds_concept.t.o:
-mutable_forward_hds_concept.t.o: forward_hds_concept_archetype.o \
- hds_concept_archetype.o mutable_hds_concept.o
-mutable_hds_concept.t.o: hds_concept_archetype.o
-vertex_hds_concept.t.o: hds_concept_archetype.o
-
+halfedge_list_hds_concept.t.o: hds_concept.o
+mutable_forward_hds_concept.t.o: forward_hds_concept.o \
+ hds_concept.o mutable_hds_concept.o
+mutable_backward_hds_concept.t.o: backward_hds_concept.o \
+ hds_concept.o mutable_hds_concept.o
+mutable_bidirectional_hds_concept.t.o: mutable_forward_hds_concept.hpp \
+ mutable_backward_hds_concept.o hds_concept.o \
+ mutable_hds_concept.o
+mutable_hds_concept.t.o: hds_concept.o
+mutable_facet_hds_concept.o: facet_hds_concept.o \
+ mutable_hds_concept.o
+mutable_vertex_hds_concept.o: vertex_hds_concept.o \
+ mutable_hds_concept.o
+vertex_hds_concept.t.o: hds_concept.o
+vertex_list_hds_concept.t.o: vertex_hds_concept.o
 
 ## UTILITIES
 

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// backward_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/backward_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -21,6 +21,8 @@
 // typedef boost::convertible_to_archetype<backward_traversal_tag>
 // traversal_category;
 // typedef BackwardCategory backward_category;
+// enum {supports_vertices = false};
+// enum {supports_facets = false};
 // };
 // template <typename BackwardCategory>
 // class BackwardHDSConcept_archetype : public HDSConcept_archetype {
@@ -30,21 +32,23 @@
 // BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
 // public:
 // halfedge_descriptor
-// prev_in_facet(BackwardHDSConcept_archetype const& hds,
-// halfedge_descriptor h) const;
+// prev_in_facet(halfedge_descriptor h,
+// BackwardHDSConcept_archetype const& hds);
 // halfedge_descriptor
-// prev_at_source(BackwardHDSConcept_archetype const& hds,
-// halfedge_descriptor h) const;
+// prev_at_source(halfedge_descriptor h,
+// BackwardHDSConcept_archetype const& hds);
 // halfedge_descriptor
-// prev_at_target(BackwardHDSConcept_archetype const& hds,
-// halfedge_descriptor h) const;
+// prev_at_target(halfedge_descriptor h,
+// BackwardHDSConcept_archetype const& hds);
 // };
 //..
 
 #ifndef BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -68,17 +72,21 @@
     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'.
+ // 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = false};
 };
 
 
 template <typename BackwardCategory>
-class BackwardHDSConcept_archetype : public HDSConcept_archetype {
+class BackwardHDSConcept_archetype : virtual 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
@@ -86,60 +94,65 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<BackwardHDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
-
- // NOT IMPLEMENTED
- BackwardHDSConcept_archetype();
- BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
+ typedef typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory> >
+ ::halfedge_descriptor halfedge_descriptor;
 
   public:
     // MANIPULATORS
     halfedge_descriptor
- prev_in_facet(BackwardHDSConcept_archetype const& hds,
- halfedge_descriptor h) const;
+ prev_in_facet(halfedge_descriptor h,
+ BackwardHDSConcept_archetype const& hds);
         // 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;
+ prev_at_source(halfedge_descriptor h,
+ BackwardHDSConcept_archetype const& hds);
         // 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;
+ halfedge_descriptor
+ prev_at_target(halfedge_descriptor h,
+ BackwardHDSConcept_archetype const& hds);
         // 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)
+inline
+typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory> >
+ ::halfedge_descriptor
+prev_in_facet(typename hds_traits<BackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ BackwardHDSConcept_archetype<BackwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
 template <typename BackwardCategory>
-typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
-BackwardHDSConcept_archetype<BackwardCategory>::prev_at_source(
- BackwardHDSConcept_archetype const& hds,
- halfedge_descriptor h)
+inline
+typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory> >
+ ::halfedge_descriptor
+prev_at_source(typename hds_traits<BackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ BackwardHDSConcept_archetype<BackwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
 template <typename BackwardCategory>
-typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
-BackwardHDSConcept_archetype<BackwardCategory>::prev_at_target(
- BackwardHDSConcept_archetype const& hds,
- halfedge_descriptor h)
+inline
+typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory> >
+ ::halfedge_descriptor
+prev_at_target(typename hds_traits<BackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ BackwardHDSConcept_archetype<BackwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,48 @@
+//backward_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+//class 'backward_hds_concept_archetype' satisfies all the concept requirements
+//of the 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/backward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/backward_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, BackwardHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::BackwardHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BackwardHDSConcept_archetype<
+ boost::hdstl::prev_in_facet_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BackwardHDSConcept_archetype<
+ boost::hdstl::prev_at_source_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BackwardHDSConcept_archetype<
+ boost::hdstl::prev_at_target_tag> >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// bidirectional_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/bidirectional_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -39,7 +39,10 @@
 #ifndef BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/forward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/backward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -76,13 +79,16 @@
         // 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.
+
+ enum{supports_vertices = false};
+ enum{supports_facets = false};
 };
 
 
 template <typename ForwardCategory, typename BackwardCategory>
 class BidirectionalHDSConcept_archetype
-: public ForwardHDSConcept_archetype<ForwardCategory>,
- BackwardHDSConcept_archetype<BackwardCategory> {
+: virtual public ForwardHDSConcept_archetype<ForwardCategory>,
+ virtual public 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
@@ -90,12 +96,10 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<BidirectionalHDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<BidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> >::halfedge_descriptor
+ halfedge_descriptor;
 
- // NOT IMPLEMENTED
- BidirectionalHDSConcept_archetype();
- BidirectionalHDSConcept_archetype(const BidirectionalHDSConcept_archetype&);
 };
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,51 @@
+//bidirectional_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+//class 'bidirectional_hds_concept_archetype' satisfies all the concept requirements
+//of the 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/bidirectional_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/bidirectional_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, BidirectionalHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::BidirectionalHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BidirectionalHDSConcept_archetype<
+ boost::hdstl::next_in_facet_tag,
+ boost::hdstl::prev_in_facet_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BidirectionalHDSConcept_archetype<
+ boost::hdstl::next_at_source_tag,
+ boost::hdstl::prev_at_source_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::BidirectionalHDSConcept_archetype<
+ boost::hdstl::next_at_target_tag,
+ boost::hdstl::prev_at_target_tag> >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// facet_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/facet_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -12,9 +12,11 @@
 ///Archetype class
 ///---------------
 //..
-// class FacetHDSConcept_archetype : public HDSConcept_archetype {
+// class FacetHDSConcept_archetype : virtual public HDSConcept_archetype {
 // typedef typename hds_traits<FacetHDSConcept_archetype
 // >::facet_descriptor facet_descriptor;
+// facet_descriptor&
+// facet(halfedge_descriptor &h, FacetHDSConcept_archetype const& hds);
 // };
 //
 // template<>
@@ -22,13 +24,21 @@
 // typedef boost::default_constructible_archetype<
 // boost::copy_constructible_archetype<
 // boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
 // boost::assignable_archetype<> > > > facet_descriptor;
+// enum {supports_vertices = false};
+// enum {supports_facets = true};
 // };
 //..
 
 #ifndef BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
 
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
 #include <boost/concept_archetype.hpp>
 
 namespace boost {
@@ -45,11 +55,20 @@
     typedef boost::default_constructible_archetype<
             boost::copy_constructible_archetype<
             boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'FacetHDSConcept' archetype.
+
+ 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = true};
 };
 
-class FacetHDSConcept_archetype : public HDSConcept_archetype {
+class FacetHDSConcept_archetype : virtual 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
@@ -57,10 +76,30 @@
     // are stated in the 'FacetHDS' concept.
 
     // PRIVATE TYPES
- typedef typename hds_traits<FacetHDSConcept_archetype
- >::facet_descriptor facet_descriptor;
+ typedef hds_traits<FacetHDSConcept_archetype>::halfedge_descriptor
+ halfedge_descriptor;
+ typedef hds_traits<FacetHDSConcept_archetype>::facet_descriptor
+ facet_descriptor;
+
+ public:
+ // MANIPULATORS
+ facet_descriptor&
+ facet(halfedge_descriptor &h, FacetHDSConcept_archetype const& hds);
+ // returns the facet descriptor of the facet to the left of 'h', when
+ // forward facet cycles are oriented in counter-clockwise order.
+
 };
 
+// MANIPULATORS
+inline
+hds_traits<FacetHDSConcept_archetype>::facet_descriptor
+facet(hds_traits<FacetHDSConcept_archetype>::halfedge_descriptor&,
+ FacetHDSConcept_archetype const& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<FacetHDSConcept_archetype>::facet_descriptor();
+}
+
 } // end namespace hdstl
 } // end namespace boost
 

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//facet_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'facet_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/facet_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/facet_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, FacetHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::FacetHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::FacetHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// facet_list_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/facet_list_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -40,7 +40,9 @@
 #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>
+#include <boost/hdstl/hds_archetypes/facet_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -54,16 +56,30 @@
     // and 'size_type' types.
     
     // TYPES
- typedef hdstl_detail::ForwardIteratorConcept<> facet_iterator;
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'FacetListHDSConcept' archetype.
+
+ 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.
+
+ typedef boost::forward_iterator_archetype<facet_descriptor> facet_iterator;
         // Facet iterator type for the 'FacetListHDSConcept' archetype.
 
- typedef size_type size_type;
+ typedef int size_type;
         // Facet size type for the 'FacetListHDSConcept' archetype.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = true};
 };
 
 
-class FacetListHDSConcept_archetype : public HDSConcept_archetype,
- public FacetHDSConcept_archetype {
+class FacetListHDSConcept_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
@@ -71,20 +87,19 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<FacetListHDSConcept_archetype
+ typedef hds_traits<FacetListHDSConcept_archetype
>::facet_iterator facet_iterator;
     
- typedef typename hds_traits<FacetHDSConcept_archetype
+ typedef hds_traits<FacetHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+
+ typedef hds_traits<FacetHDSConcept_archetype
>::facet_descriptor facet_descriptor;
         //facet_descriptor from the FacetHDSConcept used here.
 
- typedef typename hds_traits<FacetListHDSConcept_archetype
+ typedef hds_traits<FacetListHDSConcept_archetype
>::size_type size_type;
     
- // NOT IMPLEMENTED
- FacetListHDSConcept_archetype();
- FacetListHDSConcept_archetype(const FacetListHDSConcept_archetype&);
-
   public:
     // MANIPULATORS
     facet_iterator
@@ -103,25 +118,28 @@
 };
 
 // MANIPULATORS
-typename hds_traits<FacetListHDSConcept_archetype>::facet_iterator
-FacetListHDSConcept_archetype<>::facets_begin(
- FacetListHDSConcept_archetype const& hds) const
+inline
+hds_traits<FacetListHDSConcept_archetype>::facet_iterator
+facets_begin(FacetListHDSConcept_archetype const& hds)
 {
- return facet_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<FacetListHDSConcept_archetype>::facet_iterator();
 }
 
-typename hds_traits<FacetListHDSConcept_archetype>::facet_iterator
-FacetListHDSConcept_archetype<>::facets_end(
- FacetListHDSConcept_archetype const& hds) const
+inline
+hds_traits<FacetListHDSConcept_archetype>::facet_iterator
+facets_end(FacetListHDSConcept_archetype const& hds)
 {
- return facet_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<FacetListHDSConcept_archetype>::facet_iterator();
 }
 
-typename hds_traits<FacetListHDSConcept_archetype>::size_type
-FacetListHDSConcept_archetype<>::num_facets(
- FacetListHDSConcept_archetype const& hds) const
+inline
+hds_traits<FacetListHDSConcept_archetype>::size_type
+num_facets(FacetListHDSConcept_archetype const& hds)
 {
- return size_type();
+ (void)hds; // eliminate unused variable warning
+ return (int)0;
 }
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//facet_list_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'facet_list_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/facet_list_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/facet_list_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, FacetListHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::FacetListHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::FacetListHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// forward_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/forward_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -40,7 +40,9 @@
 #ifndef BOOST_HDSTL_FORWARD_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_FORWARD_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -70,11 +72,14 @@
         // 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = false};
 };
 
 
 template <typename ForwardCategory>
-class ForwardHDSConcept_archetype : public HDSConcept_archetype {
+class ForwardHDSConcept_archetype : virtual public HDSConcept_archetype {
     // This class provides an exact implementation (no more, no less) of the
     // 'ForwardHDS' concept. It can be used to instantiate class and function
     // templates that require their template arguments to be a model of this
@@ -82,62 +87,68 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<ForwardHDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
-
- // NOT IMPLEMENTED
- ForwardHDSConcept_archetype();
- ForwardHDSConcept_archetype(const ForwardHDSConcept_archetype&);
+ typedef typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory> >
+ ::halfedge_descriptor halfedge_descriptor;
 
   public:
     // MANIPULATORS
     halfedge_descriptor
- next_in_facet(ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h) const;
+ next_in_facet(halfedge_descriptor h,
+ ForwardHDSConcept_archetype const& hds);
         // Return the halfedge following 'h' in the (counter-clockwise) facet
         // cycle of 'h' in 'hds'.
 
     halfedge_descriptor
- next_at_source(ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h) const;
+ next_at_source(halfedge_descriptor h,
+ ForwardHDSConcept_archetype const& hds);
         // Returns the halfedge following 'h' in the (clockwise) vertex
         // cycle of the source of 'h' in 'hds'.
 
      halfedge_descriptor
- next_at_target(ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h) const;
+ next_at_target(halfedge_descriptor h,
+ ForwardHDSConcept_archetype const& hds);
         // Returns the halfedge following 'h' in the (clockwise) vertex
         // cycle of the target of 'h' in 'hds'.
 };
 
 // MANIPULATORS
 template <typename ForwardCategory>
-typename hds_traits<ForwardHDSConcept_archetype>::halfedge_descriptor
-ForwardHDSConcept_archetype<ForwardCategory>::next_in_facet(
- ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h)
+inline
+typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory> >
+ ::halfedge_descriptor
+next_in_facet(typename hds_traits<ForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ ForwardHDSConcept_archetype<ForwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
 template <typename ForwardCategory>
-typename hds_traits<ForwardHDSConcept_archetype>::halfedge_descriptor
-ForwardHDSConcept_archetype<ForwardCategory>::next_at_source(
- ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h)
+inline
+typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory> >
+ ::halfedge_descriptor
+next_at_source(typename hds_traits<ForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ ForwardHDSConcept_archetype<ForwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
 template <typename ForwardCategory>
-typename hds_traits<ForwardHDSConcept_archetype>::halfedge_descriptor
-ForwardHDSConcept_archetype<ForwardCategory>::next_at_target(
- ForwardHDSConcept_archetype const& hds,
- halfedge_descriptor h)
+inline
+typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory> >
+ ::halfedge_descriptor
+next_at_target(typename hds_traits<ForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ ForwardHDSConcept_archetype<ForwardCategory> const& hds)
 {
- return halfedge_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return h;
 }
 
+
 } // end namespace hdstl
 } // end namespace boost
 #endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/forward_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,48 @@
+//forward_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+//class 'forward_hds_concept_archetype' satisfies all the concept requirements
+//of the 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/forward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/forward_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, ForwardHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::ForwardHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::ForwardHDSConcept_archetype<
+ boost::hdstl::next_in_facet_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::ForwardHDSConcept_archetype<
+ boost::hdstl::next_at_source_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::ForwardHDSConcept_archetype<
+ boost::hdstl::next_at_target_tag> >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// halfedge_list_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/halfedge_list_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -14,18 +14,22 @@
 //..
 // template <>
 // struct hds_traits<HalfedgeListHDSConcept_archetype> {
-// typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
-// typedef size_type size_type;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::forward_iterator_archetype<halfedge_descriptor>
+// halfedge_iterator;
+// typedef int size_type;
+// enum { supports_vertices = false };
+// enum { supports_facets = false };
 // };
 // class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
-// typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+// typedef hds_traits<HalfedgeListHDSConcept_archetype
 // >::halfedge_iterator halfedge_iterator;
-// typedef typename hds_traits<HalfedgeHDSConcept_archetype
+// typedef hds_traits<HalfedgeListHDSConcept_archetype
 // >::halfedge_descriptor halfedge_descriptor;
-// typedef typename hds_traits<HalfedgeListHDSConcept_archetype
-// >::size_type size_type;
-// HalfedgeListHDSConcept_archetype();
-// HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
+// typedef hds_traits<HalfedgeListHDSConcept_archetype>::size_type size_type;
 // public:
 // halfedge_iterator
 // halfedges_begin(HalfedgeListHDSConcept_archetype const& hds) const;
@@ -39,7 +43,9 @@
 #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>
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -53,11 +59,21 @@
     // and 'size_type' types.
     
     // TYPES
- typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'HalfedgeListHDSConcept' archetype.
+
+ typedef boost::forward_iterator_archetype<halfedge_descriptor>
+ halfedge_iterator;
         // Halfedge iterator type for the 'HalfedgeListHDSConcept' archetype.
 
- typedef size_type size_type;
+ typedef int size_type;
         // Halfedge size type for the 'HalfedgeListHDSConcept' archetype.
+
+ enum { supports_vertices = false };
+ enum { supports_facets = false };
 };
 
 class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
@@ -68,20 +84,15 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+ typedef hds_traits<HalfedgeListHDSConcept_archetype
>::halfedge_iterator halfedge_iterator;
     
- typedef typename hds_traits<HalfedgeHDSConcept_archetype
+ typedef hds_traits<HalfedgeListHDSConcept_archetype
>::halfedge_descriptor halfedge_descriptor;
- //halfedge_descriptor from the HalfedgeHDSConcept used here.
+ //halfedge_descriptor from the HalfedgeListHDSConcept used here.
 
- typedef typename hds_traits<HalfedgeListHDSConcept_archetype
- >::size_type size_type;
+ typedef hds_traits<HalfedgeListHDSConcept_archetype>::size_type size_type;
     
- // NOT IMPLEMENTED
- HalfedgeListHDSConcept_archetype();
- HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
-
   public:
     // MANIPULATORS
     halfedge_iterator
@@ -100,25 +111,28 @@
 };
 
 // MANIPULATORS
-typename hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator
-HalfedgeListHDSConcept_archetype<>::halfedges_begin(
- HalfedgeListHDSConcept_archetype const& hds) const
+inline
+hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator
+halfedges_begin(HalfedgeListHDSConcept_archetype const& hds)
 {
- return halfedge_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator();
 }
 
-typename hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator
-HalfedgeListHDSConcept_archetype<>::halfedges_end(
- HalfedgeListHDSConcept_archetype const& hds) const
+inline
+hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator
+halfedges_end(HalfedgeListHDSConcept_archetype const& hds)
 {
- return halfedge_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_iterator();
 }
 
-typename hds_traits<HalfedgeListHDSConcept_archetype>::size_type
-HalfedgeListHDSConcept_archetype<>::num_halfedges(
- HalfedgeListHDSConcept_archetype const& hds) const
+inline
+hds_traits<HalfedgeListHDSConcept_archetype>::size_type
+num_halfedges(HalfedgeListHDSConcept_archetype const& hds)
 {
- return size_type();
+ (void)hds; // eliminate unused variable warning
+ return 0;
 }
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//halfedge_list_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'halfedge_list_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/halfedge_list_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/halfedge_list_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, HalfedgeListHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::HalfedgeListHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::HalfedgeListHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_backward_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_backward_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -13,34 +13,48 @@
 ///---------------
 //..
 // template <typename BackwardCategory>
+// struct hds_traits<MutableBackwardHDSConcept_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;
+// enum {supports_vertices = false};
+// enum {supports_facets = false};
+// };
+// template <typename BackwardCategory>
 // class MutableBackwardHDSConcept_archetype
 // : public BackwardHDSConcept_archetype<BackwardCategory>,
 // public MutableHDSConcept_archetype {
-// typedef typename hds_traits<HDSConcept_archetype
-// >::halfedge_descriptor halfedge_descriptor;
-// typedef typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory>
-// >::traversal_category traversal_category;
+// typedef typename hds_traits<MutableBackwardHDSConcept_archetype<
+// BackwardCategory> >::halfedge_descriptor
+// halfedge_descriptor;
+// typedef typename hds_traits<MutableBackwardHDSConcept_archetype<
+// BackwardCategory> >::traversal_category
+// traversal_category;
 // typedef BackwardCategory backward_category;
-// MutableBackwardHDSConcept_archetype();
-// MutableBackwardHDSConcept_archetype(
-// const MutableBackwardHDSConcept_archetype&);
 // public:
 // void
-// set_prev_in_facet(MutableBackwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_prev_in_facet(halfedge_descriptor h, halfedge_descriptor g,
+// MutableBackwardHDSConcept_archetype& hds);
 // void
-// set_prev_at_source(MutableBackwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_prev_at_source(halfedge_descriptor h, halfedge_descriptor g,
+// MutableBackwardHDSConcept_archetype& hds);
 // void
-// set_prev_at_target(MutableBackwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_prev_at_target(halfedge_descriptor h, halfedge_descriptor g,
+// MutableBackwardHDSConcept_archetype& hds);
 // };
 //..
 
 #ifndef BOOST_HDSTL_MUTABLE_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/backward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -49,9 +63,38 @@
 class MutableBackwardHDSConcept_archetype; // forward declaration
 
 template <typename BackwardCategory>
+struct hds_traits<MutableBackwardHDSConcept_archetype<BackwardCategory> > {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableBackwardHDSConcept_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 'MutableBackwardHDSConcept'
+ // archetype.
+
+ typedef boost::convertible_to_archetype<backward_traversal_tag>
+ traversal_category;
+ // This type, convertible to 'backward_traversal_tag', indicates that
+ // the 'MutableBackwardHDSConcept' archetype is a model of
+ // 'MutableBackwardHDSConcept'.
+
+ 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = false};
+};
+
+template <typename BackwardCategory>
 class MutableBackwardHDSConcept_archetype
-: public BackwardHDSConcept_archetype<BackwardCategory>,
- public MutableHDSConcept_archetype {
+: virtual public BackwardHDSConcept_archetype<BackwardCategory>,
+ virtual public MutableHDSConcept_archetype {
     // This class provides an exact implementation (no more, no less) of the
     // 'MutableBackwardHDS' concept. It can be used to instantiate class and
     // function templates that require their template arguments to be a model
@@ -59,13 +102,15 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<HDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
- //Halfedge descriptor type from 'HDSConcept'
-
- typedef typename hds_traits<BackwardHDSConcept_archetype<BackwardCategory>
- >::traversal_category traversal_category;
- //traversal category type from from 'BackwardHDSConcept',
+ typedef typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor
+ halfedge_descriptor;
+ //Halfedge descriptor type from 'MutableBackwardHDSConcept'
+
+ typedef typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::traversal_category
+ traversal_category;
+ //traversal category type from from 'MutableBackwardHDSConcept',
         //has to be convertible to 'backward_traversal_tag'.
     
     typedef BackwardCategory backward_category;
@@ -73,53 +118,69 @@
         // 'prev_at_source_tag', or 'prev_at_target_tag', indicates which is
         // the primary accessor(s) for which the 'set_...' methods are defined.
                                
- // NOT IMPLEMENTED
- MutableBackwardHDSConcept_archetype();
- MutableBackwardHDSConcept_archetype(
- const MutableBackwardHDSConcept_archetype&);
-
   public:
     // MANIPULATORS
     void
- set_prev_in_facet(MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_prev_in_facet(halfedge_descriptor h, halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds);
         // set 'g' as the halfedge preceding 'h' in the (counter-clockwise)
         // facet cycle of 'h' in 'hds'.
 
     void
- set_prev_at_source(MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_prev_at_source(halfedge_descriptor h, halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds);
         // set 'g' as the halfedge preceding 'h' in the (clockwise) vertex
         // cycle of the source of 'h' in 'hds'.
 
     void
- set_prev_at_target(MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_prev_at_target(halfedge_descriptor h, halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds);
         // set 'g' as the halfedge preceding 'h' in the (clockwise) vertex
         // cycle of the target of 'h' in 'hds'.
 };
 
 // MANIPULATORS
 template <typename BackwardCategory>
+inline
 void
-MutableBackwardHDSConcept_archetype<BackwardCategory>::set_prev_in_facet(
- MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_prev_in_facet(typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 template <typename BackwardCategory>
+inline
 void
-MutableBackwardHDSConcept_archetype<BackwardCategory>::set_prev_at_source(
- MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_prev_at_source(typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 template <typename BackwardCategory>
+inline
 void
-MutableBackwardHDSConcept_archetype<BackwardCategory>::set_prev_at_target(
- MutableBackwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_prev_at_target(typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableBackwardHDSConcept_archetype<
+ BackwardCategory> >::halfedge_descriptor g,
+ MutableBackwardHDSConcept_archetype<BackwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 } // end namespace hdstl
 } // end namespace boost

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_backward_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,48 @@
+//mutable_backward_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_backward_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_backward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_backward_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableBackwardHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableBackwardHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBackwardHDSConcept_archetype<
+ boost::hdstl::prev_in_facet_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBackwardHDSConcept_archetype<
+ boost::hdstl::prev_at_source_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBackwardHDSConcept_archetype<
+ boost::hdstl::prev_at_target_tag> >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_bidirectional_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -13,28 +13,48 @@
 ///---------------
 //..
 // template <typename ForwardCategory, typename BackwardCategory>
-// class MutableBidirectionalHDSConcept_archetype
-// : public MutableForwardHDSConcept_archetype<ForwardCategory>,
-// public MutableBackwardHDSConcept_archetype<BackwardCategory>,
-// public BidirectionalHDSConcept_archetype {
-// typedef typename hds_traits<HDSConcept_archetype
-// >::halfedge_descriptor halfedge_descriptor;
-// typedef typename hds_traits<ForwardHDSConcept_archetype
-// >::forward_category forward_category;
-// typedef typename hds_traits<BackwardHDSConcept_archetype
-// >::backward_category backward_category;
-// typedef typename hds_traits<BidirectionalHDSConcept_archetype
-// >::traversal_category traversal_category;
-// MutableBidirectionalHDSConcept_archetype();
-// MutableBidirectionalHDSConcept_archetype(
-// const MutableBidirectionalHDSConcept_archetype&);
+// struct hds_traits<MutableBidirectionalHDSConcept_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;
+// enum {supports_vertices = false};
+// enum {supports_facets = false};
+// };
+// template <typename ForwardCategory, typename BackwardCategory>
+// class MutableBidirectionalHDSConcept_archetype
+// : public MutableForwardHDSConcept_archetype<ForwardCategory>,
+// public MutableBackwardHDSConcept_archetype<BackwardCategory>,
+// public BidirectionalHDSConcept_archetype<
+// ForwardCategory, BackwardCategory> {
+// typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+// ForwardCategory, BackwardCategory> >::halfedge_descriptor
+// halfedge_descriptor;
+// typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+// ForwardCategory, BackwardCategory> >::forward_category
+// forward_category;
+// typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+// ForwardCategory, BackwardCategory> >::backward_category
+// backward_category;
+// typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+// ForwardCategory, BackwardCategory> >::traversal_category
+// traversal_category;
 // };
 //..
 
 #ifndef BOOST_HDSTL_MUTABLE_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/mutable_forward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/mutable_backward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/bidirectional_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -43,10 +63,46 @@
 class MutableBidirectionalHDSConcept_archetype; // forward declaration
 
 template <typename ForwardCategory, typename BackwardCategory>
-class MutableBidirectionalHDSConcept_archetype
-: public MutableForwardHDSConcept_archetype<ForwardCategory>,
- public MutableBackwardHDSConcept_archetype<BackwardCategory>,
- public BidirectionalHDSConcept_archetype {
+struct hds_traits<MutableBidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> > {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableBidirectionalHDSConcept_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 'MutableBidirectionalHDSConcept'
+ // archetype.
+
+ typedef boost::convertible_to_archetype<bidirectional_traversal_tag>
+ traversal_category;
+ // This type, convertible to 'backward_traversal_tag', indicates that
+ // the 'MutableBidirectionalHDSConcept' archetype is a model of
+ // 'MutableBidirectionalHDSConcept'.
+
+ 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = false};
+};
+
+template <typename ForwardCategory, typename BackwardCategory>
+class MutableBidirectionalHDSConcept_archetype
+ : public MutableForwardHDSConcept_archetype<ForwardCategory>,
+ public MutableBackwardHDSConcept_archetype<BackwardCategory>,
+ public BidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> {
     // This class provides an exact implementation (no more, no less) of the
     // 'MutableBidirectionalHDS' concept. It can be used to instantiate class
     // and function templates that require their template arguments to be a
@@ -54,22 +110,22 @@
     // syntactic requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<HDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> >::halfedge_descriptor
+ halfedge_descriptor;
     
- typedef typename hds_traits<ForwardHDSConcept_archetype
- >::forward_category forward_category;
-
- typedef typename hds_traits<BackwardHDSConcept_archetype
- >::backward_category backward_category;
+ typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> >::forward_category
+ forward_category;
+
+ typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> >::backward_category
+ backward_category;
     
- typedef typename hds_traits<BidirectionalHDSConcept_archetype
- >::traversal_category traversal_category;
+ typedef typename hds_traits<MutableBidirectionalHDSConcept_archetype<
+ ForwardCategory, BackwardCategory> >::traversal_category
+ traversal_category;
 
- // NOT IMPLEMENTED
- MutableBidirectionalHDSConcept_archetype();
- MutableBidirectionalHDSConcept_archetype(
- const MutableBidirectionalHDSConcept_archetype&);
 };
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_bidirectional_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,51 @@
+//mutable_bidirectional_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_bidirectional_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_bidirectional_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_bidirectional_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableBidirectionalHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableBidirectionalHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBidirectionalHDSConcept_archetype<
+ boost::hdstl::next_in_facet_tag,
+ boost::hdstl::prev_in_facet_tag > >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBidirectionalHDSConcept_archetype<
+ boost::hdstl::next_at_source_tag,
+ boost::hdstl::prev_at_source_tag > >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableBidirectionalHDSConcept_archetype<
+ boost::hdstl::next_at_target_tag,
+ boost::hdstl::prev_at_target_tag > >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_facet_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_facet_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -12,31 +12,44 @@
 ///Archetype class
 ///---------------
 //..
-// class MutableFacetHDSConcept_archetype : public HDSConcept_archetype,
-// public FacetHDSConcept_archetype {
-// typedef typename hds_traits<FacetHDSConcept_archetype
+// template<>
+// struct hds_traits<MutableFacetHDSConcept_archetype> {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > facet_descriptor;
+// enum {supports_vertices = false};
+// enum {supports_facets = true};
+// };
+// class MutableFacetHDSConcept_archetype
+// : public MutableHDSConcept_archetype,
+// public FacetHDSConcept_archetype {
+// // PRIVATE TYPES
+// typedef hds_traits<MutableFacetHDSConcept_archetype
 // >::facet_descriptor facet_descriptor;
-// typedef typename hds_traits<HDSConcept_archetype
+// typedef hds_traits<MutableFacetHDSConcept_archetype
 // >::halfedge_descriptor halfedge_descriptor;
-// MutableFacetHDSConcept_archetype();
-// MutableFacetHDSConcept_archetype(
-// const MutableFacetHDSConcept_archetype&);
 // public:
-// void
-// set_facet(MutableFacetHDSConcept_archetype& hds,
-// halfedge_descriptor h, facet_descriptor f);
-// void
-// add_facet(MutableFacetHDSConcept_archetype& hds,
-// facet_descriptor f);
-// void
-// remove_facet(MutableFacetHDSConcept_archetype& hds,
-// facet_descriptor f);
+// void
+// set_facet(halfedge_descriptor h, facet_descriptor f,
+// MutableFacetHDSConcept_archetype& hds);
+// facet_descriptor
+// new_facet(MutableFacetHDSConcept_archetype& hds);
+// void
+// delete_facet(facet_descriptor f, MutableFacetHDSConcept_archetype& hds);
 // };
 //..
 
 #ifndef BOOST_HDSTL_MUTABLE_FACET_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_FACET_HDS_CONCEPT_ARCHETYPE_HPP
 
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/facet_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
 #include <boost/concept_archetype.hpp>
 
 namespace boost {
@@ -44,8 +57,31 @@
 
 class MutableFacetHDSConcept_archetype; // forward declaration
 
-class MutableFacetHDSConcept_archetype : public HDSConcept_archetype,
- public FacetHDSConcept_archetype {
+template<>
+struct hds_traits<MutableFacetHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableFacetHDSConcept_archetype' provides the 'facet_descriptor' type.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'MutableFacetHDSConcept' archetype.
+
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > facet_descriptor;
+ // Facet descriptor type for the 'MutableFacetHDSConcept' archetype.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = true};
+};
+
+class MutableFacetHDSConcept_archetype
+ : public MutableHDSConcept_archetype,
+ public FacetHDSConcept_archetype {
     // This archetype class for the 'MutableFacetHDSConcept' class can be used
     // wherever a template parameter of a class or of a function template is
     // required to be a model of the 'MutableFacetHDS' concept, in order to
@@ -53,35 +89,29 @@
     // than are stated in the 'MutableFacetHDS' concept.
 
     // PRIVATE TYPES
- typedef typename hds_traits<FacetHDSConcept_archetype
+ typedef hds_traits<MutableFacetHDSConcept_archetype
>::facet_descriptor facet_descriptor;
     
- typedef typename hds_traits<HDSConcept_archetype
+ typedef hds_traits<MutableFacetHDSConcept_archetype
>::halfedge_descriptor halfedge_descriptor;
     
- // NOT IMPLEMENTED
- MutableFacetHDSConcept_archetype();
- MutableFacetHDSConcept_archetype(
- const MutableFacetHDSConcept_archetype&);
     public:
         //MANIPULATORS
         void
- set_facet(MutableFacetHDSConcept_archetype& hds,
- halfedge_descriptor h, facet_descriptor f);
+ set_facet(halfedge_descriptor h, facet_descriptor f,
+ MutableFacetHDSConcept_archetype& hds);
         // sets the source facet descriptor value of 'h' to 'v' for a single
         // halfedge in the 'hds' data structure.
         
- void
- add_facet(MutableFacetHDSConcept_archetype& hds,
- facet_descriptor f);
+ facet_descriptor
+ new_facet(MutableFacetHDSConcept_archetype& hds);
         // adds a new facet 'v' to the 'hds' data structure. By this operation
         // the facet is added but no connections to the halfedges are set. In
         // order to assign vertces to halfedges 'set_facet(hds,h,v)' operation
         // should be used.
 
         void
- remove_facet(MutableFacetHDSConcept_archetype& hds,
- facet_descriptor f);
+ delete_facet(facet_descriptor f, MutableFacetHDSConcept_archetype& hds);
         // removes the facet 'v' from the 'hds' data structure, by iterating
         // in clockwise order around the facet and removing the connections
         // with the halfedges.
@@ -90,23 +120,33 @@
 
 //MANIPULATORS
 
+inline
 void
-MutableFacetHDSConcept_archetype::set_facet(
- MutableFacetHDSConcept_archetype& hds,
- halfedge_descriptor h, facet_descriptor f)
-{}
-
-void
-MutableFacetHDSConcept_archetype::add_facet(
- MutableFacetHDSConcept_archetype& hds,
- facet_descriptor f)
-{}
+set_facet(hds_traits<MutableFacetHDSConcept_archetype>::halfedge_descriptor h,
+ hds_traits<MutableFacetHDSConcept_archetype>::facet_descriptor f,
+ MutableFacetHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)f; // eliminate unused variable warning
+}
+
+inline
+hds_traits<MutableFacetHDSConcept_archetype>::facet_descriptor
+new_facet(MutableFacetHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<MutableFacetHDSConcept_archetype>::facet_descriptor();
+}
 
+inline
 void
-MutableFacetHDSConcept_archetype::remove_facet(
- MutableFacetHDSConcept_archetype& hds,
- facet_descriptor f)
-{}
+delete_facet(hds_traits<MutableFacetHDSConcept_archetype>::facet_descriptor f,
+ MutableFacetHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)f; // eliminate unused variable warning
+}
 
 } // end namespace hdstl
 } // end namespace boost

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_facet_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,41 @@
+//mutable_facet_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_facet_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_facet_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_facet_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableFacetHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableFacetHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableFacetHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_forward_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_forward_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -13,6 +13,18 @@
 ///---------------
 //..
 // template <typename ForwardCategory>
+// struct hds_traits<MutableForwardHDSConcept_archetype<ForwardCategory> > {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::convertible_to_archetype<forward_traversal_tag>
+// traversal_category;
+// typedef ForwardCategory forward_category;
+// enum {supports_vertices = false};
+// enum {supports_facets = false};
+// };
+// template <typename ForwardCategory>
 // class MutableForwardHDSConcept_archetype
 // : public ForwardHDSConcept_archetype<ForwardCategory>,
 // public MutableHDSConcept_archetype {
@@ -21,26 +33,26 @@
 // typedef typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory>
 // >::traversal_category traversal_category;
 // typedef ForwardCategory forward_category;
-// MutableForwardHDSConcept_archetype();
-// MutableForwardHDSConcept_archetype(
-// const MutableForwardHDSConcept_archetype&);
 // public:
 // void
-// set_next_in_facet(MutableForwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_next_in_facet(halfedge_descriptor h, halfedge_descriptor g,
+// MutableForwardHDSConcept_archetype& hds);
 // void
-// set_next_at_source(MutableForwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_next_at_source(halfedge_descriptor h, halfedge_descriptor g,
+// MutableForwardHDSConcept_archetype& hds);
 // void
-// set_next_at_target(MutableForwardHDSConcept_archetype& hds,
-// halfedge_descriptor h, halfedge_descriptor g);
+// set_next_at_target(halfedge_descriptor h, halfedge_descriptor g,
+// MutableForwardHDSConcept_archetype& hds);
 // };
 //..
 
 #ifndef BOOST_HDSTL_MUTABLE_FORWARD_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_FORWARD_HDS_CONCEPT_ARCHETYPE_HPP
 
-#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+#include <boost/hdstl/hds_archetypes/forward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -49,9 +61,38 @@
 class MutableForwardHDSConcept_archetype; // forward declaration
 
 template <typename ForwardCategory>
+struct hds_traits<MutableForwardHDSConcept_archetype<ForwardCategory> > {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableForwardHDSConcept_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 'MutableForwardHDSConcept'
+ // archetype.
+
+ typedef boost::convertible_to_archetype<forward_traversal_tag>
+ traversal_category;
+ // This type, convertible to 'forward_traversal_tag', indicates that
+ // the 'MutableForwardHDSConcept' archetype is a model of
+ // 'MutableForwardHDSConcept'.
+
+ 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.
+
+ enum {supports_vertices = false};
+ enum {supports_facets = false};
+};
+
+template <typename ForwardCategory>
 class MutableForwardHDSConcept_archetype
-: public ForwardHDSConcept_archetype<ForwardCategory>,
- public MutableHDSConcept_archetype {
+: virtual public ForwardHDSConcept_archetype<ForwardCategory>,
+ virtual public MutableHDSConcept_archetype {
     // This class provides an exact implementation (no more, no less) of the
     // 'MutableForwardHDS' concept. It can be used to instantiate class and
     // function templates that require their template arguments to be a model
@@ -59,12 +100,14 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<HDSConcept_archetype
- >::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor
+ halfedge_descriptor;
         //Halfedge descriptor type from 'HDSConcept'
 
- typedef typename hds_traits<ForwardHDSConcept_archetype<ForwardCategory>
- >::traversal_category traversal_category;
+ typedef typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::traversal_category
+ traversal_category;
         //traversal category type from from 'ForwardHDSConcept',
         //has to be convertible to 'forward_traversal_tag'.
     
@@ -73,53 +116,69 @@
         // 'next_at_source_tag', or 'next_at_target_tag', indicates which is
         // the primary accessor(s) for which the 'set_...' methods are defined.
                                
- // NOT IMPLEMENTED
- MutableForwardHDSConcept_archetype();
- MutableForwardHDSConcept_archetype(
- const MutableForwardHDSConcept_archetype&);
-
   public:
     // MANIPULATORS
     void
- set_next_in_facet(MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_next_in_facet(halfedge_descriptor h, halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds);
         // set 'g' as the halfedge following 'h' in the (counter-clockwise)
         // facet cycle of 'h' in 'hds'.
 
     void
- set_next_at_source(MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_next_at_source(halfedge_descriptor h, halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds);
         // set 'g' as the halfedge following 'h' in the (clockwise) vertex
         // cycle of the source of 'h' in 'hds'.
 
     void
- set_next_at_target(MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g);
+ set_next_at_target(halfedge_descriptor h, halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds);
         // set 'g' as the halfedge following 'h' in the (clockwise) vertex
         // cycle of the target of 'h' in 'hds'.
 };
 
 // MANIPULATORS
 template <typename ForwardCategory>
+inline
 void
-MutableForwardHDSConcept_archetype<ForwardCategory>::set_next_in_facet(
- MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_next_in_facet(typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 template <typename ForwardCategory>
+inline
 void
-MutableForwardHDSConcept_archetype<ForwardCategory>::set_next_at_source(
- MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_next_at_source(typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 template <typename ForwardCategory>
+inline
 void
-MutableForwardHDSConcept_archetype<ForwardCategory>::set_next_at_target(
- MutableForwardHDSConcept_archetype& hds,
- halfedge_descriptor h, halfedge_descriptor g)
-{}
+set_next_at_target(typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor h,
+ typename hds_traits<MutableForwardHDSConcept_archetype<
+ ForwardCategory> >::halfedge_descriptor g,
+ MutableForwardHDSConcept_archetype<ForwardCategory>& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)g; // eliminate unused variable warning
+}
 
 } // end namespace hdstl
 } // end namespace boost

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_forward_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,48 @@
+//mutable_forward_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_forward_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_forward_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_forward_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableForwardHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableForwardHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableForwardHDSConcept_archetype<
+ boost::hdstl::next_in_facet_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableForwardHDSConcept_archetype<
+ boost::hdstl::next_at_source_tag> >() ));
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableForwardHDSConcept_archetype<
+ boost::hdstl::next_at_target_tag> >() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -12,22 +12,29 @@
 ///Archetype class
 ///---------------
 //..
+// template<>
+// struct hds_traits<MutableHDSConcept_archetype> {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// enum { supports_facets = false };
+// enum { supports_vertices = false };
+// };
 // class MutableHDSConcept_archetype : public HDSConcept_archetype {
-// typedef typename hds_traits<HDSConcept_archetype
+// typedef hds_traits<MutableHDSConcept_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&);
+// halfedge_descriptor& new_edge(MutableHDSConcept_archetype&);
+// void delete_edge(halfedge_descriptor h, MutableHDSConcept_archetype&);
 // };
 //..
 
 #ifndef BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
 
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
 #include <boost/concept_archetype.hpp>
 
 namespace boost {
@@ -35,7 +42,24 @@
 
 class MutableHDSConcept_archetype; // forward declaration
 
-class MutableHDSConcept_archetype : public HDSConcept_archetype {
+template<>
+struct hds_traits<MutableHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableHDSConcept_archetype' provides the 'halfedge_descriptor' type.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'MutableHDSConcept' archetype.
+
+ enum { supports_facets = false };
+ enum { supports_vertices = false };
+
+};
+
+class MutableHDSConcept_archetype : virtual 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
@@ -43,42 +67,32 @@
     // are stated in the 'MutableHDS' concept.
 
     // PRIVATE TYPES
- typedef typename hds_traits<HDSConcept_archetype
+ typedef hds_traits<MutableHDSConcept_archetype
>::halfedge_descriptor halfedge_descriptor;
 
   public:
     // MANIPULATORS
- 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&);
+ halfedge_descriptor& new_edge(MutableHDSConcept_archetype&);
        // add two halfedges to the data structure.
     
- void delete_edge(MutableHDSConcept_archetype&,
- halfedge_descriptor&, halfedge_descriptor&);
+ void delete_edge(halfedge_descriptor h, MutableHDSConcept_archetype&);
       // 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
-MutableHDSConcept_archetype::new_edge(MutableHDSConcept_archetype&,
- halfedge_descriptor&, halfedge_descriptor&)
+inline
+hds_traits<MutableHDSConcept_archetype>::halfedge_descriptor
+new_edge(MutableHDSConcept_archetype&)
 {
- return halfedge_descriptor();
+ return hds_traits<MutableHDSConcept_archetype>::halfedge_descriptor();
 }
 
+inline
 void
-MutableHDSConcept_archetype::delete_edge(MutableHDSConcept_archetype&,
- halfedge_descriptor&, halfedge_descriptor&)
-{}
+delete_edge(hds_traits<MutableHDSConcept_archetype>::halfedge_descriptor&,
+ MutableHDSConcept_archetype&)
+{
+}
 
 } // end namespace hdstl
 } // end namespace boost

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//mutable_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::MutableHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// mutable_vertex_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -37,6 +37,9 @@
 #ifndef BOOST_HDSTL_MUTABLE_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_MUTABLE_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
 
+#include <boost/hdstl/hds_archetypes/mutable_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_archetypes/vertex_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
 #include <boost/concept_archetype.hpp>
 
 namespace boost {
@@ -44,7 +47,29 @@
 
 class MutableVertexHDSConcept_archetype; // forward declaration
 
-class MutableVertexHDSConcept_archetype : public HDSConcept_archetype,
+template<>
+struct hds_traits<MutableVertexHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'MutableVertexHDSConcept_archetype' provides the 'vertex_descriptor'
+ // type.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'MutableVertexHDSConcept' archetype.
+
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > vertex_descriptor;
+ // Vertex descriptor type for the 'MutableVertexHDSConcept' archetype.
+
+ enum { supports_vertices = true };
+ enum { supports_facets = false };
+};
+class MutableVertexHDSConcept_archetype : public MutableHDSConcept_archetype,
                                           public VertexHDSConcept_archetype {
     // This archetype class for the 'MutableVertexHDSConcept' class can be used
     // wherever a template parameter of a class or of a function template is
@@ -53,35 +78,30 @@
     // than are stated in the 'MutableVertexHDS' concept.
 
     // PRIVATE TYPES
- typedef typename hds_traits<VertexHDSConcept_archetype
+ typedef hds_traits<MutableVertexHDSConcept_archetype
>::vertex_descriptor vertex_descriptor;
     
- typedef typename hds_traits<HDSConcept_archetype
+ typedef hds_traits<MutableVertexHDSConcept_archetype
>::halfedge_descriptor halfedge_descriptor;
     
- // NOT IMPLEMENTED
- MutableVertexHDSConcept_archetype();
- MutableVertexHDSConcept_archetype(
- const MutableVertexHDSConcept_archetype&);
     public:
         //MANIPULATORS
         void
- set_vertex(MutableVertexHDSConcept_archetype& hds,
- halfedge_descriptor h, vertex_descriptor v);
+ set_vertex(halfedge_descriptor h, vertex_descriptor v,
+ MutableVertexHDSConcept_archetype& hds);
         // sets the source vertex descriptor value of 'h' to 'v' for a single
         // halfedge in the 'hds' data structure.
         
- void
- add_vertex(MutableVertexHDSConcept_archetype& hds,
- vertex_descriptor v);
+ vertex_descriptor
+ new_vertex(MutableVertexHDSConcept_archetype& hds);
         // adds a new vertex 'v' to the 'hds' data structure. By this operation
         // the vertex is added but no connections to the halfedges are set. In
         // order to assign vertces to halfedges 'set_vertex(hds,h,v)' operation
         // should be used.
 
         void
- remove_vertex(MutableVertexHDSConcept_archetype& hds,
- vertex_descriptor v);
+ delete_vertex(vertex_descriptor v,
+ MutableVertexHDSConcept_archetype& hds);
         // removes the vertex 'v' from the 'hds' data structure, by iterating
         // in clockwise order around the vertex and removing the connections
         // with the halfedges.
@@ -89,24 +109,34 @@
 };
 
 //MANIPULATORS
-
-void
-MutableVertexHDSConcept_archetype::set_vertex(
- MutableVertexHDSConcept_archetype& hds,
- halfedge_descriptor h, vertex_descriptor v)
-{}
-
+inline
 void
-MutableVertexHDSConcept_archetype::add_vertex(
- MutableVertexHDSConcept_archetype& hds,
- vertex_descriptor v)
-{}
+set_vertex(hds_traits<MutableVertexHDSConcept_archetype>::halfedge_descriptor h,
+ hds_traits<MutableVertexHDSConcept_archetype>::vertex_descriptor v,
+ MutableVertexHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)h; // eliminate unused variable warning
+ (void)v; // eliminate unused variable warning
+}
+
+inline
+hds_traits<MutableVertexHDSConcept_archetype>::vertex_descriptor
+new_vertex(MutableVertexHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<MutableVertexHDSConcept_archetype>::vertex_descriptor();
+}
 
+inline
 void
-MutableVertexHDSConcept_archetype::remove_vertex(
- MutableVertexHDSConcept_archetype& hds,
- vertex_descriptor v)
-{}
+delete_vertex(hds_traits<MutableVertexHDSConcept_archetype>
+ ::vertex_descriptor v,
+ MutableVertexHDSConcept_archetype& hds)
+{
+ (void)hds; // eliminate unused variable warning
+ (void)v; // eliminate unused variable warning
+}
 
 } // end namespace hdstl
 } // end namespace boost

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_vertex_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,41 @@
+//mutable_vertex_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'mutable_vertex_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/mutable_vertex_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/mutable_vertex_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, MutableVertexHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::MutableVertexHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<
+ boost::hdstl::MutableVertexHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// vertex_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/vertex_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -12,23 +12,36 @@
 ///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<> > > > halfedge_descriptor;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
 // boost::assignable_archetype<> > > > vertex_descriptor;
+// enum { supports_facets = false };
+// enum { supports_vertices = true };
+// };
+// class VertexHDSConcept_archetype : virtual public HDSConcept_archetype {
+// typedef hds_traits<VertexHDSConcept_archetype
+// >::vertex_descriptor vertex_descriptor;
+// typedef hds_traits<VertexHDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// public:
+// vertex_descriptor
+// source(halfedge_descriptor, VertexHDSConcept_archetype const& hds) const;
+// vertex_descriptor
+// target(halfedge_descriptor, VertexHDSConcept_archetype const& hds) const;
 // };
 //..
 
 #ifndef BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
 #define BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
 
+#include <boost/hdstl/hds_archetypes/hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
 #include <boost/concept_archetype.hpp>
 
 namespace boost {
@@ -45,11 +58,20 @@
     typedef boost::default_constructible_archetype<
             boost::copy_constructible_archetype<
             boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'HDSConcept' archetype.
+
+ 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.
+
+ enum { supports_facets = false };
+ enum { supports_vertices = true };
 };
 
-class VertexHDSConcept_archetype : public HDSConcept_archetype {
+class VertexHDSConcept_archetype : virtual 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
@@ -57,12 +79,10 @@
     // are stated in the 'VertexHDS' concept.
 
     // PRIVATE TYPES
- typedef typename hds_traits<VertexHDSConcept_archetype
+ typedef hds_traits<VertexHDSConcept_archetype
>::vertex_descriptor vertex_descriptor;
-
- // NOT IMPLEMENTED
- VertexHDSConcept_archetype();
- VertexHDSConcept_archetype(const VertexHDSConcept_archetype&);
+ typedef hds_traits<VertexHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
 
   public:
     // MANIPULATORS
@@ -76,16 +96,22 @@
 };
 
 //MANIPULATORS
-typename hds_traits<VertexHDSConcept_archetype>::vertex_descriptor
-VertexHDSConcept_archetype::source(halfedge_descriptor, VertexHDSConcept_archetype const& hds) const
+inline
+hds_traits<VertexHDSConcept_archetype>::vertex_descriptor
+source(hds_traits<VertexHDSConcept_archetype>::halfedge_descriptor,
+ VertexHDSConcept_archetype const& hds)
 {
- return vertex_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<VertexHDSConcept_archetype>::vertex_descriptor();
 }
 
-typename hds_traits<VertexHDSConcept_archetype>::vertex_descriptor
-VertexHDSConcept_archetype::target(halfedge_descriptor, VertexHDSConcept_archetype const& hds) const
+inline
+hds_traits<VertexHDSConcept_archetype>::vertex_descriptor
+target(hds_traits<VertexHDSConcept_archetype>::halfedge_descriptor,
+ VertexHDSConcept_archetype const& hds)
 {
- return vertex_descriptor();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<VertexHDSConcept_archetype>::vertex_descriptor();
 }
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//vertex_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'vertex_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/vertex_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/vertex_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, VertexHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::VertexHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::VertexHDSConcept_archetype>() ));
+ return 0;
+}

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,4 @@
+// vertex_list_hds_concept_archetype.cpp -*- C++ -*-
+
+#include <boost/hdstl/hds_archetypes/vertex_list_hds_concept_archetype.hpp>
+

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -14,19 +14,27 @@
 //..
 // template <>
 // struct hds_traits<VertexListHDSConcept_archetype> {
-// typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
-// typedef size_type size_type;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > vertex_descriptor;
+// typedef boost::forward_iterator_archetype<vertex_descriptor> vertex_iterator;
+// typedef int size_type;
+// enum { supports_vertices = true };
+// enum { supports_facets = false };
 // };
-// class VertexListHDSConcept_archetype : public HDSConcept_archetype,
-// public VertexHDSConcept_archetype {
-// typedef typename hds_traits<VertexListHDSConcept_archetype
+// class VertexListHDSConcept_archetype : public VertexHDSConcept_archetype {
+// typedef hds_traits<VertexListHDSConcept_archetype
 // >::vertex_iterator vertex_iterator;
-// typedef typename hds_traits<VertexHDSConcept_archetype
+// typedef hds_traits<VertexHDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// typedef hds_traits<VertexHDSConcept_archetype
 // >::vertex_descriptor vertex_descriptor;
-// typedef typename hds_traits<VertexListHDSConcept_archetype
-// >::size_type size_type;
-// VertexListHDSConcept_archetype();
-// VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
+// typedef hds_traits<VertexListHDSConcept_archetype>::size_type size_type;
 // public:
 // vertex_iterator
 // vertices_begin(VertexListHDSConcept_archetype const& hds) const;
@@ -40,7 +48,9 @@
 #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>
+#include <boost/hdstl/hds_archetypes/vertex_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_traits.hpp>
+#include <boost/concept_archetype.hpp>
 
 namespace boost {
 namespace hdstl {
@@ -54,16 +64,29 @@
     // and 'size_type' types.
     
     // TYPES
- typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'VertexListHDSConcept' archetype.
+
+ 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.
+
+ typedef boost::forward_iterator_archetype<vertex_descriptor> vertex_iterator;
         // Vertex iterator type for the 'VertexListHDSConcept' archetype.
 
- typedef size_type size_type;
+ typedef int size_type;
         // Vertex size type for the 'VertexListHDSConcept' archetype.
+
+ enum { supports_vertices = true };
+ enum { supports_facets = false };
 };
 
-
-class VertexListHDSConcept_archetype : public HDSConcept_archetype,
- public VertexHDSConcept_archetype {
+class VertexListHDSConcept_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
@@ -71,20 +94,18 @@
     // requirements.
 
     // PRIVATE TYPES
- typedef typename hds_traits<VertexListHDSConcept_archetype
+ typedef hds_traits<VertexListHDSConcept_archetype
>::vertex_iterator vertex_iterator;
     
- typedef typename hds_traits<VertexHDSConcept_archetype
+ typedef hds_traits<VertexHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+
+ typedef hds_traits<VertexHDSConcept_archetype
>::vertex_descriptor vertex_descriptor;
         //vertex_descriptor from the VertexHDSConcept used here.
 
- typedef typename hds_traits<VertexListHDSConcept_archetype
- >::size_type size_type;
+ typedef hds_traits<VertexListHDSConcept_archetype>::size_type size_type;
     
- // NOT IMPLEMENTED
- VertexListHDSConcept_archetype();
- VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
-
   public:
     // MANIPULATORS
     vertex_iterator
@@ -103,25 +124,28 @@
 };
 
 // MANIPULATORS
-typename hds_traits<VertexListHDSConcept_archetype>::vertex_iterator
-VertexListHDSConcept_archetype<>::vertices_begin(
- VertexListHDSConcept_archetype const& hds) const
+inline
+hds_traits<VertexListHDSConcept_archetype>::vertex_iterator
+vertices_begin(VertexListHDSConcept_archetype const& hds)
 {
- return vertex_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<VertexListHDSConcept_archetype>::vertex_iterator();
 }
 
-typename hds_traits<VertexListHDSConcept_archetype>::vertex_iterator
-VertexListHDSConcept_archetype<>::vertices_end(
- VertexListHDSConcept_archetype const& hds) const
+inline
+hds_traits<VertexListHDSConcept_archetype>::vertex_iterator
+vertices_end(VertexListHDSConcept_archetype const& hds)
 {
- return vertex_iterator();
+ (void)hds; // eliminate unused variable warning
+ return hds_traits<VertexListHDSConcept_archetype>::vertex_iterator();
 }
 
-typename hds_traits<VertexListHDSConcept_archetype>::size_type
-VertexListHDSConcept_archetype<>::num_vertices(
- VertexListHDSConcept_archetype const& hds) const
+inline
+hds_traits<VertexListHDSConcept_archetype>::size_type
+num_vertices(VertexListHDSConcept_archetype const& hds)
 {
- return size_type();
+ (void)hds; // eliminate unused variable warning
+ return 0;
 }
 
 } // end namespace hdstl

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.t.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -0,0 +1,40 @@
+//vertex_list_hds_concept_archetype.t.cpp -*- C++ -*-
+//
+//@OVERVIEW: The component under test is a concept-archetype class. We
+// proceed with the standard test plan for such a class.
+//
+//@TEST_PLAN: Verify (using the Boost.ConceptCheck library macros) that the
+// class 'vertex_list_hds_concept_archetype' satisfies all the concept requirements of the
+// 'HDS' concept.
+
+#include <boost/hdstl/hds_archetypes/vertex_list_hds_concept_archetype.hpp>
+#include <boost/hdstl/hds_concepts/vertex_list_hds_concept.hpp>
+#include <boost/test/minimal.hpp>
+#include <boost/concept_check.hpp>
+
+// ===========================================================================
+// BOOST TEST APPARATUS
+// ===========================================================================
+
+template <class HDS>
+struct class_concept_requirements
+{
+ BOOST_CLASS_REQUIRE(HDS, boost::hdstl::concepts, VertexListHDSConcept);
+};
+
+template <class HDS>
+bool concept_requirements()
+{
+ using namespace boost;
+ function_requires<hdstl::concepts::VertexListHDSConcept<HDS> >();
+ class_concept_requirements<HDS>(); // force instantiation
+ BOOST_CHECK(true == hdstl::hds_traits<HDS>::supports_vertices);
+ BOOST_CHECK(false == hdstl::hds_traits<HDS>::supports_facets);
+ return true;
+}
+
+int test_main(int, char **)
+{
+ BOOST_CHECK(( concept_requirements<boost::hdstl::VertexListHDSConcept_archetype>() ));
+ return 0;
+}

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.t.cpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.t.cpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -33,6 +33,7 @@
     opposite(facet_hds_archetype::halfedge_descriptor h,
                               const facet_hds_archetype&)
     {
+ (void)h; // eliminate unused variable warning
         return h;
     }
     
@@ -40,6 +41,7 @@
     facet(facet_hds_archetype::halfedge_descriptor h,
                            const facet_hds_archetype&)
     {
+ (void)h; // eliminate unused variable warning
         return facet_hds_archetype::facet_descriptor();
     }
 

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-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -191,7 +191,7 @@
         void const_constraints(HDS const& hds)
             // Check that the non-modifiable 'HDS' template parameters
             // satisfies all the constraints of 'ForwardHDSConcept'.
- {
+ {
             h = next_in_facet(h, hds);
             h = next_at_source(h, hds);
             h = next_at_target(h, hds);

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.t.cpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.t.cpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -72,8 +72,6 @@
     {
         typedef hdstl1::halfedge_list_hds_archetype::halfedge_descriptor
                 halfedge_descriptor;
- typedef hdstl1::halfedge_list_hds_archetype::halfedge_descriptor
- halfedge_descriptor;
         typedef hdstl1::halfedge_list_hds_archetype::halfedge_iterator
                 halfedge_iterator;
         typedef hdstl1::halfedge_list_hds_archetype::size_type size_type;

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.t.cpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.t.cpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.t.cpp 2007-07-01 01:29:17 EDT (Sun, 01 Jul 2007)
@@ -40,6 +40,7 @@
     source(vertex_hds_archetype::halfedge_descriptor h,
              const vertex_hds_archetype&)
     {
+ (void)h; // eliminate unused variable warning
         return vertex_hds_archetype::vertex_descriptor();
     }
 
@@ -47,6 +48,7 @@
     target(vertex_hds_archetype::halfedge_descriptor h,
              const vertex_hds_archetype&)
     {
+ (void)h; // eliminate unused variable warning
         return vertex_hds_archetype::vertex_descriptor();
     }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk