$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: huseyinakcan_at_[hidden]
Date: 2007-07-16 21:13:21
Author: huseyinakcan
Date: 2007-07-16 21:13:20 EDT (Mon, 16 Jul 2007)
New Revision: 7453
URL: http://svn.boost.org/trac/boost/changeset/7453
Log:
more test cases added for facet_selector class
Text files modified: 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/container_selectors.hpp |    16 ++++                                    
   sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.hpp     |    26 ++++---                                 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.t.cpp   |   138 +++++++++++++++++++++++++++++++++------ 
   sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/vertex_selectors.hpp    |   126 ++++++++++++++++++++++++++---------     
   4 files changed, 237 insertions(+), 69 deletions(-)
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/container_selectors.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/container_selectors.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/container_selectors.hpp	2007-07-16 21:13:20 EDT (Mon, 16 Jul 2007)
@@ -199,6 +199,9 @@
     // TYPES
     typedef std::tr1::hash_set<ValueType> type;
         // The container type, here a 'std::tr1::hash_set'.
+    
+    typedef typename std::tr1::hash_set<ValueType>::size_type size_type;
+        // The container size type.
 
     typedef ValueType* descriptor;
         // Type used to describe an element in the collection of elements
@@ -286,6 +289,9 @@
     // TYPES
     typedef std::list<ValueType> type;
         // The container type, here a 'std::list'.
+    
+    typedef typename std::list<ValueType>::size_type size_type;
+        // The container size type.
 
     typedef ValueType* descriptor;
         // Type used to describe an element in the collection of elements
@@ -353,6 +359,9 @@
     typedef std::set<ValueType> type;
         // The container type, here a 'std::set'.
 
+    typedef typename std::set<ValueType>::size_type size_type;
+        // The container size type.
+
     typedef const ValueType* descriptor;
         // Type used to describe an element in the collection of elements
         // present in a given container.
@@ -375,14 +384,14 @@
             // Return the descriptor of the element pointed to by this
             // iterator.
         {
-            return &(*base_type());
+            return &(*base_type(*this));
         }
         // ACCESSORS
         const ValueType* operator*() const
             // Return the descriptor of the element pointed to by this
             // iterator.
         {
-            return &(*base_type());
+            return &(*base_type(*this));
         }
     };
 
@@ -417,6 +426,9 @@
     typedef std::vector<ValueType> type;
         // The container type, here a 'std::vector'.
 
