CGAL 5.0 - Handles and Circulators
|
Iterators and circulators as well as different categories of circulators can be distinguished with the use of discriminating functions and the following circulator tags.
A couple of base classes simplify the task of writing own circulators. They declare the appropriate tags and the local types needed for circulators. To use the tags or base classes only it is sufficient to include:
query_circulator_or_iterator
Circulator_traits
Assert_circulator
CGAL_For_all
is_empty_range
Circulator
Example
The above declarations can be used to distinguish between iterators and circulators and between different circulator categories. The assertions can be used to protect a templatized algorithm against instantiations that do not fulfill the requirements. The following example program illustrates both.
File Circulator/circulator_prog3.cpp
Classes | |
struct | CGAL::Circulator_tag |
A tag for any circulator type. More... | |
struct | CGAL::Iterator_tag |
A tag for any iterator type. More... | |
struct | CGAL::Forward_circulator_tag |
struct | CGAL::Bidirectional_circulator_tag |
struct | CGAL::Random_access_circulator_tag |