Handles, Ranges and Circulators
Reference Manual

Olivier Devillers, Lutz Kettner, Sylvain Pion, Michael Seel, and Mariette Yvinec

The concept of iterators in the STL is tailored for linear sequences.

Cgal extends this in several directions. First, it supports the notion of Handle (also sometimes refered to as the trivial iterator) which is used to document that no traversal operation is needed, only reference to an element. It also uses the Range and ConstRange concepts which encapsulates the access to both the first and the past-the-end iterators of an iterator range.

Besides linear sequences, circular sequences also occur naturally in many combinatorial and geometric structures. Examples are polyhedral surfaces and planar maps, where the edges emanating from a vertex or the edges around a facet form a circular sequence.

We provide several functions, classes and macros to assist in working with circulators: distance computation, adaptor classes converting between circulators and iterators, base classes to ease the implementation of circulators, and support for generic algorithms that work with circulators as well as with iterators.

76.4   Classified Reference Pages

Concepts

Handle
Range
ConstRange
Circulator
Forward_circulator
Bidirectional_circulator
Random_access_circulator

Classes

CGAL::Container_from_circulator<C>
CGAL::Circulator_from_iterator<I>
CGAL::Circulator_from_container<C>
CGAL::Const_circulator_from_container<C>

CGAL::Circulator_tag
CGAL::Iterator_tag
CGAL::Forward_circulator_tag
CGAL::Bidirectional_circulator_tag
CGAL::Random_access_circulator_tag

CGAL::Circulator_base
CGAL::Forward_circulator_base
CGAL::Bidirectional_circulator_base
CGAL::Random_access_circulator_base

CGAL::Circulator_traits<C>

Functions

size_type CGAL::circulator_size ( C c)
difference_type CGAL::circulator_distance ( C c, C d)
difference_type CGAL::iterator_distance ( IC ic1, IC ic2)
bool CGAL::is_empty_range ( IC i, IC j)

CGAL::Circulator_tag CGAL::query_circulator_or_iterator ( C c)
CGAL::Iterator_tag CGAL::query_circulator_or_iterator ( I i)

void CGAL::Assert_circulator ( C c)
void CGAL::Assert_iterator ( I i)
void CGAL::Assert_input_category ( I i)
void CGAL::Assert_output_category ( I i)
void CGAL::Assert_forward_category ( IC ic)
void CGAL::Assert_bidirectional_category ( IC ic)
void CGAL::Assert_random_access_category ( IC ic)
void CGAL::Assert_circulator_or_iterator ( IC i)

Macros

CGAL_For_all(i,j)
CGAL_For_all_backwards(i,j)

76.5   Alphabetical List of Reference Pages

Assert_circulator
CGAL_For_all
circulator_distance
Circulator_from_container<C>
Circulator_from_iterator<I>
circulator_size
Circulator_tag
Circulator_traits<C>
Circulator
ConstRange
Container_from_circulator<C>
Handle
is_empty_range
iterator_distance
query_circulator_or_iterator
Range