+    typedef typename std::vector<ValueType>::size_type size_type;
+        // The container size type.
+
     typedef typename std::vector<ValueType>::size_type  descriptor;
         // Type used to describe an element in the collection of elements
         // present in a given container.
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.hpp	2007-07-16 21:13:20 EDT (Mon, 16 Jul 2007)
@@ -187,9 +187,8 @@
           bool HasFacetLink = false, 
           typename HalfedgeDescriptor = int>
 struct stored_facet {
-    // This 'struct' implements a stored facet, from the
-    // parameterized 'Base' (if not void), and adding a facet link if 'HasFacetLink' is
-    // true.
+    // This 'struct' implements a stored facet, from the parameterized 'Base'
+    // (if not void), and adding a facet link if 'HasFacetLink' is true.
 
     // DATA
     HalfedgeDescriptor m_facetLink;
@@ -244,8 +243,8 @@
 
 template <typename HalfedgeDescriptor>
 struct stored_facet<void, false, HalfedgeDescriptor> {
-    // This partial specialization implements a stored facet, deriving from the
-    // parameterized 'Base', but without storing a facet link although its
+    // This partial specialization implements a stored facet, with a 'void' 
+    // base, but without storing a facet link although its
     // constructor accepts a null facet link for uniformity of the
     // interface with the general definition.
 
@@ -286,6 +285,9 @@
     typedef typename ContainerGen::type           container_type;
         // The facet container type for this facet generator.
 
+    typedef typename ContainerGen::size_type      size_type;
+        // The facet container size type for this facet generator.
+
     typedef typename ContainerGen::descriptor     facet_descriptor;
         // The facet descriptor type for this facet generator.
 
@@ -299,8 +301,8 @@
 
 // FREE FUNCTIONS
 template <typename FacetS, typename HalfedgeDescriptor, typename FacetBase>
-typename facet_gen<FacetS, HalfedgeDescriptor, FacetBase>::iterator
-facets_begin(facet_gen<FacetS, HalfedgeDescriptor, FacetBase> const& hds) {
+typename facet_gen<FacetS, HalfedgeDescriptor, FacetBase>::facet_iterator
+facets_begin(facet_gen<FacetS, HalfedgeDescriptor, FacetBase>& hds) {
     typedef typename facet_gen<FacetS,
                                HalfedgeDescriptor,
                                FacetBase>::ContainerGen ContainerGen;
@@ -308,8 +310,8 @@
 }
 
 template <typename FacetS, typename HalfedgeDescriptor, typename FacetBase>
-typename facet_gen<FacetS, HalfedgeDescriptor, FacetBase>::iterator
-facets_end(facet_gen<FacetS, HalfedgeDescriptor, FacetBase> const& hds) {
+typename facet_gen<FacetS, HalfedgeDescriptor, FacetBase>::facet_iterator
+facets_end(facet_gen<FacetS, HalfedgeDescriptor, FacetBase>& hds) {
     typedef typename facet_gen<FacetS,
                                HalfedgeDescriptor,
                                FacetBase>::ContainerGen ContainerGen;
@@ -324,12 +326,14 @@
 
 template <typename FacetS, typename HalfedgeDescriptor, typename FacetBase>
 HalfedgeDescriptor
-halfedge(typename facet_gen<FacetS, HalfedgeDescriptor, FacetBase>::facet_descriptor const& f,
-         facet_gen<FacetS, HalfedgeDescriptor, FacetBase> const& hds) {
+halfedge(typename facet_gen<FacetS, HalfedgeDescriptor, 
+                            FacetBase>::facet_descriptor const& f,
+                facet_gen<FacetS, HalfedgeDescriptor, FacetBase>& hds) {
     return facet_gen<FacetS, HalfedgeDescriptor, FacetBase>
                          ::ContainerGen::value(f, hds.m_container).m_facetLink;
 }
 
+
 } // namespace hdstl
 } // namespace boost
 
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.t.cpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.t.cpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/facet_selectors.t.cpp	2007-07-16 21:13:20 EDT (Mon, 16 Jul 2007)
@@ -35,13 +35,13 @@
     return true;
 }
 
-template <typename Base>
-bool selection_requirements(facetS<Base, false> const&) {
+template <typename Selector>
+bool selection_requirements(facetS<Selector, false> const&) {
     return true;
 }
 
-template <typename Base>
-bool selection_requirements(facetS<Base, true> const&) {
+template <typename Selector>
+bool selection_requirements(facetS<Selector, true> const&) {
     return true;
 }
 
@@ -49,6 +49,33 @@
 //                              CLASS FACET_GEN
 // ===========================================================================
 
+template<typename FacetGen>
+bool facet_gen_requirements_void_noFacetLink() {
+    
+    // Types must exist.
+    typedef typename FacetGen::facet_selector   facet_selector;
+    typedef typename FacetGen::facet_descriptor facet_descriptor;
+    typedef typename FacetGen::facet_iterator   facet_iterator;
+    typedef typename FacetGen::facet_type       facet_type;
+    typedef typename FacetGen::container_type   container_type;
+
+    facet_type fa;
+    facet_type fb;
+    facet_type fc;
+    facet_type fd;
+    facet_type array[] = { fa, fb, fc, fd };  
+    
+    // Construct a facet_gen object whose container contains array.
+    // Verify that facets_begin(), facets_end(), and num_facets() work.
+    // Access the facets and, if the has_facet_links is set, check that the
+    // halfedge() works.
+    container_type temp_con(array,array+4);
+    FacetGen facetGen;
+    facetGen.m_container = temp_con;
+    BOOST_CHECK(( num_facets(facetGen) == 4 ));
+    return true;
+}
+
 template <typename FacetGen>
 bool facet_gen_requirements_void() {
     
@@ -63,13 +90,51 @@
     facet_type fb(2);
     facet_type fc(3);
     facet_type fd(4);
-    facet_type array[] = { fa, fb, fc, fd };  (void) array;
+    facet_type array[] = { fa, fb, fc, fd };  
     
-    // Contruct a facet_gen object whose container contains array.
-    // Verify that halfedges_begin(), halfedges_end(), and num_facets() work.
+    // Construct a facet_gen object whose container contains array.
+    // Verify that facets_begin(), facets_end(), and num_facets() work.
     // Access the facets and, if the has_facet_links is set, check that the
     // halfedge() works.
     // ... TODO
+    container_type temp_con(array,array+4);
+    FacetGen facetGen;
+    facetGen.m_container = temp_con;
+    BOOST_CHECK(( num_facets(facetGen) == 4 ));
+    BOOST_CHECK(( facets_begin(facetGen)->m_facetLink == 1 ));
+    BOOST_CHECK(( (--facets_end(facetGen))->m_facetLink == 4 ));
+
+    //BOOST_CHECK(( halfedge(*facets_begin(facetGen), facetGen) == 1 ));
+    //BOOST_CHECK(( halfedge(*(--facets_end(facetGen)), facetGen) == 4 ));
+    return true;
+}
+
+template <typename FacetGen, typename Base>
+bool facet_gen_requirements_noFacetLink() {
+    
+    typedef typename FacetGen::facet_selector   facet_selector;
+    typedef typename FacetGen::facet_descriptor facet_descriptor;
+    typedef typename FacetGen::facet_iterator   facet_iterator;
+    typedef typename FacetGen::facet_type       facet_type;
+    typedef typename FacetGen::container_type   container_type;
+
+    facet_type fa(Base(1));
+    facet_type fb(Base(2));
+    facet_type fc(Base(3));
+    facet_type fd(Base(4));
+    facet_type array[] = { fa, fb, fc, fd };  (void) array;
+    
+    // Same checks as before:
+    //BOOST_CHECK(( facet_gen_requirements_void_noFacetLink<FacetGen>() ));
+    container_type temp_con(array,array+4);
+    FacetGen facetGen;
+    facetGen.m_container = temp_con;
+    BOOST_CHECK(( num_facets(facetGen) == 4 ));
+
+    // Plus: get the base back from the facets and making sure it matches.
+    BOOST_CHECK(( facets_begin(facetGen)->base() == 1 ));
+    BOOST_CHECK(( (--facets_end(facetGen))->base() == 4 ));
+
 
     return true;
 }
@@ -90,10 +155,21 @@
     facet_type array[] = { fa, fb, fc, fd };  (void) array;
     
     // Same checks as before:
-    BOOST_CHECK(( facet_gen_requirements_void<FacetGen>() ));
+    //BOOST_CHECK(( facet_gen_requirements_void<FacetGen>() ));
+    container_type temp_con(array,array+4);
+    FacetGen facetGen;
+    facetGen.m_container = temp_con;
+    BOOST_CHECK(( num_facets(facetGen) == 4 ));
+
+    BOOST_CHECK(( facets_begin(facetGen)->m_facetLink == 1 ));
+    BOOST_CHECK(( (--facets_end(facetGen))->m_facetLink == 4 ));
 
+    //BOOST_CHECK(( halfedge(*facets_begin(facetGen), facetGen) == 1 ));
+    //BOOST_CHECK(( halfedge(*(--facets_end(facetGen)), facetGen) == 4 ));
+    
     // Plus: get the base back from the facets and making sure it matches.
-    // ... TODO
+    BOOST_CHECK(( facets_begin(facetGen)->base() == 1 ));
+    BOOST_CHECK(( (--facets_end(facetGen))->base() == 4 ));
 
     return true;
 }
@@ -113,22 +189,40 @@
     BOOST_CHECK(( selection_requirements(noFacetS()) ));
     BOOST_CHECK(( selection_requirements(facetS<listS,true>()) ));
     BOOST_CHECK(( selection_requirements(facetS<listS,false>()) ));
-    BOOST_CHECK(( facet_gen_requirements_void<facet_gen<facetS<listS,false>, int, void> >() ));
-    BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<listS,false>, int, int>, int >() ));
-    // BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<listS,false>, int, custom_facet_base> >() ));
-    BOOST_CHECK(( facet_gen_requirements_void<facet_gen<facetS<listS,true>, int, void> >() ));
-    BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<listS,true>, int, int>, int >() ));
-    // BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<listS,true>, int, custom_facet_base> >() ));
+    
+    BOOST_CHECK(( facet_gen_requirements_void_noFacetLink<
+                              facet_gen<facetS<listS,false>, int, void> >() ));
+    BOOST_CHECK(( facet_gen_requirements_void<
+                              facet_gen<facetS<listS,true>, int, void> >() ));
+
+    BOOST_CHECK(( facet_gen_requirements_noFacetLink<
+                          facet_gen<facetS<listS,false>, int, int>, int >() ));
+    BOOST_CHECK(( facet_gen_requirements<
+                          facet_gen<facetS<listS,true>, int, int>, int >() ));
+   
+    // BOOST_CHECK(( facet_gen_requirements<
+    //           facet_gen<facetS<listS,false>, int, custom_facet_base> >() ));
+
+    // BOOST_CHECK(( facet_gen_requirements<
+    //           facet_gen<facetS<listS,true>, int, custom_facet_base> >() ));
     
     BOOST_CHECK(( selection_requirements(facetS<vecS,true>()) ));
     BOOST_CHECK(( selection_requirements(facetS<vecS,false>()) ));
