Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Halfedge_data_structure_using_vector< V, H, F > Class Template Reference

#include <Halfedge_data_structure_using_vector.h>

Collaboration diagram for Halfedge_data_structure_using_vector< V, H, F >:

Public Types

typedef
Halfedge_data_structure_using_vector
< V, H, F > 
Self
 
typedef _HDS_vector_vertex< V,
H, F > 
Vertex
 
typedef _HDS_vector_halfedge
< V, H, F > 
Halfedge
 
typedef _HDS_vector_facet< V,
H, F > 
Facet
 
typedef Vertex::Point Point
 
typedef Facet::Normal Normal
 
typedef Facet::Plane Plane
 
typedef Halfedge_vector::size_type Size
 
typedef
Halfedge_vector::difference_type 
Difference
 
typedef
Vertex::Supports_vertex_halfedge 
Supports_vertex_halfedge
 
typedef
Halfedge::Supports_halfedge_prev 
Supports_halfedge_prev
 
typedef
Halfedge::Supports_halfedge_vertex 
Supports_halfedge_vertex
 
typedef
Halfedge::Supports_halfedge_facet 
Supports_halfedge_facet
 
typedef
Facet::Supports_facet_halfedge 
Supports_facet_halfedge
 
typedef
Vertex::Supports_vertex_point 
Supports_vertex_point
 
typedef Facet::Supports_facet_plane Supports_facet_plane
 
typedef
Facet::Supports_facet_normal 
Supports_facet_normal
 
typedef Tag_false Supports_removal
 
typedef
std::random_access_iterator_tag 
iterator_category
 
typedef Vertex_vector::iterator Vertex_iterator
 
typedef Halfedge_vector::iterator Halfedge_iterator
 
typedef Facet_vector::iterator Facet_iterator
 
typedef N_step_adaptor
< Halfedge_iterator,
2, Halfedge &, Halfedge
*, Halfedge, std::ptrdiff_t,
iterator_category
Edge_iterator
 
typedef
Vertex_vector::const_iterator 
Vertex_const_iterator
 
typedef
Halfedge_vector::const_iterator 
Halfedge_const_iterator
 
typedef
Facet_vector::const_iterator 
Facet_const_iterator
 
typedef N_step_adaptor
< Halfedge_const_iterator,
2, const Halfedge &, const
Halfedge *, Halfedge,
std::ptrdiff_t,
iterator_category
Edge_const_iterator
 
typedef
Halfedge_data_structure_using_vector
< V, H, F > 
Self
 
typedef _HDS_vector_vertex< V,
H, F > 
Vertex
 
typedef _HDS_vector_halfedge
< V, H, F > 
Halfedge
 
typedef _HDS_vector_facet< V,
H, F > 
Facet
 
typedef Vertex::Point Point
 
typedef Facet::Normal Normal
 
typedef Facet::Plane Plane
 
typedef Halfedge_vector::size_type Size
 
typedef
Halfedge_vector::difference_type 
Difference
 
typedef
Vertex::Supports_vertex_halfedge 
Supports_vertex_halfedge
 
typedef
Halfedge::Supports_halfedge_prev 
Supports_halfedge_prev
 
typedef
Halfedge::Supports_halfedge_vertex 
Supports_halfedge_vertex
 
typedef
Halfedge::Supports_halfedge_facet 
Supports_halfedge_facet
 
typedef
Facet::Supports_facet_halfedge 
Supports_facet_halfedge
 
typedef
Vertex::Supports_vertex_point 
Supports_vertex_point
 
typedef Facet::Supports_facet_plane Supports_facet_plane
 
typedef
Facet::Supports_facet_normal 
Supports_facet_normal
 
typedef Tag_false Supports_removal
 
typedef
std::random_access_iterator_tag 
iterator_category
 
typedef Vertex_vector::iterator Vertex_iterator
 
typedef Halfedge_vector::iterator Halfedge_iterator
 
typedef Facet_vector::iterator Facet_iterator
 
typedef N_step_adaptor
< Halfedge_iterator,
2, Halfedge &, Halfedge
*, Halfedge, std::ptrdiff_t,
iterator_category
Edge_iterator
 
typedef
Vertex_vector::const_iterator 
Vertex_const_iterator
 
typedef
Halfedge_vector::const_iterator 
Halfedge_const_iterator
 
typedef
Facet_vector::const_iterator 
Facet_const_iterator
 
typedef N_step_adaptor
< Halfedge_const_iterator,
2, const Halfedge &, const
Halfedge *, Halfedge,
std::ptrdiff_t,
iterator_category
Edge_const_iterator
 

Public Member Functions

 Halfedge_data_structure_using_vector ()
 
 Halfedge_data_structure_using_vector (Size v, Size h, Size f)
 
void reserve (Size v, Size h, Size f)
 
 Halfedge_data_structure_using_vector (const Self &hds)
 
Selfoperator= (const Self &hds)
 
Size size_of_vertices () const
 
Size size_of_halfedges () const
 
Size size_of_facets () const
 
Size capacity_of_vertices () const
 
Size capacity_of_halfedges () const
 
Size capacity_of_facets () const
 
std::size_t bytes () const
 
