Boost logo

Boost-Commit :

From: huseyinakcan_at_[hidden]
Date: 2007-06-14 19:43:43


Author: huseyinakcan
Date: 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
New Revision: 7048
URL: http://svn.boost.org/trac/boost/changeset/7048

Log:
new archetypes.
archetypes for mutables are coming.

Added:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp
Text files modified:
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp | 4 ++--
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp | 4 ++--
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp | 20 ++++++++------------
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp | 4 ++--
   sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp | 4 ++--
   5 files changed, 16 insertions(+), 20 deletions(-)

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/backward_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,145 @@
+// backward_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'BackwardHDS' concept archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'BackwardHDSConcept' class. Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'BackwardHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'BackwardHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// template <typename BackwardCategory>
+// struct hds_traits<BackwardHDSConcept_archetype<BackwardCategory> > {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::convertible_to_archetype<backward_traversal_tag>
+// traversal_category;
+// typedef BackwardCategory backward_category;
+// };
+// template <typename BackwardCategory>
+// class BackwardHDSConcept_archetype : public HDSConcept_archetype {
+// typedef typename hds_traits<BackwardHDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// BackwardHDSConcept_archetype();
+// BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
+// public:
+// halfedge_descriptor
+// prev_in_facet(BackwardHDSConcept_archetype const& hds,
+// halfedge_descriptor h) const;
+// halfedge_descriptor
+// prev_at_source(BackwardHDSConcept_archetype const& hds,
+// halfedge_descriptor h) const;
+// halfedge_descriptor
+// prev_at_target(BackwardHDSConcept_archetype const& hds,
+// halfedge_descriptor h) const;
+// };
+//..
+
+#ifndef BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_BACKWARD_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+template <typename BackwardCategory>
+class BackwardHDSConcept_archetype; // forward declaration
+
+template <typename BackwardCategory>
+struct hds_traits<BackwardHDSConcept_archetype<BackwardCategory> > {
+ // This template specialization of 'hds_traits' for the
+ // 'BackwardHDSConcept_archetype' provides the 'halfedge_descriptor' and
+ // 'traversal_category' types.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'BackwardHDSConcept' archetype.
+
+ typedef boost::convertible_to_archetype<backward_traversal_tag>
+ traversal_category;
+ // This type, convertible to 'backward_traversal_tag', indicates that
+ // the 'BackwardHDSConcept' archetype is a model of 'BackwardHDSConcept'.
+
+ typedef BackwardCategory backward_category;
+ // This type, convertible to one or more of 'prev_in_facet_tag',
+ // 'prev_at_source_tag', or 'prev_at_target_tag', indicates which is
+ // the primary accessor(s) for which the 'set_...' methods are defined.
+};
+
+
+template <typename BackwardCategory>
+class BackwardHDSConcept_archetype : public HDSConcept_archetype {
+ // This class provides an exact implementation (no more, no less) of the
+ // 'BackwardHDS' concept. It can be used to instantiate class and function
+ // templates that require their template arguments to be a model of this
+ // concept in order to verify that there are no extra syntactic
+ // requirements.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<BackwardHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+
+ // NOT IMPLEMENTED
+ BackwardHDSConcept_archetype();
+ BackwardHDSConcept_archetype(const BackwardHDSConcept_archetype&);
+
+ public:
+ // MANIPULATORS
+ halfedge_descriptor
+ prev_in_facet(BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h) const;
+ // Return the halfedge preceding 'h' in the (counter-clockwise) facet
+ // cycle of 'h' in 'hds'.
+
+ halfedge_descriptor
+ prev_at_source(BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h) const;
+ // Returns the halfedge preceding 'h' in the (clockwise) vertex
+ // cycle of the source of 'h' in 'hds'.
+
+ halfedge_descriptor
+ prev_at_target(BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h) const;
+ // Returns the halfedge preceding 'h' in the (clockwise) vertex
+ // cycle of the target of 'h' in 'hds'.
+};
+
+// MANIPULATORS
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_in_facet(
+ BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h)
+{
+ return halfedge_descriptor();
+}
+
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_at_source(
+ BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h)
+{
+ return halfedge_descriptor();
+}
+
+template <typename BackwardCategory>
+typename hds_traits<BackwardHDSConcept_archetype>::halfedge_descriptor
+BackwardHDSConcept_archetype<BackwardCategory>::prev_at_target(
+ BackwardHDSConcept_archetype const& hds,
+ halfedge_descriptor h)
+{
+ return halfedge_descriptor();
+}
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/bidirectional_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,101 @@
+// bidirectional_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'BidirectionalHDS' concept archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'BidirectionalHDSConcept' class. Namely, this class can be used
+// wherever a template parameter of a class or of a function template is
+// required to be a model of the 'BidirectionalHDS' concept, in order to ensure
+// that no further requirements are placed on the template parameter than are
+// stated in the 'BidirectionalHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// template <typename ForwardCategory, typename BackwardCategory>
+// struct hds_traits<BidirectionalHDSConcept_archetype<ForwardCategory,
+// BackwardCategory> > {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > halfedge_descriptor;
+// typedef boost::convertible_to_archetype<bidirectional_traversal_tag>
+// traversal_category;
+// typedef ForwardCategory forward_category;
+// typedef BackwardCategory backward_category;
+// };
+// template <typename ForwardCategory, typename BackwardCategory>
+// class BidirectionalHDSConcept_archetype
+// : public ForwardHDSConcept_archetype<ForwardCategory>,
+// BackwardHDSConcept_archetype<BackwardCategory> {
+// typedef typename hds_traits<BidirectionalHDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// BidirectionalHDSConcept_archetype();
+// BidirectionalHDSConcept_archetype(
+// const BidirectionalHDSConcept_archetype&);
+// };
+//..
+
+#ifndef BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_BIDIRECTIONAL_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+template <typename ForwardCategory, typename BackwardCategory>
+class BidirectionalHDSConcept_archetype; // forward declaration
+
+template <typename ForwardCategory, typename BackwardCategory>
+struct hds_traits<BidirectionalHDSConcept_archetype<ForwardCategory,
+ BackwardCategory> > {
+ // This template specialization of 'hds_traits' for the
+ // 'BidirectionalHDSConcept_archetype' provides the 'halfedge_descriptor'
+ // and 'traversal_category' types.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > halfedge_descriptor;
+ // Halfedge descriptor type for the 'BidirectionalHDSConcept' archetype.
+
+ typedef boost::convertible_to_archetype<bidirectional_traversal_tag>
+ traversal_category;
+ // This type, convertible to 'bidirectional_traversal_tag', indicates
+ // that the 'BidirectionalHDSConcept' archetype is a model of
+ // 'BidirectionalHDSConcept'.
+
+ typedef ForwardCategory forward_category;
+ // This type, convertible to one or more of 'next_in_facet_tag',
+ // 'next_at_source_tag', or 'next_at_target_tag', indicates which is
+ // the primary accessor(s) for which the 'set_...' methods are defined.
+
+ typedef BackwardCategory backward_category;
+ // This type, convertible to one or more of 'prev_in_facet_tag',
+ // 'prev_at_source_tag', or 'prev_at_target_tag', indicates which is
+ // the primary accessor(s) for which the 'set_...' methods are defined.
+};
+
+
+template <typename ForwardCategory, typename BackwardCategory>
+class BidirectionalHDSConcept_archetype
+: public ForwardHDSConcept_archetype<ForwardCategory>,
+ BackwardHDSConcept_archetype<BackwardCategory> {
+ // This class provides an exact implementation (no more, no less) of the
+ // 'BidirectionalHDS' concept. It can be used to instantiate class and
+ // function templates that require their template arguments to be a model
+ // of this concept in order to verify that there are no extra syntactic
+ // requirements.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<BidirectionalHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+
+ // NOT IMPLEMENTED
+ BidirectionalHDSConcept_archetype();
+ BidirectionalHDSConcept_archetype(const BidirectionalHDSConcept_archetype&);
+};
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,61 @@
+// facet_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'FacetHDSConcept' archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'FacetHDSConcept' class. Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'FacetHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'FacetHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// class FacetHDSConcept_archetype : public HDSConcept_archetype {
+// typedef typename hds_traits<FacetHDSConcept_archetype
+// >::facet_descriptor facet_descriptor;
+// };
+//
+// template<>
+// struct hds_traits<FacetHDSConcept_archetype> {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > facet_descriptor;
+// };
+//..
+
+#ifndef BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_FACET_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class FacetHDSConcept_archetype; // forward declaration
+
+template<>
+struct hds_traits<FacetHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'FacetHDSConcept_archetype' provides the 'facet_descriptor' type.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > facet_descriptor;
+ // Facet descriptor type for the 'FacetHDSConcept' archetype.
+};
+
+class FacetHDSConcept_archetype : public HDSConcept_archetype {
+ // This archetype class for the 'FacetHDSConcept' class can be used
+ // wherever a template parameter of a class or of a function template is
+ // required to be a model of the 'FacetHDS' concept, in order to ensure
+ // that no further requirements are placed on the template parameter than
+ // are stated in the 'FacetHDS' concept.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<FacetHDSConcept_archetype
+ >::facet_descriptor facet_descriptor;
+};
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/facet_list_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,115 @@
+// facet_list_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'FacetListHDS' concept archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'FacetListHDSConcept' class. Namely, this class can be used wherever
+// a template parameter of a class or of a function template is required to be
+// a model of the 'FacetListHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'FacetListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// template <>
+// struct hds_traits<FacetListHDSConcept_archetype> {
+// typedef hdstl_detail::MultiPassInputIteratorConcept<> facet_iterator;
+// typedef facet_size_type facet_size_type;
+// };
+// class FacetListHDSConcept_archetype : public HDSConcept_archetype,
+// public FacetHDSConcept_archetype {
+// typedef typename hds_traits<FacetListHDSConcept_archetype
+// >::facet_iterator facet_iterator;
+// typedef typename hds_traits<FacetHDSConcept_archetype
+// >::facet_descriptor facet_descriptor;
+// typedef typename hds_traits<FacetListHDSConcept_archetype
+// >::facet_size_type facet_size_type;
+// FacetListHDSConcept_archetype();
+// FacetListHDSConcept_archetype(const FacetListHDSConcept_archetype&);
+// public:
+// std::pair<facet_iterator,facet_iterator>
+// facets(FacetListHDSConcept_archetype const& hds) const;
+// facet_size_type
+// num_facets(FacetListHDSConcept_archetype const& hds) const;
+// };
+//..
+
+#ifndef BOOST_HDSTL_FACET_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_FACET_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class FacetListHDSConcept_archetype; // forward declaration
+
+template <>
+struct hds_traits<FacetListHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'FacetListHDSConcept_archetype' provides the 'facet_iterator'
+ // and 'facet_size_type' types.
+
+ // TYPES
+ typedef hdstl_detail::MultiPassInputIteratorConcept<> facet_iterator;
+ // Facet iterator type for the 'FacetListHDSConcept' archetype.
+
+ typedef facet_size_type facet_size_type;
+ // Facet size type for the 'FacetListHDSConcept' archetype.
+};
+
+
+class FacetListHDSConcept_archetype : public HDSConcept_archetype,
+ public FacetHDSConcept_archetype {
+ // This class provides an exact implementation (no more, no less) of the
+ // 'FacetListHDS' concept. It can be used to instantiate class and function
+ // templates that require their template arguments to be a model of this
+ // concept in order to verify that there are no extra syntactic
+ // requirements.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<FacetListHDSConcept_archetype
+ >::facet_iterator facet_iterator;
+
+ typedef typename hds_traits<FacetHDSConcept_archetype
+ >::facet_descriptor facet_descriptor;
+ //facet_descriptor from the FacetHDSConcept used here.
+
+ typedef typename hds_traits<FacetListHDSConcept_archetype
+ >::facet_size_type facet_size_type;
+
+ // NOT IMPLEMENTED
+ FacetListHDSConcept_archetype();
+ FacetListHDSConcept_archetype(const FacetListHDSConcept_archetype&);
+
+ public:
+ // MANIPULATORS
+ std::pair<facet_iterator,facet_iterator>
+ facets(FacetListHDSConcept_archetype const& hds) const;
+ // Returns a 'facet_iterator' pair, consistent with the STL style
+ // iterator ranges, which means all the facets can be accessed by
+ // increasing the first part of the pair until the second part is
+ // reached.
+
+ facet_size_type
+ num_facets(FacetListHDSConcept_archetype const& hds) const;
+ // Returns the number of facets in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<facet_iterator,facet_iterator>
+FacetListHDSConcept_archetype<>::facets(
+ FacetListHDSConcept_archetype const& hds) const
+{
+ return std::pair<facet_iterator,facet_iterator>();
+}
+
+typename hds_traits<FacetListHDSConcept_archetype>::facet_size_type
+FacetListHDSConcept_archetype<>::num_facets(
+ FacetListHDSConcept_archetype const& hds) const
+{
+ return facet_size_type();
+}
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/halfedge_list_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,112 @@
+// halfedge_list_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'HalfedgeListHDS' concept archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'HalfedgeListHDSConcept' class. Namely, this class can be used
+// wherever a template parameter of a class or of a function template is
+// required to be a model of the 'HalfedgeListHDS' concept, in order to ensure
+// that no further requirements are placed on the template parameter than are
+// stated in the 'HalfedgeListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// template <>
+// struct hds_traits<HalfedgeListHDSConcept_archetype> {
+// typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
+// typedef halfedge_size_type halfedge_size_type;
+// };
+// class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
+// typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+// >::halfedge_iterator halfedge_iterator;
+// typedef typename hds_traits<HalfedgeHDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+// >::halfedge_size_type halfedge_size_type;
+// HalfedgeListHDSConcept_archetype();
+// HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
+// public:
+// std::pair<halfedge_iterator,halfedge_iterator>
+// halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+// halfedge_size_type
+// num_halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+// };
+//..
+
+#ifndef BOOST_HDSTL_HALFEDGE_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_HALFEDGE_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class HalfedgeListHDSConcept_archetype; // forward declaration
+
+template <>
+struct hds_traits<HalfedgeListHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'HalfedgeListHDSConcept_archetype' provides the 'halfedge_iterator'
+ // and 'halfedge_size_type' types.
+
+ // TYPES
+ typedef hdstl_detail::MultiPassInputIteratorConcept<> halfedge_iterator;
+ // Halfedge iterator type for the 'HalfedgeListHDSConcept' archetype.
+
+ typedef halfedge_size_type halfedge_size_type;
+ // Halfedge size type for the 'HalfedgeListHDSConcept' archetype.
+};
+
+class HalfedgeListHDSConcept_archetype : public HDSConcept_archetype {
+ // This class provides an exact implementation (no more, no less) of the
+ // 'HalfedgeListHDS' concept. It can be used to instantiate class and
+ // function templates that require their template arguments to be a model
+ // of this concept in order to verify that there are no extra syntactic
+ // requirements.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+ >::halfedge_iterator halfedge_iterator;
+
+ typedef typename hds_traits<HalfedgeHDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+ //halfedge_descriptor from the HalfedgeHDSConcept used here.
+
+ typedef typename hds_traits<HalfedgeListHDSConcept_archetype
+ >::halfedge_size_type halfedge_size_type;
+
+ // NOT IMPLEMENTED
+ HalfedgeListHDSConcept_archetype();
+ HalfedgeListHDSConcept_archetype(const HalfedgeListHDSConcept_archetype&);
+
+ public:
+ // MANIPULATORS
+ std::pair<halfedge_iterator,halfedge_iterator>
+ halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+ // Returns a 'halfedge_iterator' pair, consistent with the STL style
+ // iterator ranges, which means all the halfedges can be accessed by
+ // increasing the first part of the pair until the second part is
+ // reached.
+
+ halfedge_size_type
+ num_halfedges(HalfedgeListHDSConcept_archetype const& hds) const;
+ // Returns the number of halfedges in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<halfedge_iterator,halfedge_iterator>
+HalfedgeListHDSConcept_archetype<>::halfedges(
+ HalfedgeListHDSConcept_archetype const& hds) const
+{
+ return std::pair<halfedge_iterator,halfedge_iterator>();
+}
+
+typename hds_traits<HalfedgeListHDSConcept_archetype>::halfedge_size_type
+HalfedgeListHDSConcept_archetype<>::num_halfedges(
+ HalfedgeListHDSConcept_archetype const& hds) const
+{
+ return halfedge_size_type();
+}
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/mutable_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,79 @@
+// mutable_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'MutableHDSConcept' archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'MutableHDSConcept' class. Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'MutableHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'MutableHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// class MutableHDSConcept_archetype : public HDSConcept_archetype {
+// typedef typename hds_traits<HDSConcept_archetype
+// >::halfedge_descriptor halfedge_descriptor;
+// public:
+// void set_opposite(MutableHDSConcept_archetype&, halfedge_descriptor&,
+// halfedge_descriptor&);
+// halfedge_descriptor& new_edge(MutableHDSConcept_archetype&,
+// halfedge_descriptor&, halfedge_descriptor&);
+// void delete_edge(MutableHDSConcept_archetype&, halfedge_descriptor&,
+// halfedge_descriptor&);
+// };
+//..
+
+#ifndef BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_MUTABLE_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class MutableHDSConcept_archetype; // forward declaration
+
+class MutableHDSConcept_archetype : public HDSConcept_archetype {
+ // This archetype class for the 'MutableHDSConcept' class can be used
+ // wherever a template parameter of a class or of a function template is
+ // required to be a model of the 'MutableHDS' concept, in order to ensure
+ // that no further requirements are placed on the template parameter than
+ // are stated in the 'MutableHDS' concept.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<HDSConcept_archetype
+ >::halfedge_descriptor halfedge_descriptor;
+
+ public:
+ void set_opposite(MutableHDSConcept_archetype&, halfedge_descriptor&,
+ halfedge_descriptor&);
+ // Set the second halfedge descriptor as the opposite of the first
+ // halfedge descriptor in 'hds'.
+
+ halfedge_descriptor& new_edge(MutableHDSConcept_archetype&,
+ halfedge_descriptor&, halfedge_descriptor&);
+ // add two halfedges to the data structure.
+
+ void delete_edge(MutableHDSConcept_archetype&, halfedge_descriptor&,
+ halfedge_descriptor&);
+ // delete two halfedges from the data structure.
+};
+
+// MANIPULATORS
+void
+MutableHDSConcept_archetype::set_opposite(MutableHDSConcept_archetype&,
+ halfedge_descriptor&, halfedge_descriptor&)
+{}
+
+typename hds_traits<MutableHDSConcept_archetype>::halfedge_descriptor
+new_edge(MutableHDSConcept_archetype&,
+ halfedge_descriptor&, halfedge_descriptor&)
+{
+ return halfedge_descriptor();
+}
+
+void
+MutableHDSConcept_archetype::delete_edge(MutableHDSConcept_archetype&,
+ halfedge_descriptor&, halfedge_descriptor&)
+{}
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,61 @@
+// vertex_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'VertexHDSConcept' archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'VertexHDSConcept' class. Namely, this class can be used wherever a
+// template parameter of a class or of a function template is required to be a
+// model of the 'VertexHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'VertexHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// class VertexHDSConcept_archetype : public HDSConcept_archetype {
+// typedef typename hds_traits<VertexHDSConcept_archetype
+// >::vertex_descriptor vertex_descriptor;
+// };
+//
+// template<>
+// struct hds_traits<VertexHDSConcept_archetype> {
+// typedef boost::default_constructible_archetype<
+// boost::copy_constructible_archetype<
+// boost::equality_comparable_archetype<
+// boost::assignable_archetype<> > > > vertex_descriptor;
+// };
+//..
+
+#ifndef BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_VERTEX_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/concept_archetype.hpp>
+
+class VertexHDSConcept_archetype; // forward declaration
+
+template<>
+struct hds_traits<VertexHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'VertexHDSConcept_archetype' provides the 'vertex_descriptor' type.
+
+ // TYPES
+ typedef boost::default_constructible_archetype<
+ boost::copy_constructible_archetype<
+ boost::equality_comparable_archetype<
+ boost::assignable_archetype<> > > > vertex_descriptor;
+ // Vertex descriptor type for the 'VertexHDSConcept' archetype.
+};
+
+class VertexHDSConcept_archetype : public HDSConcept_archetype {
+ // This archetype class for the 'VertexHDSConcept' class can be used
+ // wherever a template parameter of a class or of a function template is
+ // required to be a model of the 'VertexHDS' concept, in order to ensure
+ // that no further requirements are placed on the template parameter than
+ // are stated in the 'VertexHDS' concept.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<VertexHDSConcept_archetype
+ >::vertex_descriptor vertex_descriptor;
+};
+
+#endif

Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_archetypes/vertex_list_hds_concept_archetype.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,115 @@
+// vertex_list_hds_concept_archetype.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide a 'VertexListHDS' concept archetype
+//
+//@DESCRIPTION: This file provides an archetype class for compile-time testing
+// of the 'VertexListHDSConcept' class. Namely, this class can be used wherever
+// a template parameter of a class or of a function template is required to be
+// a model of the 'VertexListHDS' concept, in order to ensure that no further
+// requirements are placed on the template parameter than are stated in the
+// 'VertexListHDS' concept.
+//
+///Archetype class
+///---------------
+//..
+// template <>
+// struct hds_traits<VertexListHDSConcept_archetype> {
+// typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
+// typedef vertex_size_type vertex_size_type;
+// };
+// class VertexListHDSConcept_archetype : public HDSConcept_archetype,
+// public VertexHDSConcept_archetype {
+// typedef typename hds_traits<VertexListHDSConcept_archetype
+// >::vertex_iterator vertex_iterator;
+// typedef typename hds_traits<VertexHDSConcept_archetype
+// >::vertex_descriptor vertex_descriptor;
+// typedef typename hds_traits<VertexListHDSConcept_archetype
+// >::vertex_size_type vertex_size_type;
+// VertexListHDSConcept_archetype();
+// VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
+// public:
+// std::pair<vertex_iterator,vertex_iterator>
+// vertices(VertexListHDSConcept_archetype const& hds) const;
+// vertex_size_type
+// num_vertices(VertexListHDSConcept_archetype const& hds) const;
+// };
+//..
+
+#ifndef BOOST_HDSTL_VERTEX_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+#define BOOST_HDSTL_VERTEX_LIST_HDS_CONCEPT_ARCHETYPE_HPP
+
+#include <boost/hds_archetype/hds_concept_archetypes.hpp>
+
+namespace boost {
+namespace hdstl {
+
+class VertexListHDSConcept_archetype; // forward declaration
+
+template <>
+struct hds_traits<VertexListHDSConcept_archetype> {
+ // This template specialization of 'hds_traits' for the
+ // 'VertexListHDSConcept_archetype' provides the 'vertex_iterator'
+ // and 'vertex_size_type' types.
+
+ // TYPES
+ typedef hdstl_detail::MultiPassInputIteratorConcept<> vertex_iterator;
+ // Vertex iterator type for the 'VertexListHDSConcept' archetype.
+
+ typedef vertex_size_type vertex_size_type;
+ // Vertex size type for the 'VertexListHDSConcept' archetype.
+};
+
+
+class VertexListHDSConcept_archetype : public HDSConcept_archetype,
+ public VertexHDSConcept_archetype {
+ // This class provides an exact implementation (no more, no less) of the
+ // 'VertexListHDS' concept. It can be used to instantiate class and
+ // function templates that require their template arguments to be a model
+ // of this concept in order to verify that there are no extra syntactic
+ // requirements.
+
+ // PRIVATE TYPES
+ typedef typename hds_traits<VertexListHDSConcept_archetype
+ >::vertex_iterator vertex_iterator;
+
+ typedef typename hds_traits<VertexHDSConcept_archetype
+ >::vertex_descriptor vertex_descriptor;
+ //vertex_descriptor from the VertexHDSConcept used here.
+
+ typedef typename hds_traits<VertexListHDSConcept_archetype
+ >::vertex_size_type vertex_size_type;
+
+ // NOT IMPLEMENTED
+ VertexListHDSConcept_archetype();
+ VertexListHDSConcept_archetype(const VertexListHDSConcept_archetype&);
+
+ public:
+ // MANIPULATORS
+ std::pair<vertex_iterator,vertex_iterator>
+ vertices(VertexListHDSConcept_archetype const& hds) const;
+ // Returns a 'vertex_iterator' pair, consistent with the STL style
+ // iterator ranges, which means all the vertices can be accessed by
+ // increasing the first part of the pair until the second part is
+ // reached.
+
+ vertex_size_type
+ num_vertices(VertexListHDSConcept_archetype const& hds) const;
+ // Returns the number of vertices in the 'hds' data structure.
+};
+
+// MANIPULATORS
+typename std::pair<vertex_iterator,vertex_iterator>
+VertexListHDSConcept_archetype<>::vertices(
+ VertexListHDSConcept_archetype const& hds) const
+{
+ return std::pair<vertex_iterator,vertex_iterator>();
+}
+
+typename hds_traits<VertexListHDSConcept_archetype>::vertex_size_type
+VertexListHDSConcept_archetype<>::num_vertices(
+ VertexListHDSConcept_archetype const& hds) const
+{
+ return vertex_size_type();
+}
+
+#endif

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -106,8 +106,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_BIDIRECTIONALHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_BIDIRECTIONALHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_BIDIRECTIONAL_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_BIDIRECTIONAL_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -81,8 +81,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_FACETHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_FACETHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_FACET_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_FACET_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -91,11 +91,9 @@
 // {
 // using namespace boost;
 // function_requires<HDSConcept>();
-// function_requires<DefaultConstructibleConcept<facet_descriptor> >();
-// function_requires<CopyConstructibleConcept<facet_descriptor> >();
-// function_requires<EqualityComparableConcept<facet_descriptor> >();
-// function_requires<AssignableConcept<facet_descriptor> >();
-// function_requires<hdstl_detail::MultiPassInputIteratorConcept<facet_iterator> >();
+// function_requires<FacetHDSConcept>();
+// function_requires<hdstl_detail::MultiPassInputIteratorConcept<
+// facet_iterator> >();
 // p = facets(hds);
 // f = *p.first;
 // F = num_facets(hds);
@@ -116,8 +114,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_FACET_LIST_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_FACET_LIST_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 
@@ -155,11 +153,9 @@
        {
            using namespace boost;
            function_requires<HDSConcept>();
- function_requires<DefaultConstructibleConcept<facet_descriptor> >();
- function_requires<CopyConstructibleConcept<facet_descriptor> >();
- function_requires<EqualityComparableConcept<facet_descriptor> >();
- function_requires<AssignableConcept<facet_descriptor> >();
- function_requires<hdstl_detail::MultiPassInputIteratorConcept<facet_iterator> >();
+ function_requires<FacetHDSConcept>();
+ function_requires<hdstl_detail::MultiPassInputIteratorConcept<
+ facet_iterator> >();
            p = facets(hds);
            f = *p.first;
            F = num_facets(hds);

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -110,8 +110,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_MUTABLEHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_MUTABLEHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_MUTABLE_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_MUTABLE_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 

Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp 2007-06-14 19:43:41 EDT (Thu, 14 Jun 2007)
@@ -81,8 +81,8 @@
 // };
 //..
 
-#ifdef BOOST_HDSTL_CONCEPTS_VERTEXHDSCONCEPT_HPP
-#define BOOST_HDSTL_CONCEPTS_VERTEXHDSCONCEPT_HPP 1
+#ifdef BOOST_HDSTL_CONCEPTS_VERTEX_HDS_CONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_VERTEX_HDS_CONCEPT_HPP 1
 
 #include <boost/concepts.h>
 


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