-    BOOST_CHECK(( facet_gen_requirements_void<facet_gen<facetS<vecS,false>, int, void> >() ));
-    BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<vecS,false>, int, int>, int >() ));
-    // BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<vecS,false>, int, custom_facet_base> >() ));
-    BOOST_CHECK(( facet_gen_requirements_void<facet_gen<facetS<vecS,true>, int, void> >() ));
-    BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<vecS,true>, int, int>, int >() ));
-    // BOOST_CHECK(( facet_gen_requirements<facet_gen<facetS<vecS,true>, int, custom_facet_base> >() ));
-   
+    
+    BOOST_CHECK(( facet_gen_requirements_void_noFacetLink<
+                              facet_gen<facetS<vecS,false>, int, void> >() ));
+    BOOST_CHECK(( facet_gen_requirements_void<
+                              facet_gen<facetS<vecS,true>, int, void> >() ));
+
+    BOOST_CHECK(( facet_gen_requirements_noFacetLink<
+                          facet_gen<facetS<vecS,false>, int, int>, int >() ));
+    BOOST_CHECK(( facet_gen_requirements<
+                          facet_gen<facetS<vecS,true>, int, int>, int >() ));
+
+    // BOOST_CHECK(( facet_gen_requirements<
+    //            facet_gen<facetS<vecS,false>, int, custom_facet_base> >() ));
+    // BOOST_CHECK(( facet_gen_requirements<
+    //             facet_gen<facetS<vecS,true>, int, custom_facet_base> >() ));
     //BOOST_CHECK(( usageExample() ));
     
     return 0;
