mark function from Concept as such (in comment) and update TODO

This commit is contained in:
Samuel Hornus 2011-05-10 21:33:05 +00:00
parent f17dfaca4e
commit 35ccb9ff86
2 changed files with 133 additions and 109 deletions

View File

@ -1,6 +1,8 @@
__________________________________________________________________________RENAMING __________________________________________________________________________RENAMING
doc *) doc :
--------
Pure_complex Triangulation Pure_complex Triangulation
Delaunay_complex Delaunay_triangulation Delaunay_complex Delaunay_triangulation
@ -21,48 +23,61 @@ Pure_complex_vertex Triangulation_vertex
RegularComplexTraits RegularTriangulationTraits RegularComplexTraits RegularTriangulationTraits
Regular_complex Regular_triangulation Regular_complex Regular_triangulation
code *) code not done :
------------------
[DONE] /Pure_complex/Triangulation/
[DONE] /Delaunay_complex/Delaunay_triangulation/
[DONE] /Simplex/Full_cell/
[DONE] /simplex/full_cell/
[DONE] /number_of_simplices/number_of_full_cells/
[DONE] /gather_simplices/gather_full_cells/
[DONE] /gather_incident_simplices/incident_full_cells/
[DONE] /gather_adjacent_simplices/compute_star/
but why not star?
[DONE] /contract_face/collapse_face/
[DONE] /index_of/index/
/is_finite/! is_infinite/ /is_finite/! is_infinite/
[DONE] /contract_face/collapse_face/
[DONE] /full_cell_of/full_cell/
is_boundary_facet is_boundary_facet
to remove (comment) (sam: I find them useful!) *) code done :
--------------
/Pure_complex/Triangulation/
/Delaunay_complex/Delaunay_triangulation/
/Simplex/Full_cell/
/simplex/full_cell/
/number_of_simplices/number_of_full_cells/
/gather_simplices/gather_full_cells/
/gather_incident_simplices/incident_full_cells/
/gather_adjacent_simplices/compute_star/
but why not star?
/contract_face/collapse_face/
/index_of/index/
/contract_face/collapse_face/
/full_cell_of/full_cell/
*) to remove (comment) :
------------------------
gather_incident_faces gather_incident_faces
gather_incident_upper_faces gather_incident_upper_faces (sam: I find them useful!)
__________________________________________________________________________ALL __________________________________________________________________________ALL
*) FUTURE: better system for simplex's flag (visited) *) FUTURE: better system for simplex's flag (visited)
_________________________________________________________________________PCDS
_________________________________________________________________PURE_COMPLEX _________________________________________________TRIANGULATION_DATA_STRUCTURE
_____________________________________________________________DELAUNAY_COMPLEX *) TriangulationDataStructure.tex:
- Remove the precise type definition in the documentation of the type Facet
Or write typedef CGAL::cpp0x::tuple<Full_cell_handle, int> Facet;
- full_cell_of(Facet) OR full_cell(Facet) ?
- OK, virer is_boundary_facet de la doc du concept : à mettre dans la doc
de la classe ?
- idem pour insert_in_tagged_hole.
- Should we put >> and << in the documentation of the class
Triangulation_data_structure ?
______________________________________________________________REGULAR_COMPLEX *) Triangulation_data_structure.h:
- Ensure that it is topologically possible to collapse the Face in
collapse_face(Face)
________________________________________________________________TRIANGULATION
*) write Regular_complex.h (!) _______________________________________________________DELAUNAY_TRIANGULATION
*) write RegularComplexTraits.tex
*) write Regular_complex.tex
_______________________________________________________________________KERNEL
... ________________________________________________________REGULAR_TRIANGULATION
*) write Regular_triangulaion.h (!)
*) write RegularTriangulationTraits.tex
*) write Regular_triangulation.tex

View File

