|
Boost-Commit : |
From: huseyinakcan_at_[hidden]
Date: 2007-06-13 16:47:14
Author: huseyinakcan
Date: 2007-06-13 16:47:14 EDT (Wed, 13 Jun 2007)
New Revision: 7034
URL: http://svn.boost.org/trac/boost/changeset/7034
Log:
*_list_hds_concept concept definitions and classes added.
Added:
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp
Text files modified:
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 deletions(-)
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts.hpp 2007-06-13 16:47:14 EDT (Wed, 13 Jun 2007)
@@ -1,18 +1,18 @@
+//hds_concepts.hpp -*- C++ -*-
+//
+//@PURPOSE: Provides concept checking classes for HDS-related concepts.
+//
+///HDS Introduction
+///----------------
+// FILLME
+//
+///HDS Concepts
+///------------
+// FILLME
+
#ifndef HDSTL_HDS_CONCEPTS_HPP
#define HDSTL_HDS_CONCEPTS_HPP
-/**
- * @file hds_concepts.hpp
- *
- * @brief This file provides a number of concept checking classes for
- * HDS-related concepts.
- *
- * @par HDS Introduction
- * FILLME
- *
- * @par HDS Concepts
- * FILLME
- */
#include <hds_concepts/hds_concept.hpp>
#include <hds_concepts/forward_hds_concept.hpp>
#include <hds_concepts/backward_hds_concept.hpp>
@@ -20,4 +20,5 @@
#include <hds_concepts/vertex_hds_concept.hpp>
#include <hds_concepts/facet_hds_concept.hpp>
#include <hds_concepts/mutable_hds_concept.hpp>
+
#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_list_hds_concept.hpp 2007-06-13 16:47:14 EDT (Wed, 13 Jun 2007)
@@ -0,0 +1,191 @@
+//facet_list_hds_concept.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide 'FacetListHDS' concept definition, and concept checking class.
+//
+//@DESCRIPTION: This file provides a single class template that,
+// when used with the following concept-checking utilities:
+//..
+// boost::function_requires<FacetListHDSConcept<HDS> >();
+//..
+// inside a function body, or
+//..
+// BOOST_CLASS_REQUIRE(HDS, boost::hdstl,FacetListHDSConcept);
+//..
+// inside a class body, checks whether the type given as template
+// argument is a model of the HDS concept described on the page
+// [facetlisthds].
+//
+//@CONCEPT: [facetlisthds] Facet List HDS concept
+//
+///Definition
+///----------
+// This concept refines the 'HDSConcept', and specifies additional accessors
+// to handle facets in the 'HDS' data structure.
+//
+///Refinement of:
+///--------------
+// - 'HDSConcept'
+//
+///Notation
+///--------
+// - 'HDS' A type that is a model of FacetListHDSConcept
+// - 'hds' A non-modifiable instance of HDS
+// - 'f' Facet descriptor, of type 'hds_traits<HDS>::facet_descriptor'
+// - 'p' Facet iterator pair, of type
+// 'std::pair<facet_iterator,facet_iterator>'
+// - 'F' Facet size type, of type 'hds_traits<HDS>::facet_size_type'
+//
+///Associated types
+///----------------
+// - 'hds_traits<HDS>::facet_descriptor': must be 'DefaultConstructible',
+// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// - 'hds_traits<HDS>::facet_iterator': must be 'MultiPassInputIterator'.
+// - 'hds_traits<HDS>::facet_size_type': facet size type.
+//
+///Definitions
+///-----------
+// - 'facet_descriptor' is a type that contains information to access
+// the facet. (See the 'HDSConcept' for a full definition.)
+// - 'facet_iterator' is an iterator type for the facets.
+// - 'facet_size_type' defines the size type.
+//
+///Valid Expressions
+///-----------------
+// In addition to the valid expressions of the 'HDS' concept:
+// - 'facets(hds)' must return a value assignable to 'p'.
+// - '*p.first' must return a value assignable to 'f'.
+// - 'num_facets(HDS)' must return a value assignable to 'F'.
+//
+///Expression Semantics
+///--------------------
+// In addition to the valid expression semantics of the 'HDS' concept:
+// - 'facets(hds)' returns a 'facet_iterator' pair 'p', 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.
+// - '*p.first' returns a 'facet_descriptor'.
+// - 'num_facets(HDS)' returns the number of facets in the 'HDS' data
+// structure.
+//
+///Complexity guarantees
+///---------------------
+// - 'facets(hds)' : amortized constant time. (for just getting the
+// 'facet_iterator' pair, accessing the facets takes linear time.)
+// - '*p.first' : amortized constant time.
+// - 'num_facets(HDS)': amortized constant time.
+//
+///Invariants
+///----------
+// 'FacetListHDSConcept' should validate all the invariants for the
+// 'HDSConcept'.
+//
+///Concept-checking class
+///----------------------
+//..
+// template <class HDS>
+// struct FacetListHDSConcept {
+// typedef typename hds_traits<HDS>::facet_iterator facet_iterator;
+// typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor;
+// typedef typename hds_traits<HDS>::facets_size_type facets_size_type;
+// void constraints()
+// {
+// 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> >();
+// p = facets(hds);
+// f = *p.first;
+// F = num_facets(hds);
+// const_constraints(hds);
+// }
+// void const_constraints(HDS const& hds)
+// {
+// p = facets(hds);
+// f = *p.first;
+// F = num_facets(hds);
+// }
+// private:
+// FacetListHDS hds;
+// facet_descriptor f;
+// std::pair<facet_iterator,facet_iterator> p;
+// facet_size_type F;
+
+// };
+//..
+
+#ifdef BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_FACETLISTHDSCONCEPT_HPP 1
+
+#include <boost/concepts.h>
+
+namespace hdstl{
+namespace concepts {
+
+ template <class HDS>
+ struct FacetListHDSConcept {
+ // This class provides a concept checking class for the
+ // 'FacetListHDSConcept', i.e., using the statement
+ //..
+ // boost::function_requires<FacetListHDSConcept<HDS>()
+ //..
+ // inside a function body, or
+ //..
+ // BOOST_CLASS_REQUIRE(HDS, boost::hdstl, FacetListHDSConcept);
+ //..
+ // inside a class definition body, should trigger a compile-time error
+ // if the type HDS does not model the 'FacetListHDSConcept'.
+
+ // TYPES
+ typedef typename hds_traits<HDS>::facet_iterator facet_iterator;
+ typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor;
+ typedef typename hds_traits<HDS>::facets_size_type facets_size_type;
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'FacetListHDS' concept on page
+ // [facetlisthdsconcept].
+
+ //MANIPULATORS
+ void constraints()
+ // Check that the 'HDS' template parameters satisfies all the
+ // constraints of 'FacetListHDSConcept' on page
+ // [facetlisthdsconcept].
+ {
+ 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> >();
+ p = facets(hds);
+ f = *p.first;
+ F = num_facets(hds);
+ const_constraints(hds);
+ }
+
+ // ACCESSORS
+ void const_constraints(HDS const& hds)
+ // Check that the non-modifiable 'HDS' template parameters
+ // satisfies all the constraints of 'FacetListHDSConcept'.
+ {
+ p = facets(hds);
+ f = *p.first;
+ F = num_facets(hds);
+ }
+
+ private:
+ //DATA
+ FacetListHDS hds; // a halfedge data structure object
+ facet_descriptor f; // a facet descriptor
+ std::pair<facet_iterator,facet_iterator> p; // a facet iterator pair
+ facet_size_type F; // facet size type
+
+ };
+
+} // close namespace concepts
+} // close namespace hdstl
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp 2007-06-13 16:47:14 EDT (Wed, 13 Jun 2007)
@@ -0,0 +1,191 @@
+//halfedge_list_hds_concept.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide 'HalfedgeListHDS' concept definition, and concept checking class.
+//
+//@DESCRIPTION: This file provides a single class template that,
+// when used with the following concept-checking utilities:
+//..
+// boost::function_requires<HalfedgeListHDSConcept<HDS> >();
+//..
+// inside a function body, or
+//..
+// BOOST_CLASS_REQUIRE(HDS, boost::hdstl,HalfedgeListHDSConcept);
+//..
+// inside a class body, checks whether the type given as template
+// argument is a model of the HDS concept described on the page
+// [halfedgelisthds].
+//
+//@CONCEPT: [halfedgelisthds] Halfedge List HDS concept
+//
+///Definition
+///----------
+// This concept refines the 'HDSConcept', and specifies additional accessors
+// to handle halfedges in the 'HDS' data structure.
+//
+///Refinement of:
+///--------------
+// - 'HDSConcept'
+//
+///Notation
+///--------
+// - 'HDS' A type that is a model of HalfedgeListHDSConcept
+// - 'hds' A non-modifiable instance of HDS
+// - 'h' Halfedge descriptor, of type 'hds_traits<HDS>::halfedge_descriptor'
+// - 'p' Halfedge iterator pair, of type
+// 'std::pair<halfedge_iterator,halfedge_iterator>'
+// - 'H' Halfedge size type, of type 'hds_traits<HDS>::halfedge_size_type'
+//
+///Associated types
+///----------------
+// - 'hds_traits<HDS>::halfedge_descriptor': must be 'DefaultConstructible',
+// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// - 'hds_traits<HDS>::halfedge_iterator': must be 'MultiPassInputIterator'.
+// - 'hds_traits<HDS>::halfedge_size_type': halfedge size type.
+//
+///Definitions
+///-----------
+// - 'halfedge_descriptor' is a type that contains information to access
+// the halfedge. (See the 'HDSConcept' for a full definition.)
+// - 'halfedge_iterator' is an iterator type for the halfedges.
+// - 'halfedge_size_type' defines the size type.
+//
+///Valid Expressions
+///-----------------
+// In addition to the valid expressions of the 'HDS' concept:
+// - 'halfedges(hds)' must return a value assignable to 'p'.
+// - '*p.first' must return a value assignable to 'h'.
+// - 'num_halfedges(HDS)' must return a value assignable to 'H'.
+//
+///Expression Semantics
+///--------------------
+// In addition to the valid expression semantics of the 'HDS' concept:
+// - 'halfedges(hds)' returns a 'halfedge_iterator' pair 'p', 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.
+// - '*p.first' returns a 'halfedge_descriptor'.
+// - 'num_halfedges(HDS)' returns the number of halfedges in the 'HDS' data
+// structure.
+//
+///Complexity guarantees
+///---------------------
+// - 'halfedges(hds)' : amortized constant time. (for just getting the
+// 'halfedge_iterator' pair, accessing the halfedges takes linear time.)
+// - '*p.first' : amortized constant time.
+// - 'num_halfedges(HDS)': amortized constant time.
+//
+///Invariants
+///----------
+// 'HalfedgeListHDSConcept' should validate all the invariants for the
+// 'HDSConcept'.
+//
+///Concept-checking class
+///----------------------
+//..
+// template <class HDS>
+// struct HalfedgeListHDSConcept {
+// typedef typename hds_traits<HDS>::halfedge_iterator halfedge_iterator;
+// typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
+// typedef typename hds_traits<HDS>::halfedges_size_type halfedges_size_type;
+// void constraints()
+// {
+// using namespace boost;
+// function_requires<HDSConcept>();
+// function_requires<DefaultConstructibleConcept<halfedge_descriptor> >();
+// function_requires<CopyConstructibleConcept<halfedge_descriptor> >();
+// function_requires<EqualityComparableConcept<halfedge_descriptor> >();
+// function_requires<AssignableConcept<halfedge_descriptor> >();
+// function_requires<hdstl_detail::MultiPassInputIteratorConcept<halfedge_iterator> >();
+// p = halfedges(hds);
+// h = *p.first;
+// H = num_halfedges(hds);
+// const_constraints(hds);
+// }
+// void const_constraints(HDS const& hds)
+// {
+// p = halfedges(hds);
+// h = *p.first;
+// H = num_halfedges(hds);
+// }
+
+// private:
+// HalfedgeListHDS hds;
+// halfedge_descriptor h;
+// std::pair<halfedge_iterator,halfedge_iterator> p;
+// halfedge_size_type H;
+// };
+//..
+
+#ifdef BOOST_HDSTL_CONCEPTS_HALFEDGELISTHDSCONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_HALFEDGELISTHDSCONCEPT_HPP 1
+
+#include <boost/concepts.h>
+
+namespace hdstl{
+namespace concepts {
+
+ template <class HDS>
+ struct HalfedgeListHDSConcept {
+ // This class provides a concept checking class for the
+ // 'HalfedgeListHDSConcept', i.e., using the statement
+ //..
+ // boost::function_requires<HalfedgeListHDSConcept<HDS>()
+ //..
+ // inside a function body, or
+ //..
+ // BOOST_CLASS_REQUIRE(HDS, boost::hdstl, HalfedgeListHDSConcept);
+ //..
+ // inside a class definition body, should trigger a compile-time error
+ // if the type HDS does not model the 'HalfedgeListHDSConcept'.
+
+ // TYPES
+ typedef typename hds_traits<HDS>::halfedge_iterator halfedge_iterator;
+ typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
+ typedef typename hds_traits<HDS>::halfedges_size_type halfedges_size_type;
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'HalfedgeListHDS' concept on page
+ // [halfedgelisthdsconcept].
+
+ //MANIPULATORS
+ void constraints()
+ // Check that the 'HDS' template parameters satisfies all the
+ // constraints of 'HalfedgeListHDSConcept' on page
+ // [halfedgelisthdsconcept].
+ {
+ using namespace boost;
+ function_requires<HDSConcept>();
+ function_requires<DefaultConstructibleConcept<halfedge_descriptor> >();
+ function_requires<CopyConstructibleConcept<halfedge_descriptor> >();
+ function_requires<EqualityComparableConcept<halfedge_descriptor> >();
+ function_requires<AssignableConcept<halfedge_descriptor> >();
+ function_requires<hdstl_detail::MultiPassInputIteratorConcept<halfedge_iterator> >();
+ p = halfedges(hds);
+ h = *p.first;
+ H = num_halfedges(hds);
+ const_constraints(hds);
+ }
+
+ // ACCESSORS
+ void const_constraints(HDS const& hds)
+ // Check that the non-modifiable 'HDS' template parameters
+ // satisfies all the constraints of 'HalfedgeListHDSConcept'.
+ {
+ p = halfedges(hds);
+ h = *p.first;
+ H = num_halfedges(hds);
+ }
+
+ private:
+ //DATA
+ HalfedgeListHDS hds; // a halfedge data structure object
+ halfedge_descriptor h; // a halfedge descriptor
+ std::pair<halfedge_iterator,halfedge_iterator> p; // a halfedge iterator pair
+ halfedge_size_type H; // halfedge size type
+
+ };
+
+} // close namespace concepts
+} // close namespace hdstl
+
+#endif
Added: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp 2007-06-13 16:47:14 EDT (Wed, 13 Jun 2007)
@@ -0,0 +1,190 @@
+//vertex_list_hds_concept.hpp -*- C++ -*-
+//
+//@PURPOSE: Provide 'VertexListHDS' concept definition, and concept checking class.
+//
+//@DESCRIPTION: This file provides a single class template that,
+// when used with the following concept-checking utilities:
+//..
+// boost::function_requires<VertexListHDSConcept<HDS> >();
+//..
+// inside a function body, or
+//..
+// BOOST_CLASS_REQUIRE(HDS, boost::hdstl,VertexListHDSConcept);
+//..
+// inside a class body, checks whether the type given as template
+// argument is a model of the HDS concept described on the page
+// [vertexlisthds].
+//
+//@CONCEPT: [vertexlisthds] Vertex List HDS concept
+//
+///Definition
+///----------
+// This concept refines the 'HDSConcept', and specifies additional accessors
+// to handle vertices in the 'HDS' data structure.
+//
+///Refinement of:
+///--------------
+// - 'HDSConcept'
+//
+///Notation
+///--------
+// - 'HDS' A type that is a model of VertexListHDSConcept
+// - 'hds' A non-modifiable instance of HDS
+// - 'v' Vertex descriptor, of type 'hds_traits<HDS>::vertex_descriptor'
+// - 'p' Vertex iterator pair, of type
+// 'std::pair<vertex_iterator,vertex_iterator>'
+// - 'V' Vertex size type, of type 'hds_traits<HDS>::vertex_size_type'
+//
+///Associated types
+///----------------
+// - 'hds_traits<HDS>::vertex_descriptor': must be 'DefaultConstructible',
+// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// - 'hds_traits<HDS>::vertex_iterator': must be 'MultiPassInputIterator'.
+// - 'hds_traits<HDS>::vertex_size_type': vertex size type.
+//
+///Definitions
+///-----------
+// - 'vertex_descriptor' is a type that contains information to access
+// the vertex. (See the 'HDSConcept' for a full definition.)
+// - 'vertex_iterator' is an iterator type for the vertices.
+// - 'vertex_size_type' defines the size type.
+//
+///Valid Expressions
+///-----------------
+// In addition to the valid expressions of the 'HDS' concept:
+// - 'vertices(hds)' must return a value assignable to 'p'.
+// - '*p.first' must return a value assignable to 'v'.
+// - 'num_vertices(HDS)' must return a value assignable to 'V'.
+//
+///Expression Semantics
+///--------------------
+// In addition to the valid expression semantics of the 'HDS' concept:
+// - 'vertices(hds)' returns a 'vertex_iterator' pair 'p', 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.
+// - '*p.first' returns a 'vertex_descriptor'.
+// - 'num_vertices(HDS)' returns the number of vertices in the 'HDS' data
+// structure.
+//
+///Complexity guarantees
+///---------------------
+// - 'vertices(hds)' : amortized constant time. (for just getting the
+// 'vertex_iterator' pair, accessing the vertices takes linear time.)
+// - '*p.first' : amortized constant time.
+// - 'num_vertices(HDS)': amortized constant time.
+//
+///Invariants
+///----------
+// 'VertexListHDSConcept' should validate all the invariants for the
+// 'HDSConcept'.
+//
+///Concept-checking class
+///----------------------
+//..
+// template <class HDS>
+// struct VertexListHDSConcept {
+// typedef typename hds_traits<HDS>::vertex_iterator vertex_iterator;
+// typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor;
+// typedef typename hds_traits<HDS>::vertices_size_type vertices_size_type;
+// void constraints()
+// {
+// using namespace boost;
+// function_requires<HDSConcept>();
+// function_requires<DefaultConstructibleConcept<vertex_descriptor> >();
+// function_requires<CopyConstructibleConcept<vertex_descriptor> >();
+// function_requires<EqualityComparableConcept<vertex_descriptor> >();
+// function_requires<AssignableConcept<vertex_descriptor> >();
+// function_requires<hdstl_detail::MultiPassInputIteratorConcept<vertex_iterator> >();
+// p = vertices(hds);
+// v = *p.first;
+// V = num_vertices(hds);
+// const_constraints(hds);
+// }
+// void const_constraints(HDS const& hds)
+// {
+// p = vertices(hds);
+// v = *p.first;
+// V = num_vertices(hds);
+// }
+// private:
+// VertexListHDS hds;
+// vertex_descriptor v;
+// std::pair<vertex_iterator,vertex_iterator> p;
+// vertex_size_type V;
+// };
+//..
+
+#ifdef BOOST_HDSTL_CONCEPTS_VERTEXLISTHDSCONCEPT_HPP
+#define BOOST_HDSTL_CONCEPTS_VERTEXLISTHDSCONCEPT_HPP 1
+
+#include <boost/concepts.h>
+
+namespace hdstl{
+namespace concepts {
+
+ template <class HDS>
+ struct VertexListHDSConcept {
+ // This class provides a concept checking class for the
+ // 'VertexListHDSConcept', i.e., using the statement
+ //..
+ // boost::function_requires<VertexListHDSConcept<HDS>()
+ //..
+ // inside a function body, or
+ //..
+ // BOOST_CLASS_REQUIRE(HDS, boost::hdstl, VertexListHDSConcept);
+ //..
+ // inside a class definition body, should trigger a compile-time error
+ // if the type HDS does not model the 'VertexListHDSConcept'.
+
+ // TYPES
+ typedef typename hds_traits<HDS>::vertex_iterator vertex_iterator;
+ typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor;
+ typedef typename hds_traits<HDS>::vertices_size_type vertices_size_type;
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'VertexListHDS' concept on page
+ // [vertexlisthdsconcept].
+
+ //MANIPULATORS
+ void constraints()
+ // Check that the 'HDS' template parameters satisfies all the
+ // constraints of 'VertexListHDSConcept' on page
+ // [vertexlisthdsconcept].
+ {
+ using namespace boost;
+ function_requires<HDSConcept>();
+ function_requires<DefaultConstructibleConcept<vertex_descriptor> >();
+ function_requires<CopyConstructibleConcept<vertex_descriptor> >();
+ function_requires<EqualityComparableConcept<vertex_descriptor> >();
+ function_requires<AssignableConcept<vertex_descriptor> >();
+ function_requires<hdstl_detail::MultiPassInputIteratorConcept<vertex_iterator> >();
+ p = vertices(hds);
+ v = *p.first;
+ V = num_vertices(hds);
+ const_constraints(hds);
+ }
+
+ // ACCESSORS
+ void const_constraints(HDS const& hds)
+ // Check that the non-modifiable 'HDS' template parameters
+ // satisfies all the constraints of 'VertexListHDSConcept'.
+ {
+ p = vertices(hds);
+ v = *p.first;
+ V = num_vertices(hds);
+ }
+
+ private:
+ //DATA
+ VertexListHDS hds; // a halfedge data structure object
+ vertex_descriptor v; // a vertex descriptor
+ std::pair<vertex_iterator,vertex_iterator> p; // a vertex iterator pair
+ vertex_size_type V; // vertex size type
+
+ };
+
+} // close namespace concepts
+} // close namespace hdstl
+
+#endif
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