Modified: sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/vertex_selectors.hpp
==============================================================================
--- sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/vertex_selectors.hpp	(original)
+++ sandbox/SOC/2007/geometry/libs/hdstl/dev/halfedge_ds/vertex_selectors.hpp	2007-07-16 21:13:20 EDT (Mon, 16 Jul 2007)
@@ -226,7 +226,7 @@
     // TYPES
     enum { type = true };
     enum { is_source = true };
-    enum { is_target = false };
+    enum { is_target = !is_source };
 };
 
 template<>
@@ -236,8 +236,8 @@
 
     // TYPES
     enum { type = false };
-    enum { is_source = false };
     enum { is_target = true };
+    enum { is_source = !is_target };
 };
 
 template <typename ContainerS, bool HasVertexLink=false, 
@@ -257,38 +257,85 @@
     enum { has_vertex_links = HasVertexLink };
 };
 
-                 // ==================
-                 // class stored_facet
-                 // ==================
-
-template <bool HasVertexLink = false, typename HalfedgeDescriptor = int>
+                 // ===================
+                 // class stored_vertex
+                 // ===================
+
+template <typename Base, 
+          bool HasVertexLink = false,                                   
+          typename HalfedgeDescriptor = int>
 struct stored_vertex {
-    // This struct implements a stored vertex with a vertex link if
-    // 'HasVertexLink' is true
+    // This struct implements a stored vertex from the parameterized 'Base'
+    // (if not void), and adds a vertex link if 'HasVertexLink' is true
 
     //DATA
     HalfedgeDescriptor m_vertexLink;
+    Base m_base;
 
     //CREATORS
-    stored_vertex(HalfedgeDescriptor vertexLink) : m_vertexLink(vertexLink){
-    }
+    stored_vertex(Base const& base, HalfedgeDescriptor vertexLink) 
+    : m_vertexLink(vertexLink),
+    , m_base(base){}
+
+    //MANIPULATORS
+    Base& base() { return m_base; }
+
+    //ACCESSORS
+    const Base& base() const { return m_base; }
+};
+
+template <typename Base, typename HalfedgeDescriptor>
+struct stored_vertex<Base, false, HalfedgeDescriptor> {
+    // This partial specialization implements a stored vertex, deriving from
+    // the parameterized 'Base', but without storing a vertex link although its
+    // constuctor accepts a null vertex link for uniformity of the interface
+    // with the general definition.
+    
+    //DATA
+    Base m_base;
+
+    // CREATORS
+    stored_vertex(Base const& base, HalfedgeDescriptor = 0)
+    : m_base(base) {}
+
+    //MANIPULATORS
+    Base& base() { return m_base; }
+
+    //ACCESSORS
+    const Base& base() const { return m_base; }
+};
+
+template <bool HasVertexLink,
+          typename HalfedgeDescriptor>
+struct stored_vertex<void, HasVertexLink, HalfedgeDescriptor> {
+    // This 'struct' implements a stored vertex, with a 'void' base, adding a
+    // vertex link if 'HasVertexLink' is true.
+
+    // DATA
+    HalfedgeDescriptor m_vertexLink;
+
+    // CREATORS
+    stored_vertex(HalfedgeDescriptor vertexLink)
+    : m_vertexLink(vertexLink) {}
 };
 
 template <typename HalfedgeDescriptor>