std::size_t bytes_reserved () const
 
Vertex_iterator vertices_begin ()
 
Vertex_iterator vertices_end ()
 
Halfedge_iterator halfedges_begin ()
 
Halfedge_iterator halfedges_end ()
 
Facet_iterator facets_begin ()
 
Facet_iterator facets_end ()
 
Edge_iterator edges_begin ()
 
Edge_iterator edges_end ()
 
Vertex_const_iterator vertices_begin () const
 
Vertex_const_iterator vertices_end () const
 
Halfedge_const_iterator halfedges_begin () const
 
Halfedge_const_iterator halfedges_end () const
 
Facet_const_iterator facets_begin () const
 
Facet_const_iterator facets_end () const
 
Edge_const_iterator edges_begin () const
 
Edge_const_iterator edges_end () const
 
Vertexnew_vertex ()
 
Vertexnew_vertex (const Vertex *v)
 
Vertexnew_vertex (const Point &p)
 
Halfedgenew_edge ()
 
Halfedgenew_edge (const Halfedge *he)
 
Facetnew_facet ()
 
Facetnew_facet (const Facet *f)
 
void delete_all ()
 
void vertex_pop_back ()
 
void edge_pop_back ()
 
void facet_pop_back ()
 
Size size_of_border_halfedges () const
 
Size size_of_border_edges () const
 
Halfedge_iterator border_halfedges_begin ()
 
Edge_iterator border_edges_begin ()
 
Halfedge_const_iterator border_halfedges_begin () const
 
Edge_const_iterator border_edges_begin () const
 
void normalize_border ()
 
 Halfedge_data_structure_using_vector ()
 
 Halfedge_data_structure_using_vector (Size v, Size h, Size f)
 
void reserve (Size v, Size h, Size f)
 
 Halfedge_data_structure_using_vector (const Self &hds)
 
Selfoperator= (const Self &hds)
 
Size size_of_vertices () const
 
Size size_of_halfedges () const
 
Size size_of_facets () const
 
Size capacity_of_vertices () const
 
Size capacity_of_halfedges () const
 
Size capacity_of_facets () const
 
std::size_t bytes () const
 
std::size_t bytes_reserved () const
 
Vertex_iterator vertices_begin ()
 
Vertex_iterator vertices_end ()
 
Halfedge_iterator halfedges_begin ()
 
Halfedge_iterator halfedges_end ()
 
Facet_iterator facets_begin ()
 
Facet_iterator facets_end ()
 
Edge_iterator edges_begin ()
 
Edge_iterator edges_end ()
 
Vertex_const_iterator vertices_begin () const
 
Vertex_const_iterator vertices_end () const
 
Halfedge_const_iterator halfedges_begin () const
 
Halfedge_const_iterator halfedges_end () const
 
Facet_const_iterator facets_begin () const
 
Facet_const_iterator facets_end () const
 
Edge_const_iterator edges_begin () const
 
Edge_const_iterator edges_end () const
 
Vertexnew_vertex ()
 
Vertexnew_vertex (const Vertex *v)
 
Vertexnew_vertex (const Point &p)
 
Halfedgenew_edge ()
 
Halfedgenew_edge (const Halfedge *he)
 
Facetnew_facet ()
 
Facetnew_facet (const Facet *f)
 
void delete_all ()
 
void vertex_pop_back ()
 
void edge_pop_back ()
 
void facet_pop_back ()
 
Size size_of_border_halfedges () const
 
Size size_of_border_edges () const
 
Halfedge_iterator border_halfedges_begin ()
 
Edge_iterator border_edges_begin ()
 
Halfedge_const_iterator border_halfedges_begin () const
 
Edge_const_iterator border_edges_begin () const
 
void normalize_border ()
 

Protected Types

typedef std::vector< VertexVertex_vector
 
typedef std::vector< HalfedgeHalfedge_vector
 
typedef std::vector< FacetFacet_vector
 
typedef std::vector< VertexVertex_vector
 
typedef std::vector< HalfedgeHalfedge_vector
 
typedef std::vector< FacetFacet_vector
 

Protected Member Functions

void update_opposite (Halfedge_iterator h)
 
void update_opposite (Edge_iterator h)
 
void update_prev (Halfedge_iterator, Halfedge_iterator, std::vector< Halfedge_iterator >, Tag_false)
 
void update_prev (Halfedge_iterator h, Halfedge_iterator base, std::vector< Halfedge_iterator > inv, Tag_true)
 
void update_vertex (Halfedge_iterator, Tag_false, Tag_false)
 
void update_vertex (Halfedge_iterator, Tag_true, Tag_false)
 
void update_vertex (Halfedge_iterator, Tag_false, Tag_true)
 
void update_vertex (Halfedge_iterator h, Tag_true, Tag_true)
 
void update_facet (Halfedge_iterator, Tag_false, Tag_false)
 
void update_facet (Halfedge_iterator, Tag_true, Tag_false)
 
void update_facet (Halfedge_iterator, Tag_false, Tag_true)
 
void update_facet (Halfedge_iterator h, Tag_true, Tag_true)
 
void update_opposite (Halfedge_iterator h)
 
