|
Boost-Commit : |
From: huseyinakcan_at_[hidden]
Date: 2007-06-25 00:37:04
Author: huseyinakcan
Date: 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
New Revision: 7138
URL: http://svn.boost.org/trac/boost/changeset/7138
Log:
syntax corrections in the hds_concepts
Text files modified:
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp | 17 +++++-----
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/bidirectional_hds_concept.hpp | 16 ++-------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/facet_hds_concept.hpp | 15 +++++----
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp | 19 ++++++-----
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp | 26 ++++++++--------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp | 10 ++++-
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp | 38 +++++++++--------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp | 47 +++++++++++------------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp | 38 +++++++++++------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp | 39 +++++++++---------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_hds_concept.hpp | 33 +++++++-------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp | 60 +++++++++++++++++---------------------
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_hds_concept.hpp | 33 +++++++++++++++-----
sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp | 62 ++++++++++++++++++---------------------
14 files changed, 209 insertions(+), 244 deletions(-)
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/backward_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -40,7 +40,7 @@
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
+// In addition to the types of the 'HDS' concept:
// - 'hds_traits<HDS>::traversal_category': from 'HDSConcept', with
// additional requirement that this type must be convertible to
// 'hdstl::backward_traversal_tag'.
@@ -49,12 +49,12 @@
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDS' concept or a full definition.)
+// In addition to the definitions of the 'HDS' concept:
// - 'traversal_category' is a type that contains information about the
// direction of the traversal, which is forward, backward or bidirectional.
-// For this 'BackwardHDS' concept, the 'traversal_category' has to be convertible to
-// the 'hdstl::backward_traversal_tag' type defined in '<boost/hdstl.hpp>'.
+// For this 'BackwardHDS' concept, the 'traversal_category' has to be
+// convertible to the 'hdstl::backward_traversal_tag' type defined in
+// '<boost/hdstl.hpp>'.
// - 'backward_category' defines the primary accessor of the backward
// information for use by algorithms which desire the most direct access.
//
@@ -80,6 +80,7 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'HDS' concept:
// - 'prev_in_facet(hds,h)': amortized constant time.
// - 'prev_at_source(hds,h)': amortized constant time.
// - 'prev_at_target(hds,h)': amortized constant time.
@@ -162,9 +163,9 @@
function_requires<ConvertibleConcept<traversal_category,
backward_traversal_tag> >();
const bool is_valid_storage_tag =
- is_convertible<backward_category,prev_at_source_tag>::value ||
- is_convertible<backward_category,prev_at_target_tag>::value ||
- is_convertible<backward_category,prev_in_facet_tag>::value;
+ is_convertible<backward_category,prev_at_source_tag>::value ||
+ is_convertible<backward_category,prev_at_target_tag>::value ||
+ is_convertible<backward_category,prev_in_facet_tag>::value;
BOOST_STATIC_ASSERT( is_valid_storage_tag );
const_constraints(hds);
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-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -37,29 +37,21 @@
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
+// In addition to the types of the 'ForwardHDS' and 'BackwardHDS' concepts:
// - 'hds_traits<HDS>::traversal_category' : from 'HDSConcept', with
// the additional requirement that this type must be convertible to
// the 'hds_traits<HDS>::bidirectional_traversal_tag' type which is
// defined in '<boost/hdstl.hpp>'.
-// - 'hds_traits<HDS>::forward_category': from 'ForwardHDSConcept'
-// - 'hds_traits<HDS>::backward_category': from 'BackwardHDSConcept'
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDSConcept' for a full definition.)
+// In addition to the definitions of the 'ForwardHDS' and 'BackwardHDS'
+// concepts:
// - 'traversal_category' is a type that contains information about the
// direction of the traversal, which is forward, backward or bidirectional.
// For this 'BidirectionalHDS' concept, the 'traversal_category' has to be
// convertible to the 'hdstl::bidirectional_traversal_tag' type defined
// in '<boost/hdstl.hpp>'.
-// - 'forward_category' defines the primary accessor of the forward
-// information for use by algorithms which desire the most direct access.
-// (See the 'ForwardHDSConcept' for a full definition.)
-// - 'backward_category' defines the primary accessor of the backward
-// information for use by algorithms which desire the most direct access.
-// (See the 'BackwardHDSConcept' for a full definition.)
//
///Valid Expressions
///-----------------
@@ -79,7 +71,7 @@
///Invariants
///----------
// 'BidirectionalHDSConcept' should validate all the invariants for the
-// 'ForwardHDSConcept', and the 'BackwardHDSConcept'.
+// 'ForwardHDSConcept' and the 'BackwardHDSConcept'.
//
///Concept-checking class
///----------------------
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-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -34,12 +34,13 @@
//
///Associated types
///----------------
-// In addition to the types required by the 'HDSConcept':
+// In addition to the types of the 'HDS' concept:
// - 'hds_traits<HDS>::facet_descriptor': must be 'DefaultConstructible',
// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
//
///Definitions
///-----------
+// In addition to the definitions of the 'HDS' concept:
// - 'halfedge_descriptor' is a type that contains information to access
// the halfedge. (See the 'HDSConcept' for a full definition.)
// - 'facet_descriptor' is a type that contains information to access the
@@ -48,12 +49,12 @@
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'HDSConcept':
+// In addition to the valid expressions of the 'HDS' concept:
// - 'facet(hds,h)' must return a value assignable to 'f'.
//
///Expression Semantics
///--------------------
-// In addition to the expressions semantics of the 'HDSConcept':
+// In addition to the expressions semantics of the 'HDS' concept:
// - 'hds_traits<HDS>::supports_facets': must compare equal to 'true'.
// - 'facet(hds,h)' returns the facet descriptor of the facet to the
// left of 'h', when forward facet cycles are oriented in
@@ -61,7 +62,7 @@
//
///Complexity guarantees
///---------------------
-// In addition to the complexity guarantees of the 'HDSConcept':
+// In addition to the complexity guarantees of the 'HDS' concept:
// - 'facet(hds,h)': amortized constant time.
//
///Invariants
@@ -116,9 +117,9 @@
// TYPES
typedef typename hds_traits<HDS>::facet_descriptor facet_descriptor;
- // The specialization of 'hds_traits<HDS>' must have these required
- // types, obeying the types requirements stated in the detailed
- // description of the 'FacetHDS' concept on page [facethdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'FacetHDS' concept on page [facethdsconcept].
//MANIPULATORS
void constraints()
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/forward_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -40,7 +40,7 @@
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
+// In addition to the types of the 'HDS' concept:
// - 'hds_traits<HDS>::traversal_category': from 'HDSConcept', with
// additional requirement that this type must be convertible to
// 'hdstl::forward_traversal_tag'.
@@ -49,12 +49,12 @@
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDS' concept or a full definition.)
+// In addition to the definitions of the 'HDS' concept:
// - 'traversal_category' is a type that contains information about the
-// direction of the traversal, which is forward, forward or bidirectional.
-// For this 'ForwardHDS' concept, the 'traversal_category' has to be convertible to
-// the 'hdstl::forward_traversal_tag' type defined in '<boost/hdstl.hpp>'.
+// direction of the traversal, which is forward, backward or bidirectional.
+// For this 'ForwardHDS' concept, the 'traversal_category' has to be
+// convertible to the 'hdstl::forward_traversal_tag' type defined in
+// '<boost/hdstl.hpp>'.
// - 'forward_category' defines the primary accessor of the forward
// information for use by algorithms which desire the most direct access.
//
@@ -80,6 +80,7 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'HDS' concept:
// - 'next_in_facet(hds,h)': amortized constant time.
// - 'next_at_source(hds,h)': amortized constant time.
// - 'next_at_target(hds,h)': amortized constant time.
@@ -166,9 +167,9 @@
function_requires<ConvertibleConcept<traversal_category,
forward_traversal_tag> >();
const bool is_valid_storage_tag =
- is_convertible<forward_category,next_at_source_tag>::value ||
- is_convertible<forward_category,next_at_target_tag>::value ||
- is_convertible<forward_category,next_in_facet_tag>::value;
+ is_convertible<forward_category,next_at_source_tag>::value ||
+ is_convertible<forward_category,next_at_target_tag>::value ||
+ is_convertible<forward_category,next_in_facet_tag>::value;
BOOST_STATIC_ASSERT( is_valid_storage_tag );
const_constraints(hds);
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/halfedge_list_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -32,20 +32,20 @@
// - 'hds' A non-modifiable instance of HDS
// - 'h' Halfedge descriptor, of type 'hds_traits<HDS>::halfedge_descriptor'
// - 'p' Halfedge iterator, of type 'hds_traits<HDS>::halfedge_iterator'
-// - 'n' Halfedge size type, of type 'hds_traits<HDS>::size_type'
+// - 'n' Halfedge list size, of type 'hds_traits<HDS>::size_type'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': must be 'DefaultConstructible',
-// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
-// - 'hds_traits<HDS>::halfedge_iterator': must be 'ForwardIterator'.
+// In addition to the types of the 'HDS' concept:
+// - 'hds_traits<HDS>::halfedge_iterator': must be a model of the
+// 'ForwardIterator' concept. The value type of the halfedge iterator
+// must be the same as the 'halfedge_descriptor'.
// Its value type must be the same as the 'halfedge_descriptor' type.
-// - 'hds_traits<HDS>::size_type': integral halfedge size type.
+// - 'hds_traits<HDS>::size_type': integral size type.
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDSConcept' for a full definition.)
+// In addition to the definitions of the 'HDS' concept:
// - 'halfedge_iterator' is an iterator type for the halfedges.
// - 'size_type' defines the size type.
//
@@ -58,11 +58,11 @@
//
///Expression Semantics
///--------------------
-// In addition to the valid expression semantics of the 'HDS' concept:
+// In addition to the expression semantics of the 'HDS' concept:
// - 'halfedges_begin(hds)' returns a 'halfedge_iterator' pointing to the
-// beginning of the 'halfedge list'.
+// beginning of the "halfedge list".
// - 'halfedges_end(hds)' returns a 'halfedge_iterator' pointing to the
-// end of the 'halfedge list'.
+// end of the "halfedge list".
// - 'num_halfedges(hds)' returns the number of halfedges in the 'HDS' data
// structure.
//
@@ -75,7 +75,8 @@
///Invariants
///----------
// In addition to the invariants of the 'HDSConcept':
-// - 'std::distance(halfedges_begin(hds), halfedges_end(hds)) == num_halfedges(hds)'
+// - 'std::distance(halfedges_begin(hds), halfedges_end(hds))
+// == num_halfedges(hds)'
//
///Concept-checking class
///----------------------
@@ -173,8 +174,7 @@
//DATA
HalfedgeListHDS hds; // a halfedge data structure object
halfedge_descriptor h; // a halfedge descriptor
- halfedge_iterator b; // a halfedge iterator
- halfedge_iterator e; // a halfedge iterator
+ halfedge_iterator b,e; // halfedge iterators
size_type n; // halfedge size type
};
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -35,12 +35,13 @@
///--------
// - 'HDS' A type that is a model of 'HDSConcept'
// - 'hds' A non-modifiable instance of 'HDS'
-// - 'h','g' Halfedge descriptors, of type 'hds_traits<HDS>::halfedge_descriptor'
+// - 'h','g' Halfedge descriptors, of type
+// 'hds_traits<HDS>::halfedge_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': must be 'DefaultConstructible' and
-// 'CopyConstructible', 'EqualityComparable', 'Assignable'.
+// - 'hds_traits<HDS>::halfedge_descriptor': must be 'DefaultConstructible',
+// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
//
///Definitions
///-----------
@@ -56,12 +57,15 @@
// The following expression must be valid and obey the syntactic requirement:
// - 'opposite(hds, h)' must return a value assignable to 'h'.
// - 'hds_traits<HDS>::supports_facets' must be usable as a Boolean.
+// - 'hds_traits<HDS>::supports_vertices' must be usable as a Boolean.
//
///Expression Semantics
///--------------------
// The expressions semantics are as follows:
// - 'hds_traits<HDS>::supports_facets' is true if and only if 'HDS'
// is a model of the 'FacetHDS' concept (see the page [facethdsconcept]).
+// - 'hds_traits<HDS>::supports_vertices' is true if and only if 'HDS'
+// is a model of the 'VertexHDS' concept (see the page [vertexhdsconcept]).
// - 'opposite(hds, h)' returns a descriptor to the halfedge opposite 'h' in
// the data structure 'hds'. Does not modify the state of either 'hds'
// or 'h'.
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_backward_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -30,30 +30,22 @@
///Notation
///--------
// - 'HDS' A type that is a model of 'MutableBackwardHDSConcept'
-// - 'hds' A non-modifiable instance of 'HDS'
+// - 'hds' A modifiable instance of 'HDS'
// - 'h','g' Halfedge descriptors, of type
// 'hds_traits<HDS>::halfedge_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
-// - 'hds_traits<HDS>::traversal_category': from 'BackwardHDSConcept'.
-// - 'hds_traits<HDS>::backward_category': from 'BackwardHDSConcept'.
+// None besides the types in the 'MutableHDS' and 'BackwardHDS' concepts.
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDS' concept for a full definition.)
-// - 'traversal_category' is a type that contains information about the
-// direction of the traversal, which is forward, backward or bidirectional.
-// (See the 'HDS' concept for a full definition.)
-// - 'backward_category' defines the primary accessor of the backward
-// information for use by algorithms which desire the most direct access.
-// (See the 'HDS' concept for a full definition.)
+// None besides the definitions in the 'MutableHDS' and 'BackwardHDS'
+// concepts.
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'HDS' and the
+// In addition to the valid expressions of the 'MutableHDS' and the
// 'BackwardHDS' concepts:
// - 'set_prev_in_facet(hds,h,g)' sets 'g' as the 'prev_in_facet' value of
// 'h'.
@@ -64,8 +56,8 @@
//
///Expression Semantics
///--------------------
-// In addition to the expression semantics of the 'HDS' concept, and the
-// 'BackwardHDS' concept:
+// In addition to the expression semantics of the 'Mutable HDS' and the
+// 'BackwardHDS' concepts:
// - 'set_prev_in_facet(hds,h,g)' sets 'g' as the halfedge
// preceding 'h' in the adjacent facet cycle, when facet cycles are
// oriented in counter-clockwise order.
@@ -78,6 +70,8 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'Mutable HDS' and the
+// 'BackwardHDS' concepts:
// - 'set_prev_in_facet(hds,h,g)': amortized constant time.
// - 'set_prev_at_source(hds,h,g)': amortized constant time.
// - 'set_prev_at_target(hds,h,g)': amortized constant time.
@@ -110,8 +104,7 @@
// }
// private:
// MutableBackwardHDS hds;
-// halfedge_descriptor h;
-// halfedge_descriptor g;
+// halfedge_descriptor h,g;
// };
//..
@@ -141,10 +134,10 @@
typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
typedef typename hds_traits<HDS>::traversal_category traversal_category;
typedef typename hds_traits<HDS>::backward_category backward_category;
- // The specialization of 'hds_traits<HDS>' must have these
- // required types, obeying the types requirements stated in the
- // detailed description of the 'MutableBackwardHDS' concept on page
- // [mutablebackwardhdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these
+ // required types, obeying the types requirements stated in the
+ // detailed description of the 'MutableBackwardHDS' concept on page
+ // [mutablebackwardhdsconcept].
// MANIPULATORS
void constraints()
@@ -174,8 +167,7 @@
private:
// DATA
MutableBackwardHDS hds; // a halfedge data structure object
- halfedge_descriptor h; // a halfedge descriptor
- halfedge_descriptor g; // another halfedge descriptor
+ halfedge_descriptor h,g; // halfedge descriptors
};
} // close namespace concepts
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_bidirectional_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -34,46 +34,34 @@
///Notation
///--------
// - 'HDS' A type that is a model of 'MutableBidirectionalHDSConcept'
-// - 'hds' A non-modifiable instance of 'HDS'
+// - 'hds' A modifiable instance of 'HDS'
// - 'h','g' Halfedge descriptors, of type
// 'hds_traits<HDS>::halfedge_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
-// - 'hds_traits<HDS>::traversal_category' : must be convertible to
-// 'hds_traits<HDS>::bidirectional_traversal_tag'.
-// - 'hds_traits<HDS>::forward_category' : from 'ForwardHDSConcept'
-// - 'hds_traits<HDS>::backward_category' : from 'BackwardHDSConcept'
+// None besides the types in the 'BidirectionalHDS', 'MutableForwardHDS',
+// and 'MutableBackwardHDS' concepts
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDSConcept' for a full definition.)
-// - 'traversal_category' is a type that contains information about the
-// direction of the traversal, which is forward, backward or bidirectional.
-// For this 'MutableBidirectionalHDS' concept, the 'traversal_category' has to be
-// convertible to the 'hdstl::bidirectional_traversal_tag' type defined
-// in '<boost/hdstl.hpp>'.
-// - 'forward_category' defines the primary accessor of the forward
-// information for use by algorithms which desire the most direct access.
-// - 'backward_category' defines the primary accessor of the backward
-// information for use by algorithms which desire the most direct access.
+// Same as the definitions in the 'BidirectionalHDS', 'MutableForwardHDS',
+// and 'MutableBackwardHDS' concepts
//
///Valid Expressions
///-----------------
-// See the valid expressions of the 'MutableForwardHDSConcept' and
-// the 'MutableBackwardHDSConcept'.
+// Same as the valid expressions in the 'BidirectionalHDS',
+// 'MutableForwardHDS', and 'MutableBackwardHDS' concepts
//
///Expression Semantics
///--------------------
-// See the expression semantics of the 'MutableForwardHDSConcept' and
-// the 'MutableBackwardHDSConcept'.
+// Same as the expression semantics in the 'BidirectionalHDS',
+// 'MutableForwardHDS', and 'MutableBackwardHDS' concepts
//
///Complexity guarantees
///---------------------
-// See the complexity guarantees of the 'MutableForwardHDSConcept' and
-// the 'MutableBackwardHDSConcept'.
+// Same as the complexity guarantees in the 'BidirectionalHDS',
+// 'MutableForwardHDS', and 'MutableBackwardHDS' concepts
//
///Invariants
///----------
@@ -130,10 +118,10 @@
typedef typename hds_traits<HDS>::traversal_category traversal_category;
typedef typename hds_traits<HDS>::forward_category forward_category;
typedef typename hds_traits<HDS>::backward_category backward_category;
- // The specialization of 'hds_traits<HDS>' must have these required
- // types, obeying the types requirements stated in the detailed
- // description of the 'MutableBidirectionalHDS' concept on page
- // [mutablebidirectionalhdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'MutableBidirectionalHDS' concept on page
+ // [mutablebidirectionalhdsconcept].
//MANIPULATORS
void constraints()
@@ -152,11 +140,12 @@
// ACCESSORS
void const_constraints(HDS const& hds)
// Check that the non-modifiable 'HDS' template parameters
- // satisfies all the constraints of 'MutableBidirectionalHDSConcept'.
+ // satisfies all the constraints of
+ // 'MutableBidirectionalHDSConcept'.
{
}
- private:
+ private:
//DATA
MutableBidirectionalHDS hds; // a halfedge data structure object
};
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_facet_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -31,36 +31,32 @@
///Notation
///--------
// - 'HDS' A type that is a model of MutableFacetHDSConcept
-// - 'hds' A non-modifiable instance of HDS
+// - 'hds' A modifiable instance of HDS
// - 'f' Facet descriptor, of type 'hds_traits<HDS>::facet_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::facet_descriptor': must be 'DefaultConstructible',
-// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// None besides the types in the 'MutableHDS' and 'FacetHDS' concepts.
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDSConcept' for a full definition.)
-// - 'facet_descriptor' is a type that contains information to access the
-// facets. (See the 'FacetHDSConcept' for a full definition.)
+// Same as the definitions in the 'MutableHDS' and 'FacetHDS' concepts.
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'FacetHDS' concept, and the
-// 'MutableHDS' concept:
+// In addition to the valid expressions of the 'FacetHDS' and the
+// 'MutableHDS' concepts:
// - 'set_facet(hds,h,f)' sets the facet descriptor value of 'h' to 'f'.
-// - 'add_facet(hds,f)' adds a new facet 'f' to the 'hds' data structure.
+// - 'new_facet(hds)' creates a new facet 'f' in data structure 'hds'.
// - 'remove_facet(hds,f)' removes the facet 'f' from the 'hds' data structure.
//
///Expression Semantics
///--------------------
-// In addition to the expression semantics of the 'FacetHDS' concept, and the
-// 'MutableHDS' concept.
+// In addition to the expression semantics of the 'FacetHDS' and the
+// 'MutableHDS' concepts.
// - 'set_facet(hds,h,f)' sets the facet descriptor value of 'h' to 'f' for a
// single halfedge in the 'hds' data structure.
-// - 'add_facet(hds)' adds a new facet to the 'hds' data structure
+// - 'new_facet(hds)' creates a new facet 'f' data structure 'hds'
// and returns the facet descriptor of this new facet.
// By this operation the facet is added but no connections to the halfedges
// are set. In order to assign facets to halfedges 'set_facet(hds,h,f)'
@@ -71,8 +67,10 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'FacetHDS' and the
+// 'MutableHDS' concepts.
// - 'set_facet(hds,h,f)' : amortized constant time.
-// - 'add_facet(hds)': amortized constant time.
+// - 'new_facet(hds)': amortized constant time.
// - 'remove_facet(hds,f)': amortized constant time.
//
///Invariants
@@ -93,12 +91,12 @@
// function_requires<CopyConstructibleConcept<facet_descriptor> >();
// function_requires<EqualityComparableConcept<facet_descriptor> >();
// function_requires<AssignableConcept<facet_descriptor> >();
-// }
-// void const_constraints(HDS const& hds) {
// set_facet(hds,h,f);
-// f = add_facet(hds);
+// f = new_facet(hds);
// remove_facet(hds,f);
// }
+// void const_constraints(HDS const& hds) {
+// }
// HDS hds;
// halfedge_descriptor h;
// facet_descriptor f;
@@ -146,6 +144,9 @@
function_requires<CopyConstructibleConcept<facet_descriptor> >();
function_requires<EqualityComparableConcept<facet_descriptor> >();
function_requires<AssignableConcept<facet_descriptor> >();
+ set_facet(hds,h,f);
+ f = new_facet(hds);
+ delete_facet(hds,f);
const_constraints(hds);
}
@@ -154,9 +155,6 @@
// Check that the non-modifiable 'HDS' template parameters
// satisfies all the constraints of 'MutableFacetHDSConcept'.
{
- set_facet(hds,h,f);
- f = add_facet(hds);
- delete_facet(hds,f);
}
private:
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_forward_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -30,31 +30,22 @@
///Notation
///--------
// - 'HDS' A type that is a model of 'MutableForwardHDSConcept'
-// - 'hds' A non-modifiable instance of 'HDS'
+// - 'hds' A modifiable instance of 'HDS'
// - 'h','g' Halfedge descriptors, of type
// 'hds_traits<HDS>::halfedge_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': from 'HDSConcept'.
-// - 'hds_traits<HDS>::traversal_category': from 'ForwardHDSConcept'.
-// - 'hds_traits<HDS>::forward_category': from 'ForwardHDSConcept'.
+// None besides the types in the 'MutableHDS' and the 'ForwardHDS' concepts.
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDS' concept for a full definition.)
-// - 'traversal_category' is a type that contains information about the
-// direction of the traversal, which is forward, backward or bidirectional.
-// (See the 'HDS' concept for a full definition.)
-// - 'forward_category' defines the primary accessor of the forward
-// information for use by algorithms which desire the most direct access.
-// (See the 'HDS' concept for a full definition.)
+// Same as the definitions in the 'MutableHDS' and the 'ForwardHDS' concepts.
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'HDS' concept, and the
-// 'ForwardHDS' concept:
+// In addition to the valid expressions of the 'MutableHDS' and the
+// 'ForwardHDS' concepts:
// - 'set_next_in_facet(hds,h,g)' sets 'g' as the 'next_in_facet' value of
// 'h'.
// - 'set_next_at_source(hds,h,g)' sets 'g' as the 'next_at_source' value of
@@ -64,8 +55,8 @@
//
///Expression Semantics
///--------------------
-// In addition to the expression semantics of the 'HDS' concept, and the
-// 'ForwardHDS' concept:
+// In addition to the expression semantics of the 'MutableHDS' and the
+// 'ForwardHDS' concepts:
// - 'set_next_in_facet(hds,h,g)' sets 'g' as the halfedge
// succeeding 'h' in the adjacent facet cycle, when facet cycles are
// oriented in counter-clockwise order.
@@ -78,6 +69,8 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'MutableHDS' and the
+// 'ForwardHDS' concepts:
// - 'set_next_in_facet(hds,h,g)': amortized constant time.
// - 'set_next_at_source(hds,h,g)': amortized constant time.
// - 'set_next_at_target(hds,h,g)': amortized constant time.
@@ -110,8 +103,7 @@
// }
// private:
// MutableForwardHDS hds;
-// halfedge_descriptor h;
-// halfedge_descriptor g;
+// halfedge_descriptor h,g;
// };
//..
@@ -141,10 +133,10 @@
typedef typename hds_traits<HDS>::halfedge_descriptor halfedge_descriptor;
typedef typename hds_traits<HDS>::traversal_category traversal_category;
typedef typename hds_traits<HDS>::forward_category forward_category;
- // The specialization of 'hds_traits<HDS>' must have these
- // required types, obeying the types requirements stated in the
- // detailed description of the 'MutableForwardHDS' concept on page
- // [mutableforwardhdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these
+ // required types, obeying the types requirements stated in the
+ // detailed description of the 'MutableForwardHDS' concept on page
+ // [mutableforwardhdsconcept].
// MANIPULATORS
void constraints()
@@ -174,8 +166,7 @@
private:
// DATA
MutableForwardHDS hds; // a halfedge data structure object
- halfedge_descriptor h; // a halfedge descriptor
- halfedge_descriptor g; // another halfedge descriptor
+ halfedge_descriptor h,g; // halfedge descriptors
};
} // close namespace concepts
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-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -34,33 +34,26 @@
// - 'HDS' A type that is a model of 'MutableHDSConcept'
// - 'hds' A modifiable instance of 'HDS'
// - 'h', h1','h2'
-// Halfedge descriptors, of type 'hds_traits<HDS>::halfedge_descriptor'
+// Halfedge descriptors, of type 'hds_traits<HDS>::halfedge_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::halfedge_descriptor': must be 'DefaultConstructible',
-// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// None besides the types of the 'HDS' concept,
//
///Definitions
///-----------
-// 'halfedge descriptor' is a type that contains information to access
-// the halfedge. Note that the halfedge descriptor type (accessible as a
-// member of the 'hds_traits<HDS>' type) is an opaque type. All that can be
-// done to it is passing it to the function opposite and letting the hds use
-// the information it contains to find the opposite halfedge. In
-// particular, there is no guarantee that it is a pointer type.
+// Same as the definitions of the 'HDS' concept,
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'HDS' concept,
-// the following expressions must be valid and obey the syntactic requirement:
+// In addition to the valid expressions of the 'HDS' concept:
// - 'set_opposite(hds,h1,h2)'
// - 'h = new_edge(hds)'
// - 'delete_edge(hds,h)'
//
///Expression Semantics
///--------------------
-// The expressions semantics are as follows:
+// In addition to the expression semantics of the 'HDS' concept:
// - 'set_opposite(hds,h1,h2)' sets 'h1' and 'h2' as opposites of each other
// in the data structure 'hds'.
// - 'new_edge(hds)' creates a new edge in data structure 'hds', and
@@ -74,6 +67,7 @@
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'HDS' concept:
// - 'set_opposite(hds,h1,h2)': amortized constant time.
// - 'new_edge(hds)': amortized constant time.
// - 'delete_edge(hds,h)' : amortized constant time.
@@ -99,8 +93,7 @@
// void const_constraints(HDS const& hds) {
// }
// HDS hds;
-// halfedge_descriptor h1;
-// halfedge_descriptor h2;
+// halfedge_descriptor h,h1,h2;
// };
//..
@@ -130,10 +123,10 @@
// TYPES
typedef typename hds_traits<HDS>::halfedge_descriptor
halfedge_descriptor;
- // The specialization of 'hds_traits<HDS>' must have these
- // required types, obeying the types requirements stated in the
- // detailed description of the 'MutableHDS' concept on page
- // [mutablehdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these
+ // required types, obeying the types requirements stated in the
+ // detailed description of the 'MutableHDS' concept on page
+ // [mutablehdsconcept].
// MANIPULATORS
void constraints()
@@ -159,9 +152,7 @@
private:
// DATA
HDS hds; // a halfedge data structure object
- halfedge_descriptor h; // a halfedge descriptor
- halfedge_descriptor h1; // a halfedge descriptor
- halfedge_descriptor h2; // a halfedge descriptor
+ halfedge_descriptor h,h1,h2; // halfedge descriptors
};
} // close namespace concepts
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/mutable_vertex_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -12,7 +12,8 @@
// BOOST_CLASS_REQUIRE(HDS, boost::hdstl,MutableVertexHDSConcept);
//..
// inside a class body, checks whether the type given as template
-// argument is a model of the HDS concept described on the page [mutablevertexhds].
+// argument is a model of the HDS concept described on the page
+// [mutablevertexhds].
//
//@CONCEPT: [mutablevertexhds] Mutable Vertex HDS concept
//
@@ -30,38 +31,35 @@
///Notation
///--------
// - 'HDS' A type that is a model of 'MutableVertexHDSConcept'
-// - 'hds' A non-modifiable instance of 'HDS'
+// - 'hds' A modifiable instance of 'HDS'
// - 'v' Vertex descriptor, of type 'hds_traits<HDS>::vertex_descriptor'
//
///Associated types
///----------------
-// - 'hds_traits<HDS>::vertex_descriptor': must be 'DefaultConstructible',
-// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
+// None besides the types in the 'VertexHDS' and the 'MutableHDS' concepts.
//
///Definitions
///-----------
-// - 'halfedge_descriptor' is a type that contains information to access
-// the halfedge. (See the 'HDSConcept' for a full definition.)
-// - 'vertex_descriptor' is a type that contains information to access the
-// vertex at the source of the halfedge.
+// Same as the definitions in the 'VertexHDS' and the 'MutableHDS' concepts.
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'MutableHDS' concept, and the
-// 'VertexHDS' concept:
-// - 'set_vertex(hds,h,v)' sets the source vertex descriptor value of 'h' to
+// In addition to the valid expressions of the 'VertexHDS' and the
+// 'MutableHDS' concepts:
+// - 'set_vertex(hds,h,v)' sets the source vertex descriptor value of 'h' to
// 'v'.
-// - 'add_vertex(hds,v)' adds a new vertex 'v' to the 'hds' data structure.
+// - 'new_vertex(hds)' adds a new vertex 'v' to the 'hds' data structure
+// and returns the vertex descriptor to this new vertex.
// - 'remove_vertex(hds,v)' removes the vertex 'v' from the 'hds' data
// structure.
//
///Expression Semantics
///--------------------
-// In addition to the expression semantics of the 'MutableHDS' concept, and the
-// 'VertexHDS' concept:
+// In addition to the expression semantics of the 'VertexHDS' and the
+// 'MutableHDS' concepts:
// - 'set_vertex(hds,h,v)' sets the source vertex descriptor value of 'h' to
// 'v' for a single halfedge in the 'hds' data structure.
-// - 'add_vertex(hds,v)' adds a new vertex 'v' to the 'hds' data structure.
+// - 'new_vertex(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.
@@ -71,14 +69,16 @@
//
///Complexity guarantees
///---------------------
-// - 'set_vertex(hds,h,v)' : amortized constant time.
-// - 'add_vertex(hds,f)' : amortized constant time.
-// - 'remove_vertex(hds,v)' : amortized constant time.
+// In addition to the complexity guarantees of the 'VertexHDS' and the
+// 'MutableHDS' concepts:
+// - 'set_vertex(hds,h,v)': amortized constant time.
+// - 'new_vertex(hds)': amortized constant time.
+// - 'remove_vertex(hds,v)': amortized constant time.
//
///Invariants
///----------
-// 'MutableVertexHDSConcept' should validate all the invariants for the
-// 'VertexHDSConcept', and the 'MutableHDSConcept'.
+// 'MutableVertexHDSConcept' should verify all the invariants for the
+// 'VertexHDSConcept' and the 'MutableHDSConcept'.
//
///Concept-checking class
///----------------------
@@ -95,14 +95,11 @@
// function_requires<EqualityComparableConcept<vertex_descriptor> >();
// function_requires<AssignableConcept<vertex_descriptor> >();
// set_vertex(hds,h,v);
-// add_vertex(hds,v);
+// v = new_vertex(hds);
// remove_vertex(hds,h,v);
// const_constraints(hds);
// }
// void const_constraints(HDS const& hds) {
-// set_vertex(hds,h,v);
-// add_vertex(hds,v);
-// remove_vertex(hds,h,v);
// }
// HDS hds;
// halfedge_descriptor h;
@@ -134,10 +131,10 @@
// TYPES
typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor;
- // The specialization of 'hds_traits<HDS>' must have these required
- // types, obeying the types requirements stated in the detailed
- // description of the 'MutableVertexHDS' concept on page
- // [mutablevertexhdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'MutableVertexHDS' concept on page
+ // [mutablevertexhdsconcept].
//MANIPULATORS
void constraints()
@@ -154,7 +151,7 @@
function_requires<AssignableConcept<vertex_descriptor> >();
set_vertex(hds,h,v);
- add_vertex(hds,v);
+ v = new_vertex(hds);
remove_vertex(hds,v);
const_constraints(hds);
@@ -165,12 +162,9 @@
// Check that the non-modifiable 'HDS' template parameters
// satisfies all the constraints of 'MutableVertexHDSConcept'.
{
- set_vertex(hds,h,v);
- add_vertex(hds,v);
- remove_vertex(hds,v);
}
- private:
+ private:
//DATA
MutableVertexHDS hds; // a halfedge data structure object
halfedge_descriptor h; // a vertex descriptor
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-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -18,7 +18,7 @@
//
///Definition
///----------
-// This concept refines the 'HDSConcept', and specifies additional vertex
+// This concept refines the 'HDSConcept', and requires an additional vertex
// descriptor to handle vertices in the 'HDS' data structure.
//
///Refinement of:
@@ -29,31 +29,40 @@
///--------
// - 'HDS' A type that is a model of 'VertexHDSConcept'
// - 'hds' A non-modifiable instance of 'HDS'
+// - 'h' Halfedge descriptor, of type 'hds_traits<HDS>::halfedge_descriptor'
// - 'v' Vertex descriptor, of type 'hds_traits<HDS>::vertex_descriptor'
//
///Associated types
///----------------
+// In addition to the types in the 'HDS' concept:
// - 'hds_traits<HDS>::vertex_descriptor': must be 'DefaultConstructible',
// 'CopyConstructible', 'EqualityComparable', and 'Assignable'.
//
///Definitions
///-----------
+// In addition to the definitions in the 'HDS' concept:
// - 'halfedge_descriptor' is a type that contains information to access
// the halfedge. (See the 'HDSConcept' for a full definition.)
// - 'vertex_descriptor' is a type that contains information to access the
-// vertex at the source of the halfedge.
+// vertex at the source or the target of the halfedge.
//
///Valid Expressions
///-----------------
-// See the valid expressions of the 'HDS' concept.
+// In addition to the valid expressions of the 'HDS' concept:
+// - 'vertex(hds,h)' must return a value assignable to 'v'.
//
///Expression Semantics
///--------------------
-// See the expression semantics of the 'HDS' concept.
+// In addition to the expressions semantics of the 'HDS' concept:
+// - 'hds_traits<HDS>::supports_vertices': must compare equal to 'true'.
+// - 'vertex(hds,h)' returns the vertex descriptor of the vertex to the
+// source or target of 'h', depending on the 'source_access_tag' and
+// 'target_access_tag'.
//
///Complexity guarantees
///---------------------
-// See the complexity guarantees of the 'HDS' concept.
+// In addition to the complexity guarantees of the 'HDS' concept:
+// - 'vertex(hds,h)': amortized constant time.
//
///Invariants
///----------
@@ -72,9 +81,12 @@
// function_requires<CopyConstructibleConcept<vertex_descriptor> >();
// function_requires<EqualityComparableConcept<vertex_descriptor> >();
// function_requires<AssignableConcept<vertex_descriptor> >();
+// BOOST_STATIC_ASSERT(hds_traits<HDS>::supports_vertices);
+// v = vertex(hds,h);
// const_constraints(hds);
// }
// void const_constraints(HDS const& hds) {
+// v = vertex(hds,h);
// }
// HDS hds;
// vertex_descriptor v;
@@ -105,9 +117,9 @@
// TYPES
typedef typename hds_traits<HDS>::vertex_descriptor vertex_descriptor;
- // The specialization of 'hds_traits<HDS>' must have these required
- // types, obeying the types requirements stated in the detailed
- // description of the 'VertexHDS' concept on page [vertexhdsconcept].
+ // The specialization of 'hds_traits<HDS>' must have these required
+ // types, obeying the types requirements stated in the detailed
+ // description of the 'VertexHDS' concept on page [vertexhdsconcept].
//MANIPULATORS
void constraints()
@@ -120,7 +132,9 @@
function_requires<CopyConstructibleConcept<vertex_descriptor> >();
function_requires<EqualityComparableConcept<vertex_descriptor> >();
function_requires<AssignableConcept<vertex_descriptor> >();
+ BOOST_STATIC_ASSERT(hds_traits<HDS>::supports_vertices);
+ v = vertex(hds,h);
const_constraints(hds);
}
@@ -129,9 +143,10 @@
// Check that the non-modifiable 'HDS' template parameters
// satisfies all the constraints of 'VertexHDSConcept'.
{
+ v = vertex(hds,h);
}
- private:
+ private:
//DATA
VertexHDS hds; // a halfedge data structure object
vertex_descriptor f; // a vertex descriptor
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp (original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/hds_concepts/vertex_list_hds_concept.hpp 2007-06-25 00:37:02 EDT (Mon, 25 Jun 2007)
@@ -24,57 +24,58 @@
//
///Refinement of:
///--------------
-// - 'HDSConcept'
+// - 'VertexHDSConcept'
//
///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 'hds_traits<HDS>::vertex_iterator'
-// - 'n' Vertex size type, of type 'hds_traits<HDS>::size_type'
+// - 'p' Vertex iterator, of type 'hds_traits<HDS>::vertex_iterator'
+// - 'n' Vertex list size, of type 'hds_traits<HDS>::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>::size_type': vertex size type.
+// In addition to the types of the 'VertexHDS' concept:
+// - 'hds_traits<HDS>::vertex_iterator': must be a model of the
+// 'ForwardIterator' concept. The value type of the vertex iterator must
+// be the same as the 'vertex_descriptor'.
+// - 'hds_traits<HDS>::size_type': integral size type.
//
///Definitions
///-----------
-// - 'vertex_descriptor' is a type that contains information to access
-// the vertex. (See the 'HDSConcept' for a full definition.)
+// In addition to the definitions of the 'VertexHDS' concept:
// - 'vertex_iterator' is an iterator type for the vertices.
// - 'size_type' defines the size type.
//
///Valid Expressions
///-----------------
-// In addition to the valid expressions of the 'HDS' concept:
+// In addition to the valid expressions of the 'VertexHDS' concept:
// - 'vertices_begin(hds)' must return a value assignable to 'p'.
// - 'vertices_end(hds)' must return a value assignable to 'p'.
// - 'num_vertices(hds)' must return a value assignable to 'n'.
//
///Expression Semantics
///--------------------
-// In addition to the valid expression semantics of the 'HDS' concept:
+// In addition to the valid expression semantics of the 'VertexHDS' concept:
// - 'vertices_begin(hds)' returns a 'vertex_iterator' 'p' pointing to the
-// beginning of the 'vertex list'.
+// beginning of the "vertex list".
// - 'vertices_end(hds)' returns a 'vertex_iterator' 'p' pointing to the
-// end of the 'vertex list'.
+// end of the "vertex list".
// - 'num_vertices(hds)' returns the number of vertices in the 'HDS' data
// structure.
//
///Complexity guarantees
///---------------------
+// In addition to the complexity guarantees of the 'VertexHDS' concept:
// - 'vertices_begin(hds)': amortized constant time.
-// - 'vertices_end(hds)' : amortized constant time.
-// - 'num_vertices(hds)' : amortized constant time.
+// - 'vertices_end(hds)': amortized constant time.
+// - 'num_vertices(hds)': amortized constant time.
//
///Invariants
///----------
-// 'VertexListHDSConcept' should validate all the invariants for the
-// 'HDSConcept'.
+// - 'std::distance(vertices_begin(hds), vertices_end(hds))
+// == num_vertices(hds)'
//
///Concept-checking class
///----------------------
@@ -92,10 +93,8 @@
// function_requires<CopyConstructibleConcept<vertex_descriptor> >();
// function_requires<EqualityComparableConcept<vertex_descriptor> >();
// function_requires<AssignableConcept<vertex_descriptor> >();
-// function_requires<hdstl_detail::MultiPassInputIteratorConcept<vertex_iterator> >();
-// b = vertices_begin(hds);
-// e = vertices_end(hds);
-// n = num_vertices(hds);
+// function_requires<ForwardIteratorConcept<vertex_iterator> >();
+// function_requires<ConvertibleConcept<size_type,int> >();
// const_constraints(hds);
// }
// void const_constraints(HDS const& hds)
@@ -138,11 +137,11 @@
// 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].
+ typedef typename hds_traits<HDS>::size_type 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()
@@ -156,10 +155,8 @@
function_requires<CopyConstructibleConcept<vertex_descriptor> >();
function_requires<EqualityComparableConcept<vertex_descriptor> >();
function_requires<AssignableConcept<vertex_descriptor> >();
- function_requires<hdstl_detail::MultiPassInputIteratorConcept<vertex_iterator> >();
- b = vertices_begin(hds);
- e = vertices_end(hds);
- n = num_vertices(hds);
+ function_requires<ForwardIteratorConcept<vertex_iterator> >();
+ function_requires<ConvertibleConcept<size_type,int> >();
const_constraints(hds);
}
@@ -173,12 +170,11 @@
n = num_vertices(hds);
}
- private:
+ private:
//DATA
VertexListHDS hds; // a halfedge data structure object
vertex_descriptor v; // a vertex descriptor
- vertex_iterator b; // a vertex iterator
- vertex_iterator e; // a vertex iterator
+ vertex_iterator b,e; // a vertex iterators
size_type n; // vertex size type
};
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