-struct stored_vertex<false, HalfedgeDescriptor> {
-    // This partial specialization implements a stored vertex without storing
-    // a vertex link although its constuctoe accepts a null vertex link for 
-    // uniformity of the interface with the general definition.
+struct stored_vertex<void, false, HalfedgeDescriptor> {
+    // This partial specialization implements a stored vertex, with a 'void' 
+    // base, but without storing a vertex link although its
+    // constructor accepts a null vertex link for uniformity of the
+    // interface with the general definition.
 
     // CREATORS
-    stored_vertex(HalfedgeDescriptor = 0) {
-    }
+    stored_vertex(HalfedgeDescriptor = 0) {}
 };
+
+
                  // ================
                  // class vertex_gen
                  // ================
 
-template <typename VertexS, typename HalfedgeDescriptor>
+template <typename VertexS, typename HalfedgeDescriptor, typename VertexBase>
 struct vertex_gen {
     // This struct implements a vertex generator. The generel definition does
     // nothing.
@@ -296,9 +343,9 @@
 
 //SPECIALIZATIONS
 template <typename ContainerS, bool HasVertexLink, typename VertexType, 
-          typename HalfedgeDescriptor>
+          typename HalfedgeDescriptor, typename VertexBase>
 struct vertex_gen<vertexS<ContainerS, HasVertexLink, VertexType>, 
-                                                          HalfedgeDescriptor> {
+                                              HalfedgeDescriptor, VertexBase> {
     // This specialization is a vertex generator for 'vertexS' that takes a 
     // vertex selector, vertex type selector , halfedge descriptor and uses 
     // the container_selectors compenent to define a suitable base for the
@@ -306,7 +353,8 @@
     // 'halfedge_ds' related to vertices.
     
     // TYPES
-    typedef stored_vertex<HasVertexLink, HalfedgeDescriptor> vertex_type;
+    typedef stored_vertex<VertexBase,HasVertexLink, HalfedgeDescriptor> 
+                                                           vertex_type;
         // The stored vertex type for this vertex generator.
 
     typedef container_gen<ContainerS, vertex_type>  ContainerGen;
@@ -328,28 +376,38 @@
 };
 
 // FREE FUNCTIONS
-template <typename VertexS, typename HalfedgeDescriptor>
-typename vertex_gen<VertexS, HalfedgeDescriptor>::iterator
-vertices_begin(vertex_gen<VertexS, HalfedgeDescriptor> const& hds) {
-    typedef typename vertex_gen<VertexS,
-                               HalfedgeDescriptor>::ContainerGen ContainerGen;
+template <typename VertexS, typename HalfedgeDescriptor, typename VertexBase>
+typename vertex_gen<VertexS, HalfedgeDescriptor,VertexBase>::iterator
+vertices_begin(vertex_gen<VertexS, HalfedgeDescriptor, VertexBase> const& hds) {
+    typedef typename vertex_gen<VertexS, HalfedgeDescriptor, 
+                                        VertexBase>::ContainerGen ContainerGen;
     return ContainerGen::container_begin(hds.m_container);
 }
 
-template <typename VertexS, typename HalfedgeDescriptor>
-typename vertex_gen<VertexS, HalfedgeDescriptor>::iterator
-vertices_end(vertex_gen<VertexS, HalfedgeDescriptor> const& hds) {
-    typedef typename vertex_gen<VertexS,
-                               HalfedgeDescriptor>::ContainerGen ContainerGen;
+template <typename VertexS, typename HalfedgeDescriptor, typename VertexBase>
+typename vertex_gen<VertexS, HalfedgeDescriptor, VertexBase>::iterator
+vertices_end(vertex_gen<VertexS, HalfedgeDescriptor, VertexBase> const& hds) {
+    typedef typename vertex_gen<VertexS, HalfedgeDescriptor, 
+                                        VertexBase>::ContainerGen ContainerGen;
     return ContainerGen::container_end(hds.m_container);
 }
 
-template <typename VertexS, typename HalfedgeDescriptor>
-typename vertex_gen<VertexS, HalfedgeDescriptor>::size_type
-num_vertices(vertex_gen<VertexS, HalfedgeDescriptor> const& hds) {
+template <typename VertexS, typename HalfedgeDescriptor, typename VertexBase>
+typename vertex_gen<VertexS, HalfedgeDescriptor, VertexBase>::size_type
+num_vertices(vertex_gen<VertexS, HalfedgeDescriptor, VertexBase> const& hds) {
     return hds.m_container.size();
 }
 
+template <typename VertexS, typename HalfedgeDescriptor, typename VertexBase>
+HalfedgeDescriptor
+halfedge(typename vertex_gen<VertexS, HalfedgeDescriptor, 
+                                      VertexBase>::vertex_descriptor const& v,
+              vertex_gen<VertexS, HalfedgeDescriptor, VertexBase> const& hds) {
+    return vertex_gen<VertexS, HalfedgeDescriptor, VertexBase>
+                      ::ContainerGen::value(v, hds.m_container).m_vertexLink;
+}
+
+
 } // namespace hdstl
 } // namespace boost