void update_opposite (Edge_iterator h)
 
void update_prev (Halfedge_iterator, Halfedge_iterator, const std::vector< Halfedge_iterator > &, Tag_false)
 
void update_prev (Halfedge_iterator h, Halfedge_iterator base, const std::vector< Halfedge_iterator > &inv, Tag_true)
 
void update_vertex (Halfedge_iterator, Tag_false, Tag_false)
 
void update_vertex (Halfedge_iterator, Tag_true, Tag_false)
 
void update_vertex (Halfedge_iterator, Tag_false, Tag_true)
 
void update_vertex (Halfedge_iterator h, Tag_true, Tag_true)
 
void update_facet (Halfedge_iterator, Tag_false, Tag_false)
 
void update_facet (Halfedge_iterator, Tag_true, Tag_false)
 
void update_facet (Halfedge_iterator, Tag_false, Tag_true)
 
void update_facet (Halfedge_iterator h, Tag_true, Tag_true)
 

Protected Attributes

Vertex_vector vertices
 
Halfedge_vector halfedges
 
Facet_vector facets
 
Size nb_border_halfedges
 
Size nb_border_edges
 
Halfedge_iterator border_halfedges
 

Private Member Functions

void pointer_update (Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)
 
void pointer_update (Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)
 

Detailed Description

template<class V, class H, class F>
class Halfedge_data_structure_using_vector< V, H, F >

Definition at line 172 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

Member Typedef Documentation

typedef Halfedge_vector::difference_type Difference
typedef Halfedge_vector::difference_type Difference
typedef Facet_vector::const_iterator Facet_const_iterator
typedef Facet_vector::const_iterator Facet_const_iterator
typedef Facet_vector::iterator Facet_iterator
typedef Facet_vector::iterator Facet_iterator
typedef std::vector<Facet> Facet_vector
protected
typedef std::vector<Facet> Facet_vector
protected
typedef Halfedge_vector::const_iterator Halfedge_const_iterator
typedef Halfedge_vector::const_iterator Halfedge_const_iterator
typedef Halfedge_vector::iterator Halfedge_iterator
typedef Halfedge_vector::iterator Halfedge_iterator
typedef std::vector<Halfedge> Halfedge_vector
protected
typedef std::vector<Halfedge> Halfedge_vector
protected
typedef std::random_access_iterator_tag iterator_category
typedef std::random_access_iterator_tag iterator_category
typedef Facet::Normal Normal
typedef Facet::Normal Normal
typedef Facet::Plane Plane
typedef Facet::Plane Plane
typedef Halfedge_vector::size_type Size
typedef Halfedge_vector::size_type Size
typedef Facet::Supports_facet_halfedge Supports_facet_halfedge
typedef Facet::Supports_facet_halfedge Supports_facet_halfedge
typedef Facet::Supports_facet_normal Supports_facet_normal
typedef Facet::Supports_facet_normal Supports_facet_normal
typedef Facet::Supports_facet_plane Supports_facet_plane
typedef Facet::Supports_facet_plane Supports_facet_plane
typedef Vertex::Supports_vertex_halfedge Supports_vertex_halfedge
typedef Vertex::Supports_vertex_halfedge Supports_vertex_halfedge
typedef Vertex::Supports_vertex_point Supports_vertex_point
typedef Vertex::Supports_vertex_point Supports_vertex_point
typedef Vertex_vector::const_iterator Vertex_const_iterator
typedef Vertex_vector::const_iterator Vertex_const_iterator
typedef Vertex_vector::iterator Vertex_iterator
typedef Vertex_vector::iterator Vertex_iterator
typedef std::vector<Vertex> Vertex_vector
protected
typedef std::vector<Vertex> Vertex_vector
protected

Constructor & Destructor Documentation

Halfedge_data_structure_using_vector ( Size  v,
Size  h,
Size  f 
)
inline

Definition at line 256 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

259  // a polyhedron `P' with storage reserved for v vertices, h
260  // halfedges, and f facets. The reservation sizes are a hint for
261  // optimizing storage allocation. They are not used here.
262  vertices.reserve(v);
263  halfedges.reserve(h);
264  facets.reserve(f);
265  }
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
Halfedge_data_structure_using_vector ( const Self hds)
inline

Definition at line 284 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

285  : vertices( hds.vertices),
286  halfedges( hds.halfedges),
287  facets( hds.facets),
288  nb_border_halfedges( hds.nb_border_halfedges),
289  nb_border_edges( hds.nb_border_edges),
290  border_halfedges( hds.border_halfedges)
291  {
292  pointer_update( hds.vertices.begin(),
293  hds.halfedges.begin(),
294  hds.facets.begin());
295  }
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

Halfedge_data_structure_using_vector ( Size  v,
Size  h,
Size  f 
)
inline

Definition at line 278 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

281  // a polyhedron `P' with storage reserved for v vertices, h
282  // halfedges, and f facets. The reservation sizes are a hint for
283  // optimizing storage allocation. They are not used here.
284  vertices.reserve(v);
285  halfedges.reserve(h);
286  facets.reserve(f);
287  }
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
Halfedge_data_structure_using_vector ( const Self hds)
inline