@ -47,8 +47,8 @@ class Triangulation_data_structure
typedef typename Default::Get<Sb, Triangulation_ds_full_cell<> >::type S_base; typedef typename Default::Get<Sb, Triangulation_ds_full_cell<> >::type S_base;
public: public:
typedef typename V_base::template Rebind_TDS<Self>::Other Vertex; typedef typename V_base::template Rebind_TDS<Self>::Other Vertex; /* Concept */
typedef typename S_base::template Rebind_TDS<Self>::Other Full_cell; typedef typename S_base::template Rebind_TDS<Self>::Other Full_cell; /* Concept */
protected: protected:
typedef Compact_container<Vertex> Vertex_container; typedef Compact_container<Vertex> Vertex_container;
@ -57,21 +57,21 @@ protected:
public: public:
typedef Dimen Ambient_dimension; typedef Dimen Ambient_dimension;
typedef typename Vertex_container::size_type size_type; typedef typename Vertex_container::size_type size_type; /* Concept */
typedef typename Vertex_container::difference_type difference_type; typedef typename Vertex_container::difference_type difference_type; /* Concept */
typedef typename Vertex_container::iterator Vertex_handle; typedef typename Vertex_container::iterator Vertex_handle; /* Concept */
typedef typename Vertex_container::iterator Vertex_iterator; typedef typename Vertex_container::iterator Vertex_iterator; /* Concept */
typedef typename Vertex_container::const_iterator Vertex_const_handle; typedef typename Vertex_container::const_iterator Vertex_const_handle;
typedef typename Vertex_container::const_iterator Vertex_const_iterator; typedef typename Vertex_container::const_iterator Vertex_const_iterator;
typedef typename Full_cell_container::iterator Full_cell_handle; typedef typename Full_cell_container::iterator Full_cell_handle; /* Concept */
typedef typename Full_cell_container::iterator Full_cell_iterator; typedef typename Full_cell_container::iterator Full_cell_iterator; /* Concept */
typedef typename Full_cell_container::const_iterator Full_cell_const_handle; typedef typename Full_cell_container::const_iterator Full_cell_const_handle;
typedef typename Full_cell_container::const_iterator Full_cell_const_iterator; typedef typename Full_cell_container::const_iterator Full_cell_const_iterator;
typedef internal::Triangulation::Triangulation_ds_facet_iterator<Self> typedef internal::Triangulation::
Facet_iterator; Triangulation_ds_facet_iterator<Self> Facet_iterator; /* Concept */
/* The 2 types defined below, |Facet| and |Rotor| are used when traversing /* The 2 types defined below, |Facet| and |Rotor| are used when traversing
the boundary `B' of the union of a set of full cells. |Rotor| makes it the boundary `B' of the union of a set of full cells. |Rotor| makes it
@ -79,14 +79,14 @@ public:
|rotate_rotor| and |insert_in_tagged_hole|) */ |rotate_rotor| and |insert_in_tagged_hole|) */
// A co-dimension 1 sub-simplex. // A co-dimension 1 sub-simplex.
typedef cpp0x::tuple<Full_cell_handle, int> Facet; typedef cpp0x::tuple<Full_cell_handle, int> Facet; /* Concept */
// A co-dimension 2 sub-simplex. called a Rotor because we can rotate // A co-dimension 2 sub-simplex. called a Rotor because we can rotate
// the two "covertices" around the sub-simplex. Useful for traversing the // the two "covertices" around the sub-simplex. Useful for traversing the
// boundary of a hole. NOT DOCUMENTED // boundary of a hole. NOT DOCUMENTED
typedef cpp0x::tuple<Full_cell_handle, int, int> Rotor; typedef cpp0x::tuple<Full_cell_handle, int, int> Rotor;
typedef Triangulation_face<Self> Face; typedef Triangulation_face<Self> Face; /* Concept */
protected: // DATA MEMBERS protected: // DATA MEMBERS
@ -116,7 +116,7 @@ private:
public: public:
Triangulation_data_structure(const int dim) Triangulation_data_structure(const int dim) /* Concept */
: dmax_(get_ambient_dimension<Dimen>::value(dim)), dcur_(-2), vertices_(), full_cells_() : dmax_(get_ambient_dimension<Dimen>::value(dim)), dcur_(-2), vertices_(), full_cells_()
{ {
CGAL_assertion_msg(dmax_ > 0, "ambient dimension must be positive."); CGAL_assertion_msg(dmax_ > 0, "ambient dimension must be positive.");
@ -143,32 +143,41 @@ protected:
public: public:
/* returns the current dimension of the full cells in the triangulation. */ /* returns the current dimension of the full cells in the triangulation. */
int ambient_dimension() const { return dmax_; } int ambient_dimension() const { return dmax_; } /* Concept */
int current_dimension() const { return dcur_; } int current_dimension() const { return dcur_; } /* Concept */
size_type number_of_vertices() const { return this->vertices_.size();} size_type number_of_vertices() const /* Concept */
size_type number_of_full_cells() const { return this->full_cells_.size();} {
return this->vertices_.size();
}
size_type number_of_full_cells() const /* Concept */
{
return this->full_cells_.size();
}
bool empty() const { return current_dimension() == -2; } bool empty() const /* Concept */
{
return current_dimension() == -2;
}
Vertex_container & vertices() { return vertices_; } Vertex_container & vertices() { return vertices_; }
const Vertex_container & vertices() const { return vertices_; } const Vertex_container & vertices() const { return vertices_; }
Full_cell_container & full_cells() { return full_cells_; } Full_cell_container & full_cells() { return full_cells_; }
const Full_cell_container & full_cells() const { return full_cells_; } const Full_cell_container & full_cells() const { return full_cells_; }
Vertex_handle vertex(const Full_cell_handle s, const int i) const Vertex_handle vertex(const Full_cell_handle s, const int i) const /* Concept */
{ {
CGAL_precondition(s != Full_cell_handle() && check_range(i)); CGAL_precondition(s != Full_cell_handle() && check_range(i));
return s->vertex(i); return s->vertex(i);
} }
Vertex_const_handle vertex(const Full_cell_const_handle s, const int i) const Vertex_const_handle vertex(const Full_cell_const_handle s, const int i) const /* Concept */
{ {
CGAL_precondition(s != Full_cell_handle() && check_range(i)); CGAL_precondition(s != Full_cell_handle() && check_range(i));
return s->vertex(i); return s->vertex(i);
} }
bool is_vertex(const Vertex_const_handle & v) const bool is_vertex(const Vertex_const_handle & v) const /* Concept */
{ {
if( Vertex_const_handle() == v ) if( Vertex_const_handle() == v )
return false; return false;
@ -178,7 +187,7 @@ public:
return v == vit; return v == vit;
} }
bool is_full_cell(const Full_cell_const_handle & s) const bool is_full_cell(const Full_cell_const_handle & s) const /* Concept */
{ {
if( Full_cell_const_handle() == s ) if( Full_cell_const_handle() == s )
return false; return false;
@ -188,31 +197,31 @@ public:
return s == sit; return s == sit;
} }
Full_cell_handle full_cell(const Vertex_handle v) const Full_cell_handle full_cell(const Vertex_handle v) const /* Concept */
{ {
CGAL_precondition(v != Vertex_handle()); CGAL_precondition(v != Vertex_handle());
return v->full_cell(); return v->full_cell();
} }
Full_cell_const_handle full_cell(const Vertex_const_handle v) const Full_cell_const_handle full_cell(const Vertex_const_handle v) const /* Concept */
{ {
CGAL_precondition(Vertex_const_handle() != v); CGAL_precondition(Vertex_const_handle() != v);
return v->full_cell(); return v->full_cell();
} }
Full_cell_handle neighbor(const Full_cell_handle s, const int i) const Full_cell_handle neighbor(const Full_cell_handle s, const int i) const /* Concept */
{ {
CGAL_precondition(Full_cell_handle() != s && check_range(i)); CGAL_precondition(Full_cell_handle() != s && check_range(i));
return s->neighbor(i); return s->neighbor(i);
} }
Full_cell_const_handle neighbor(const Full_cell_const_handle s, const int i) const Full_cell_const_handle neighbor(const Full_cell_const_handle s, const int i) const/* Concept */
{ {
CGAL_precondition(Full_cell_const_handle() != s && check_range(i)); CGAL_precondition(Full_cell_const_handle() != s && check_range(i));
return s->neighbor(i); return s->neighbor(i);
} }
int mirror_index(const Full_cell_handle s, const int i) const int mirror_index(const Full_cell_handle s, const int i) const /* Concept */
{ {
CGAL_precondition(Full_cell_handle() != s && check_range(i)); CGAL_precondition(Full_cell_handle() != s && check_range(i));
return s->mirror_index(i); return s->mirror_index(i);
@ -220,13 +229,13 @@ public:
int mirror_index(const Full_cell_const_handle s, const int i) const int mirror_index(const Full_cell_const_handle s, const int i) const
{ {
CGAL_precondition(Full_cell_const_handle() != s && check_range(i)); CGAL_precondition(Full_cell_const_handle() != s && check_range(i)); /* Concept */
return s->mirror_index(i); return s->mirror_index(i);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACETS OPERATIONS // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACETS OPERATIONS
Face make_empty_face() const Face make_empty_face() const /* Concept */
{ {
return Face(ambient_dimension()); return Face(ambient_dimension());
} }
@ -234,7 +243,7 @@ public:
// works for Face_ = Facet and Face_ = Rotor. // works for Face_ = Facet and Face_ = Rotor.
// NOT DOCUMENTED for the Rotor case... // NOT DOCUMENTED for the Rotor case...
template< typename Face_ > template< typename Face_ >
Full_cell_handle full_cell(const Face_ & f) const Full_cell_handle full_cell(const Face_ & f) const /* Concept */
{ {
return cpp0x::get<0>(f); return cpp0x::get<0>(f);
} }
@ -242,7 +251,7 @@ public:
// works for Face_ = Facet and Face_ = Rotor. // works for Face_ = Facet and Face_ = Rotor.
// NOT DOCUMENTED for the Rotor case... // NOT DOCUMENTED for the Rotor case...
template< class Face_ > template< class Face_ >
int index_of_covertex(const Face_ & f) const int index_of_covertex(const Face_ & f) const /* Concept */
{ {
return cpp0x::get<1>(f); return cpp0x::get<1>(f);
} }
@ -282,23 +291,23 @@ protected:
public: public:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REMOVALS // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REMOVALS
Vertex_handle collapse_face(const Face &); Vertex_handle collapse_face(const Face &); /* Concept */
void remove_decrease_dimension(Vertex_handle, Vertex_handle); void remove_decrease_dimension(Vertex_handle, Vertex_handle); /* Concept */
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - INSERTIONS // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - INSERTIONS
Vertex_handle insert_in_full_cell(Full_cell_handle); Vertex_handle insert_in_full_cell(Full_cell_handle); /* Concept */
Vertex_handle insert_in_face(const Face &); Vertex_handle insert_in_face(const Face &); /* Concept */
Vertex_handle insert_in_facet(const Facet &); Vertex_handle insert_in_facet(const Facet &); /* Concept */
template< typename Forward_iterator > template< typename Forward_iterator >
Vertex_handle insert_in_hole(Forward_iterator, const Forward_iterator, Facet); Vertex_handle insert_in_hole(Forward_iterator, const Forward_iterator, Facet); /* Concept */
template< typename Forward_iterator, typename OutputIterator > template< typename Forward_iterator, typename OutputIterator >
Vertex_handle insert_in_hole(Forward_iterator, const Forward_iterator, Facet, OutputIterator); Vertex_handle insert_in_hole(Forward_iterator, const Forward_iterator, Facet, OutputIterator); /* Concept */
template< typename OutputIterator > template< typename OutputIterator >
Full_cell_handle insert_in_tagged_hole(Vertex_handle, Facet, OutputIterator); Full_cell_handle insert_in_tagged_hole(Vertex_handle, Facet, OutputIterator);
Vertex_handle insert_increase_dimension(Vertex_handle); Vertex_handle insert_increase_dimension(Vertex_handle); /* Concept */
// NOT DOCUMENTED // NOT DOCUMENTED
void clear_visited_marks(Full_cell_handle) const; void clear_visited_marks(Full_cell_handle) const;
@ -329,13 +338,13 @@ public:
s->set_flags(flags); s->set_flags(flags);
} }
void clear() void clear() /* Concept */
{ {
clean_dynamic_memory(); clean_dynamic_memory();
dcur_ = -2; dcur_ = -2;
} }
void set_current_dimension(const int d) void set_current_dimension(const int d) /* Concept */
{ {
CGAL_precondition(-1<=d && d<=ambient_dimension()); CGAL_precondition(-1<=d && d<=ambient_dimension());
dcur_ = d; dcur_ = d;
@ -346,12 +355,12 @@ public:
return full_cells_.emplace(*s); return full_cells_.emplace(*s);
} }
Full_cell_handle new_full_cell() Full_cell_handle new_full_cell() /* Concept */
{ {
return full_cells_.emplace(dmax_); return full_cells_.emplace(dmax_);
} }
void delete_full_cell(Full_cell_handle s) void delete_full_cell(Full_cell_handle s) /* Concept */
{ {
CGAL_precondition(Full_cell_handle() != s); CGAL_precondition(Full_cell_handle() != s);
// CGAL_expensive_precondition(is_full_cell(s)); // CGAL_expensive_precondition(is_full_cell(s));
@ -359,7 +368,7 @@ public:
} }
template< typename Forward_iterator > template< typename Forward_iterator >
void delete_full_cells(Forward_iterator start, Forward_iterator end) void delete_full_cells(Forward_iterator start, Forward_iterator end) /* Concept */
{ {
Forward_iterator s = start; Forward_iterator s = start;
while( s != end ) while( s != end )
@ -372,18 +381,18 @@ public:
return vertices_.emplace(t); return vertices_.emplace(t);
} }
Vertex_handle new_vertex() Vertex_handle new_vertex() /* Concept */
{ {
return vertices_.emplace(); return vertices_.emplace();
} }
void delete_vertex(Vertex_handle v) void delete_vertex(Vertex_handle v) /* Concept */
{ {
CGAL_precondition( Vertex_handle() != v ); CGAL_precondition( Vertex_handle() != v );
vertices_.erase(v); vertices_.erase(v);
} }
void associate_vertex_with_full_cell(Full_cell_handle s, const int i, Vertex_handle v) void associate_vertex_with_full_cell(Full_cell_handle s, const int i, Vertex_handle v) /* Concept */
{ {
CGAL_precondition(check_range(i)); CGAL_precondition(check_range(i));
CGAL_precondition(s != Full_cell_handle()); CGAL_precondition(s != Full_cell_handle());
@ -392,7 +401,7 @@ public:
v->set_full_cell(s); v->set_full_cell(s);
} }
void set_neighbors(Full_cell_handle s, int i, Full_cell_handle s1, int j) void set_neighbors(Full_cell_handle s, int i, Full_cell_handle s1, int j) /* Concept */
{ {
CGAL_precondition(check_range(i)); CGAL_precondition(check_range(i));
CGAL_precondition(check_range(j)); CGAL_precondition(check_range(j));
@ -406,7 +415,7 @@ public:
// SANITY CHECKS // SANITY CHECKS
bool is_valid(bool = true, int = 0) const; bool is_valid(bool = true, int = 0) const; /* Concept */
/* op Partially checks whether |\Mvar| is an abstract simplicial /* op Partially checks whether |\Mvar| is an abstract simplicial
complex. This function terminates without error if each vertex is a complex. This function terminates without error if each vertex is a
vertex of the full_cell of which it claims to be a vertex, if the vertex of the full_cell of which it claims to be a vertex, if the
@ -420,23 +429,23 @@ public:
// NOT DOCUMENTED // NOT DOCUMENTED
template< class OutStream> void write_graph(OutStream &); template< class OutStream> void write_graph(OutStream &);
Vertex_iterator vertices_begin() { return vertices_.begin(); } Vertex_iterator vertices_begin() { return vertices_.begin(); } /* Concept */
Vertex_iterator vertices_end() { return vertices_.end(); } Vertex_iterator vertices_end() { return vertices_.end(); } /* Concept */
Full_cell_iterator full_cells_begin() { return full_cells_.begin(); } Full_cell_iterator full_cells_begin() { return full_cells_.begin(); } /* Concept */
Full_cell_iterator full_cells_end() { return full_cells_.end(); } Full_cell_iterator full_cells_end() { return full_cells_.end(); } /* Concept */
Vertex_const_iterator vertices_begin() const { return vertices_.begin(); } Vertex_const_iterator vertices_begin() const { return vertices_.begin(); } /* Concept */
Vertex_const_iterator vertices_end() const { return vertices_.end(); } Vertex_const_iterator vertices_end() const { return vertices_.end(); } /* Concept */
Full_cell_const_iterator full_cells_begin() const { return full_cells_.begin(); } Full_cell_const_iterator full_cells_begin() const { return full_cells_.begin(); } /* Concept */
Full_cell_const_iterator full_cells_end() const { return full_cells_.end(); } Full_cell_const_iterator full_cells_end() const { return full_cells_.end(); } /* Concept */
Facet_iterator facets_begin() Facet_iterator facets_begin() /* Concept */
{ {
if( current_dimension() <= 0 ) if( current_dimension() <= 0 )
return facets_end(); return facets_end();
return Facet_iterator(*this); return Facet_iterator(*this);
} }
Facet_iterator facets_end() Facet_iterator facets_end() /* Concept */
{ {
return Facet_iterator(*this, 0); return Facet_iterator(*this, 0);
} }
@ -496,13 +505,13 @@ public:
}; };
template< typename TraversalPredicate, typename OutputIterator > template< typename TraversalPredicate, typename OutputIterator >
Facet gather_full_cells(Full_cell_handle, TraversalPredicate &, OutputIterator &) const; Facet gather_full_cells(Full_cell_handle, TraversalPredicate &, OutputIterator &) const; /* Concept */
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator incident_full_cells(const Face &, OutputIterator) const; OutputIterator incident_full_cells(const Face &, OutputIterator) const; /* Concept */
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator incident_full_cells(Vertex_const_handle, OutputIterator) const; OutputIterator incident_full_cells(Vertex_const_handle, OutputIterator) const; /* Concept */
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator compute_star(const Face &, OutputIterator) const; OutputIterator compute_star(const Face &, OutputIterator) const; /* Concept */
#ifndef CGAL_CFG_NO_CPP0X_DEFAULT_TEMPLATE_ARGUMENTS_FOR_FUNCTION_TEMPLATES #ifndef CGAL_CFG_NO_CPP0X_DEFAULT_TEMPLATE_ARGUMENTS_FOR_FUNCTION_TEMPLATES
template< typename OutputIterator, typename Comparator = std::less<Vertex_const_handle> > template< typename OutputIterator, typename Comparator = std::less<Vertex_const_handle> >
OutputIterator incident_upper_faces(Vertex_const_handle v, const int d, OutputIterator out, Comparator cmp = Comparator()) OutputIterator incident_upper_faces(Vertex_const_handle v, const int d, OutputIterator out, Comparator cmp = Comparator())
@ -547,7 +556,7 @@ template< class Dim, class Vb, class Sb >
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator OutputIterator
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::incident_full_cells(const Face & f, OutputIterator out) const ::incident_full_cells(const Face & f, OutputIterator out) const /* Concept */
{ {
// CGAL_expensive_precondition_msg(is_full_cell(f.full_cell()), "the facet does not belong to the Triangulation"); // CGAL_expensive_precondition_msg(is_full_cell(f.full_cell()), "the facet does not belong to the Triangulation");
Incident_full_cell_traversal_predicate tp(*this, f); Incident_full_cell_traversal_predicate tp(*this, f);
@ -559,7 +568,7 @@ template< class Dim, class Vb, class Sb >
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator OutputIterator
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::incident_full_cells(Vertex_const_handle v, OutputIterator out) const ::incident_full_cells(Vertex_const_handle v, OutputIterator out) const /* Concept */
{ {
// CGAL_expensive_precondition(is_vertex(v)); // CGAL_expensive_precondition(is_vertex(v));
CGAL_precondition(Vertex_handle() != v); CGAL_precondition(Vertex_handle() != v);
@ -572,7 +581,7 @@ template< class Dim, class Vb, class Sb >
template< typename OutputIterator > template< typename OutputIterator >
OutputIterator OutputIterator
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::compute_star(const Face & f, OutputIterator out) const ::compute_star(const Face & f, OutputIterator out) const /* Concept */
{ {
// CGAL_precondition_msg(is_full_cell(f.full_cell()), "the facet does not belong to the Triangulation"); // CGAL_precondition_msg(is_full_cell(f.full_cell()), "the facet does not belong to the Triangulation");
Star_traversal_predicate tp(*this, f); Star_traversal_predicate tp(*this, f);
@ -586,7 +595,7 @@ typename Triangulation_data_structure<Dim, Vb, Sb>::Facet
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::gather_full_cells(Full_cell_handle start, ::gather_full_cells(Full_cell_handle start,
TraversalPredicate & tp, TraversalPredicate & tp,
OutputIterator & out) const OutputIterator & out) const /* Concept */
{ {
std::queue<Full_cell_handle> queue; std::queue<Full_cell_handle> queue;
set_visited(start, true); set_visited(start, true);
@ -709,7 +718,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb> template <class Dim, class Vb, class Sb>
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::collapse_face(const Face & f) ::collapse_face(const Face & f) /* Concept */
{ {
const int fd = f.feature_dimension(); const int fd = f.feature_dimension();
CGAL_precondition( (1 <= fd ) && (fd < current_dimension())); CGAL_precondition( (1 <= fd ) && (fd < current_dimension()));
@ -731,7 +740,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb> template <class Dim, class Vb, class Sb>
void void
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::remove_decrease_dimension(Vertex_handle v, Vertex_handle star) ::remove_decrease_dimension(Vertex_handle v, Vertex_handle star) /* Concept */
{ {
CGAL_assertion( current_dimension() >= -1 ); CGAL_assertion( current_dimension() >= -1 );
if( -1 == current_dimension() ) if( -1 == current_dimension() )
@ -803,7 +812,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb> template <class Dim, class Vb, class Sb>
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_in_full_cell(Full_cell_handle s) ::insert_in_full_cell(Full_cell_handle s) /* Concept */
{ {
CGAL_precondition(0 < current_dimension()); CGAL_precondition(0 < current_dimension());
CGAL_precondition(Full_cell_handle() != s); CGAL_precondition(Full_cell_handle() != s);
@ -835,7 +844,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb > template <class Dim, class Vb, class Sb >
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_in_face(const Face & f) ::insert_in_face(const Face & f) /* Concept */
{ {
std::vector<Full_cell_handle> simps; std::vector<Full_cell_handle> simps;
simps.reserve(64); simps.reserve(64);
@ -846,7 +855,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb > template <class Dim, class Vb, class Sb >
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_in_facet(const Facet & ft) ::insert_in_facet(const Facet & ft) /* Concept */
{ {
Full_cell_handle s[2]; Full_cell_handle s[2];
s[0] = full_cell(ft); s[0] = full_cell(ft);
@ -924,7 +933,7 @@ template< typename Forward_iterator, typename OutputIterator >
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_in_hole(Forward_iterator start, Forward_iterator end, Facet f, ::insert_in_hole(Forward_iterator start, Forward_iterator end, Facet f,
OutputIterator out) OutputIterator out) /* Concept */
{ {
CGAL_expensive_precondition( CGAL_expensive_precondition(
( std::distance(start, end) == 1 ) ( std::distance(start, end) == 1 )
@ -942,7 +951,7 @@ template< class Dim, class Vb, class Sb >
template< typename Forward_iterator > template< typename Forward_iterator >
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_in_hole(Forward_iterator start, Forward_iterator end, Facet f) ::insert_in_hole(Forward_iterator start, Forward_iterator end, Facet f) /* Concept */
{ {
Emptyset_iterator out; Emptyset_iterator out;
return insert_in_hole(start, end, f, out); return insert_in_hole(start, end, f, out);
@ -1056,7 +1065,7 @@ void Triangulation_data_structure<Dim, Vb, Sb>
template <class Dim, class Vb, class Sb> template <class Dim, class Vb, class Sb>
typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle typename Triangulation_data_structure<Dim, Vb, Sb>::Vertex_handle
Triangulation_data_structure<Dim, Vb, Sb> Triangulation_data_structure<Dim, Vb, Sb>
::insert_increase_dimension(Vertex_handle star = Vertex_handle()) ::insert_increase_dimension(Vertex_handle star = Vertex_handle()) /* Concept */
{ {
const int prev_cur_dim = current_dimension(); const int prev_cur_dim = current_dimension();
CGAL_precondition(prev_cur_dim < ambient_dimension()); CGAL_precondition(prev_cur_dim < ambient_dimension());
@ -1104,7 +1113,7 @@ Triangulation_data_structure<Dim, Vb, Sb>
template <class Dimen, class Vb, class Sb> template <class Dimen, class Vb, class Sb>
bool Triangulation_data_structure<Dimen, Vb, Sb> bool Triangulation_data_structure<Dimen, Vb, Sb>
::is_valid(bool verbose, int /* level */) const ::is_valid(bool verbose, int /* level */) const /* Concept */
{ {
Full_cell_const_handle s, t; Full_cell_const_handle s, t;
Vertex_const_handle v; Vertex_const_handle v;