Definition at line 306 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

307  : vertices( hds.vertices),
308  halfedges( hds.halfedges),
309  facets( hds.facets),
310  nb_border_halfedges( hds.nb_border_halfedges),
311  nb_border_edges( hds.nb_border_edges),
312  border_halfedges( hds.border_halfedges)
313  {
314  pointer_update( hds.vertices.begin(),
315  hds.halfedges.begin(),
316  hds.facets.begin());
317  }
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

Member Function Documentation

Edge_iterator border_edges_begin ( )
inline

Definition at line 513 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges_begin().

513  {
514  // ... trial to make Edge_iterator obsolete.
516  }
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator border_edges_begin ( ) const
inline

Definition at line 526 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges_begin().

526  {
528  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Edge_iterator border_edges_begin ( )
inline

Definition at line 535 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges_begin().

535  {
536  // ... trial to make Edge_iterator obsolete.
538  }
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator border_edges_begin ( ) const
inline

Definition at line 548 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges_begin().

548  {
550  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Halfedge_iterator border_halfedges_begin ( )
inline

Definition at line 502 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges.

Referenced by Halfedge_data_structure_using_vector< V, H, F >::border_edges_begin().

502  {
503  // halfedge iterator starting with the border edges. The range [
504  // `halfedges_begin(), border_halfedges_begin()') denotes all
505  // non-border edges. The range [`border_halfedges_begin(),
506  // halfedges_end()') denotes all border edges. Precondition:
507  // `normalize_border()' has been called and no halfedge insertion
508  // or removal and no change in border status of the halfedges have
509  // occured since then.
511  }

Here is the caller graph for this function:

Halfedge_const_iterator border_halfedges_begin ( ) const
inline

Definition at line 518 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges.

518  {
519  // CGAL_assertion( border_halfedges);
520  // return Halfedge_const_iterator( border_halfedges);
521  return // static_cast -- MSVC identity loss... DVP
522  Halfedge_const_iterator(static_cast<Halfedge_iterator>
523  (border_halfedges));
524  }
Halfedge_iterator border_halfedges_begin ( )
inline

Definition at line 524 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges.

524  {
525  // halfedge iterator starting with the border edges. The range [
526  // `halfedges_begin(), border_halfedges_begin()') denotes all
527  // non-border edges. The range [`border_halfedges_begin(),
528  // halfedges_end()') denotes all border edges. Precondition:
529  // `normalize_border()' has been called and no halfedge insertion
530  // or removal and no change in border status of the halfedges have
531  // occured since then.
533  }
Halfedge_const_iterator border_halfedges_begin ( ) const
inline

Definition at line 540 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges.

540  {
541  // CGAL_assertion( border_halfedges);
542  // return Halfedge_const_iterator( border_halfedges);
543  return // static_cast -- MSVC identity loss... DVP
544  Halfedge_const_iterator(static_cast<Halfedge_iterator>
545  (border_halfedges));
546  }
std::size_t bytes ( ) const
inline

Definition at line 325 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

std::size_t bytes ( ) const
inline
std::size_t bytes_reserved ( ) const
inline

Definition at line 331 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

std::size_t bytes_reserved ( ) const
inline

Definition at line 353 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

void delete_all ( )
inline

Definition at line 436 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_edges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

Referenced by Halfedge_data_structure_using_vector< V, H, F >::operator=().

Here is the caller graph for this function:

void delete_all ( )
inline

Definition at line 458 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_edges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_halfedges, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

void edge_pop_back ( )
inline
void edge_pop_back ( )
inline
Edge_iterator edges_begin ( )
inline

Definition at line 345 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_begin().

345 { return Edge_iterator(halfedges_begin());}
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator edges_begin ( ) const
inline

Definition at line 362 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_begin().

362  {
364  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Edge_iterator edges_begin ( )
inline

Definition at line 367 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_begin().

367 { return Edge_iterator(halfedges_begin());}
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator edges_begin ( ) const
inline

Definition at line 384 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_begin().

384  {
386  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Edge_iterator edges_end ( )
inline

Definition at line 350 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_end().

350 { return Edge_iterator(halfedges_end());}
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator edges_end ( ) const
inline

Definition at line 365 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_end().

365  {
367  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Edge_iterator edges_end ( )
inline

Definition at line 372 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_end().

372 { return Edge_iterator(halfedges_end());}
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator

Here is the call graph for this function:

Edge_const_iterator edges_end ( ) const
inline

Definition at line 387 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::halfedges_end().

387  {
389  }
N_step_adaptor< Halfedge_const_iterator, 2, const Halfedge &, const Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_const_iterator

Here is the call graph for this function:

Halfedge* new_edge ( )
inline

Definition at line 393 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, and Halfedge_data_structure_using_vector< V, H, F >::halfedges.

393  {
394  CGAL_assertion( halfedges.size() + 1 < halfedges.capacity());
395  // creates a new pair of opposite border halfedges.
396  halfedges.push_back( Halfedge());
397  Halfedge* h = & (halfedges.back());
398  halfedges.push_back( Halfedge());
399  Halfedge* g = & (halfedges.back());
400  CGAL_assertion( h + 1 == g);
401  CGAL_assertion( (char*)g - (char*)h == sizeof( Halfedge));
402  h->H::set_opposite(g);
403  g->H::set_opposite(h);
404  return h;
405  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
This class encapsulate a halfedge over a window manifold.
Definition: Manifold_2.h:446
Halfedge* new_edge ( const Halfedge he)
inline

Definition at line 407 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and _HDS_vector_halfedge< V, H, F >::opposite().

407  {
408  CGAL_assertion( halfedges.size() + 1 < halfedges.capacity());
409  // creates a new pair of opposite border halfedges.
410  halfedges.push_back( *he);
411  Halfedge* h = & (halfedges.back());
412  halfedges.push_back( *(he->opposite()));
413  Halfedge* g = & (halfedges.back());
414  h->H::set_opposite(g);
415  g->H::set_opposite(h);
416  return h;
417  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
Halfedge opposite() const
Get the ID of the opposite edge of a given edge.
Definition: Manifold_2.h:454
This class encapsulate a halfedge over a window manifold.
Definition: Manifold_2.h:446

Here is the call graph for this function:

Halfedge* new_edge ( )
inline

Definition at line 415 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, and Halfedge_data_structure_using_vector< V, H, F >::halfedges.

415  {
416  CGAL_assertion( halfedges.size() + 1 < halfedges.capacity());
417  // creates a new pair of opposite border halfedges.
418  halfedges.push_back( Halfedge());
419  Halfedge* h = & (halfedges.back());
420  halfedges.push_back( Halfedge());
421  Halfedge* g = & (halfedges.back());
422  CGAL_assertion( h + 1 == g);
423  CGAL_assertion( (char*)g - (char*)h == sizeof( Halfedge));
424  h->H::set_opposite(g);
425  g->H::set_opposite(h);
426  return h;
427  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
This class encapsulate a halfedge over a window manifold.
Definition: Manifold_2.h:446
Halfedge* new_edge ( const Halfedge he)
inline

Definition at line 429 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, Halfedge_data_structure_using_vector< V, H, F >::halfedges, and _HDS_vector_halfedge< V, H, F >::opposite().

429  {
430  CGAL_assertion( halfedges.size() + 1 < halfedges.capacity());
431  // creates a new pair of opposite border halfedges.
432  halfedges.push_back( *he);
433  Halfedge* h = & (halfedges.back());
434  halfedges.push_back( *(he->opposite()));
435  Halfedge* g = & (halfedges.back());
436  h->H::set_opposite(g);
437  g->H::set_opposite(h);
438  return h;
439  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
Halfedge opposite() const
Get the ID of the opposite edge of a given edge.
Definition: Manifold_2.h:454
This class encapsulate a halfedge over a window manifold.
Definition: Manifold_2.h:446

Here is the call graph for this function:

Facet* new_facet ( )
inline
Facet* new_facet ( const Facet f)
inline
Facet* new_facet ( )
inline
Facet* new_facet ( const Facet f)
inline
Vertex* new_vertex ( )
inline
Vertex* new_vertex ( const Vertex v)
inline

Definition at line 381 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

381  {
382  CGAL_assertion( vertices.size() < vertices.capacity());
383  vertices.push_back( *v);
384  return & (vertices.back());
385  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
Vertex* new_vertex ( const Point p)
inline
Vertex* new_vertex ( )
inline
Vertex* new_vertex ( const Vertex v)
inline

Definition at line 403 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, and Halfedge_data_structure_using_vector< V, H, F >::vertices.

403  {
404  CGAL_assertion( vertices.size() < vertices.capacity());
405  vertices.push_back( *v);
406  return & (vertices.back());
407  }
#define CGAL_assertion(EX)
Definition: assertions.h:87
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
Vertex* new_vertex ( const Point p)
inline
void normalize_border ( )

Definition at line 574 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_assertion, i, k, opposite(), and swap().

574  {
576  nb_border_edges = 0;
578  // Lets run one partition step over the array of halfedges.
579  // First find a pivot -- that means a border edge.
580  Edge_iterator ll = edges_begin();
581  while ( ll != edges_end() && (! (*ll).is_border()) &&
582  (!(*ll).opposite()->is_border() ))
583  ++ll;
584  if ( ll == edges_end())
585  // Done. No border edges found.
586  return;
587 
588  // An array of pointers to update the changed halfedge pointers.
589  typedef std::vector<Halfedge_iterator> HVector;
590  HVector hvector;
591  hvector.reserve( halfedges.size());
592  // Initialize it.
594  hvector.push_back( i);
595  }
596  CGAL_assertion( hvector.size() == halfedges.size());
597  typename HVector::iterator llhv = hvector.begin()+2*(ll-edges_begin());
598  // Start with the partitioning.
599  Edge_iterator rr = edges_end();
600  --rr;
601  typename HVector::iterator rrhv = hvector.end();
602  --rrhv;
603  --rrhv;
604  // Pivot is in *ll
605  // Elements in [rr+1..end) >= pivot (border)
606  // Elements in [begin..ll) < pivot (non border)
607  while (ll < rr) {
608  // Pivot is in *ll, ll <= rr.
609  while ( rr > ll && ((*rr).is_border() ||
610  (*rr).opposite()->is_border())) {
611  if ( ! (*rr).opposite()->is_border()) {
612  std::swap( *rr, *((*rr).opposite()));
613  update_opposite( rr);
614  std::swap( *rrhv, *(rrhv+1));
615  }
616  --rr;
617  --rrhv;
618  --rrhv;
619  }
620  // Elements in [rr+1..end) >= pivot (border)
621  // *rr <= pivot, ll <= rr.
622  std::swap( *((*ll).opposite()), *((*rr).opposite()));
623  std::swap( *ll, *rr);
624  update_opposite( ll);
625  update_opposite( rr);
626  std::swap( *(llhv+1), *(rrhv+1));
627  std::swap( *llhv, *rrhv);
628  // Elements in [begin..ll) < pivot
629  // Pivot is in *rr, ll <= rr.
630  while ( !(*ll).is_border() && !(*ll).opposite()->is_border()) {
631  ++ll;
632  ++llhv;
633  ++llhv;
634  }
635  // Elements in [begin..ll) < pivot
636  // *ll >= pivot
637  // ll <= rr (since *rr is pivot.)
638  CGAL_assertion( ll <= rr);
639  CGAL_assertion( llhv <= rrhv);
640  std::swap( *((*ll).opposite()), *((*rr).opposite()));
641  std::swap( *ll, *rr);
642  update_opposite( ll);
643  update_opposite( rr);
644  std::swap( *(llhv+1), *(rrhv+1));
645  std::swap( *llhv, *rrhv);
646  if ( ! (*rr).opposite()->is_border()) {
647  std::swap( *rr, *((*rr).opposite()));
648  update_opposite( rr);
649  std::swap( *rrhv, *(rrhv+1));
650  }
651  --rr;
652  --rrhv;
653  --rrhv;
654  // Elements in [rr+1..end) >= pivot
655  // Pivot is in *ll
656  }
657  CGAL_assertion( llhv >= rrhv);
658  // rr + 1 >= ll >= rr
659  // Elements in [rr+1..end) >= pivot
660  // Elemente in [begin..ll) < pivot
661  // Pivot is in a[ll]
662  if ( ll == rr) {
663  // Check for the possibly missed swap.
664  if ( (*rr).is_border() && ! ((*rr).opposite()->is_border())) {
665  std::swap( *rr, *((*rr).opposite()));
666  update_opposite( rr);
667  std::swap( *rrhv, *(rrhv+1));
668  }
669  }
670  CGAL_assertion( (*ll).opposite()->is_border());
671  CGAL_assertion( ll == edges_begin() || ! (*(ll-1)).is_border());
672  CGAL_assertion( ll == edges_begin() ||
673  ! (*(ll-1)).opposite()->is_border());
675  nb_border_edges = (edges_end() - ll);
677 
678  HVector inv_vector( halfedges.size());
679  // Initialize inverse index.
680  for ( typename HVector::iterator k = hvector.begin();
681  k != hvector.end(); ++k){
682  inv_vector[*k - halfedges_begin()] =
683  halfedges_begin() + (k - hvector.begin());
684  }
685 
686  // Update halfedge pointers.
687  for (Halfedge_iterator h =halfedges_begin(); h != halfedges_end();++h){
688  (*h).set_next( &* (inv_vector[ (*h).next() - &(halfedges.front())]));
689  update_prev( h, halfedges.begin(), inv_vector,
693  if ( (*h).is_border())
695  else
698  }
699 }
void swap(int &a, int &b)
Definition: buildface.cpp:88
#define CGAL_assertion(EX)
Definition: assertions.h:87
N_step_adaptor< Halfedge_iterator, 2, Halfedge &, Halfedge *, Halfedge, std::ptrdiff_t, iterator_category > Edge_iterator
j indices k indices k
Definition: Indexing.h:6
void update_prev(Halfedge_iterator, Halfedge_iterator, std::vector< Halfedge_iterator >, Tag_false)
blockLoc i
Definition: read.cpp:79
CGAL_BEGIN_NAMESPACE T opposite(const T &t)

Here is the call graph for this function:

void normalize_border ( )
Self& operator= ( const Self hds)
inline

Definition at line 297 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::delete_all(), Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_edges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

297  {
298  if ( this != &hds) {
299  delete_all();
300  vertices = hds.vertices;
301  halfedges = hds.halfedges;
302  facets = hds.facets;
303  nb_border_halfedges = hds.nb_border_halfedges;
304  nb_border_edges = hds.nb_border_edges;
305  border_halfedges = hds.border_halfedges;
306  pointer_update( hds.vertices.begin(),
307  hds.halfedges.begin(),
308  hds.facets.begin());
309  }
310  return *this;
311  }
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

Self& operator= ( const Self hds)
inline

Definition at line 319 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References Halfedge_data_structure_using_vector< V, H, F >::border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::delete_all(), Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_edges, Halfedge_data_structure_using_vector< V, H, F >::nb_border_halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

319  {
320  if ( this != &hds) {
321  delete_all();
322  vertices = hds.vertices;
323  halfedges = hds.halfedges;
324  facets = hds.facets;
325  nb_border_halfedges = hds.nb_border_halfedges;
326  nb_border_edges = hds.nb_border_edges;
327  border_halfedges = hds.border_halfedges;
328  pointer_update( hds.vertices.begin(),
329  hds.halfedges.begin(),
330  hds.facets.begin());
331  }
332  return *this;
333  }
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

void pointer_update ( Vertex_const_iterator  v_old,
Halfedge_const_iterator  h_old,
Facet_const_iterator  f_old 
)
private

Definition at line 545 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References CGAL_F_UPDATE, CGAL_H_UPDATE, CGAL_H_UPDATE_I, CGAL_V_UPDATE, Halfedge_data_structure_decorator< _HDS >::get_facet(), Halfedge_data_structure_decorator< _HDS >::get_prev(), Halfedge_data_structure_decorator< _HDS >::get_vertex(), Halfedge_data_structure_decorator< _HDS >::set_facet(), Halfedge_data_structure_decorator< _HDS >::set_facet_halfedge(), Halfedge_data_structure_decorator< _HDS >::set_prev(), Halfedge_data_structure_decorator< _HDS >::set_vertex(), and Halfedge_data_structure_decorator< _HDS >::set_vertex_halfedge().

Referenced by Halfedge_data_structure_using_vector< V, H, F >::Halfedge_data_structure_using_vector(), Halfedge_data_structure_using_vector< V, H, F >::operator=(), and Halfedge_data_structure_using_vector< V, H, F >::reserve().

547  {
548  // Update own pointers assuming that they lived previously
549  // in a halfedge data structure with vector starting addresses
550  // as given as parameters v_old, h_old, f_old.
552  Vertex_iterator v_new = vertices.begin();
553  Halfedge_iterator h_new = halfedges.begin();
554  Facet_iterator f_new = facets.begin();
555  for ( Halfedge_iterator h = halfedges.begin(); h != halfedges.end(); ++h) {
556  h->set_next( CGAL_H_UPDATE( h->next()));
557  h->H::set_opposite( CGAL_H_UPDATE( h->opposite()));
558  D.set_prev( &*h, CGAL_H_UPDATE( D.get_prev( &*h)));
559  D.set_vertex( &*h, CGAL_V_UPDATE( D.get_vertex( &*h)));
560  D.set_vertex_halfedge( &*h);
561  D.set_facet( &*h, CGAL_F_UPDATE( D.get_facet( &*h)));
562  if ( ! h->is_border())
563  D.set_facet_halfedge( &*h);
564  }
566 }
void set_facet_halfedge(Facet *f, Halfedge *g) const
void set_facet(Halfedge *h, Facet *f) const
void set_vertex_halfedge(Vertex *v, Halfedge *g) const
void set_vertex(Halfedge *h, Vertex *v) const
void set_prev(Halfedge *h, Halfedge *g) const

Here is the call graph for this function:

Here is the caller graph for this function:

void pointer_update ( Vertex_const_iterator  v_old,
Halfedge_const_iterator  h_old,
Facet_const_iterator  f_old 
)
private
void reserve ( Size  v,
Size  h,
Size  f 
)
inline

Definition at line 267 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

References check_tag(), Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

267  {
268  // reserve storage for v vertices, h halfedges, and f facets. The
269  // reservation sizes are a hint for optimizing storage allocation.
270  // If the `capacity' is already greater than the requested size
271  // nothing happens. If the `capacity' changes all iterators and
272  // circulators invalidates. Function is void here.
273  Vertex_iterator v_old = vertices.begin();
274  Halfedge_iterator h_old = halfedges.begin();
275  Facet_iterator f_old = facets.begin();
277  vertices.reserve(v);
278  halfedges.reserve(h);
280  facets.reserve(f);
281  pointer_update( v_old, h_old, f_old);
282  }
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
bool check_tag(Tag_true)
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

void reserve ( Size  v,
Size  h,
Size  f 
)
inline

Definition at line 289 of file include/CGAL/Halfedge_data_structure_using_vector.h.

References check_tag(), Halfedge_data_structure_using_vector< V, H, F >::facets, Halfedge_data_structure_using_vector< V, H, F >::halfedges, Halfedge_data_structure_using_vector< V, H, F >::pointer_update(), and Halfedge_data_structure_using_vector< V, H, F >::vertices.

289  {
290  // reserve storage for v vertices, h halfedges, and f facets. The
291  // reservation sizes are a hint for optimizing storage allocation.
292  // If the `capacity' is already greater than the requested size
293  // nothing happens. If the `capacity' changes all iterators and
294  // circulators invalidates. Function is void here.
295  Vertex_iterator v_old = vertices.begin();
296  Halfedge_iterator h_old = halfedges.begin();
297  Facet_iterator f_old = facets.begin();
299  vertices.reserve(v);
300  halfedges.reserve(h);
302  facets.reserve(f);
303  pointer_update( v_old, h_old, f_old);
304  }
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
bool check_tag(Tag_true)
void pointer_update(Vertex_const_iterator v_old, Halfedge_const_iterator h_old, Facet_const_iterator f_old)

Here is the call graph for this function:

void update_facet ( Halfedge_iterator  ,
Tag_false  ,
Tag_false   
)
inlineprotected
void update_facet ( Halfedge_iterator  ,
Tag_true  ,
Tag_false   
)
inlineprotected
void update_facet ( Halfedge_iterator  ,
Tag_false  ,
Tag_true   
)
inlineprotected
void update_facet ( Halfedge_iterator  h,
Tag_true  ,
Tag_true   
)
inlineprotected

Definition at line 480 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

480  {
481  h->facet()->set_halfedge(&*h);
482  }
void update_facet ( Halfedge_iterator  ,
Tag_false  ,
Tag_false   
)
inlineprotected

Definition at line 499 of file include/CGAL/Halfedge_data_structure_using_vector.h.

499 {}
void update_facet ( Halfedge_iterator  ,
Tag_true  ,
Tag_false   
)
inlineprotected

Definition at line 500 of file include/CGAL/Halfedge_data_structure_using_vector.h.

500 {}
void update_facet ( Halfedge_iterator  ,
Tag_false  ,
Tag_true   
)
inlineprotected

Definition at line 501 of file include/CGAL/Halfedge_data_structure_using_vector.h.

501 {}
void update_facet ( Halfedge_iterator  h,
Tag_true  ,
Tag_true   
)
inlineprotected

Definition at line 502 of file include/CGAL/Halfedge_data_structure_using_vector.h.

502  {
503  h->facet()->set_halfedge(&*h);
504  }
void update_opposite ( Halfedge_iterator  h)
inlineprotected

Definition at line 456 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

Referenced by Halfedge_data_structure_using_vector< V, H, F >::update_opposite().

456  {
457  Halfedge_iterator g = h + 1;
458  h->H::set_opposite( &*g);
459  g->H::set_opposite( &*h);
460  }

Here is the caller graph for this function:

void update_opposite ( Edge_iterator  h)
inlineprotected
void update_opposite ( Halfedge_iterator  h)
inlineprotected

Definition at line 478 of file include/CGAL/Halfedge_data_structure_using_vector.h.

478  {
479  Halfedge_iterator g = h + 1;
480  h->H::set_opposite( &*g);
481  g->H::set_opposite( &*h);
482  }
void update_opposite ( Edge_iterator  h)
inlineprotected
void update_prev ( Halfedge_iterator  ,
Halfedge_iterator  ,
std::vector< Halfedge_iterator ,
Tag_false   
)
inlineprotected

Definition at line 465 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

466  {}
void update_prev ( Halfedge_iterator  h,
Halfedge_iterator  base,
std::vector< Halfedge_iterator inv,
Tag_true   
)
inlineprotected

Definition at line 467 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

468  {
469  h->set_prev( &*(inv[ Halfedge_iterator(h->prev()) - base]));
470  }
void update_prev ( Halfedge_iterator  ,
Halfedge_iterator  ,
const std::vector< Halfedge_iterator > &  ,
Tag_false   
)
inlineprotected

Definition at line 487 of file include/CGAL/Halfedge_data_structure_using_vector.h.

488  {}
void update_prev ( Halfedge_iterator  h,
Halfedge_iterator  base,
const std::vector< Halfedge_iterator > &  inv,
Tag_true   
)
inlineprotected

Definition at line 489 of file include/CGAL/Halfedge_data_structure_using_vector.h.

490  {
491  h->set_prev( &*(inv[ Halfedge_iterator(h->prev()) - base]));
492  }
void update_vertex ( Halfedge_iterator  ,
Tag_false  ,
Tag_false   
)
inlineprotected
void update_vertex ( Halfedge_iterator  ,
Tag_true  ,
Tag_false   
)
inlineprotected
void update_vertex ( Halfedge_iterator  ,
Tag_false  ,
Tag_true   
)
inlineprotected
void update_vertex ( Halfedge_iterator  h,
Tag_true  ,
Tag_true   
)
inlineprotected

Definition at line 474 of file CGAL/include/CGAL/Halfedge_data_structure_using_vector.h.

474  {
475  h->vertex()->set_halfedge(&*h);
476  }
void update_vertex ( Halfedge_iterator  ,
Tag_false  ,
Tag_false   
)
inlineprotected

Definition at line 493 of file include/CGAL/Halfedge_data_structure_using_vector.h.

493 {}
void update_vertex ( Halfedge_iterator  ,
Tag_true  ,
Tag_false   
)
inlineprotected

Definition at line 494 of file include/CGAL/Halfedge_data_structure_using_vector.h.

494 {}
void update_vertex ( Halfedge_iterator  ,
Tag_false  ,
Tag_true   
)
inlineprotected

Definition at line 495 of file include/CGAL/Halfedge_data_structure_using_vector.h.

495 {}
void update_vertex ( Halfedge_iterator  h,
Tag_true  ,
Tag_true   
)
inlineprotected

Definition at line 496 of file include/CGAL/Halfedge_data_structure_using_vector.h.

496  {
497  h->vertex()->set_halfedge(&*h);
498  }

Member Data Documentation


The documentation for this class was generated from the following files: