mirror of https://github.com/CGAL/cgal
1876 lines
64 KiB
TeX
1876 lines
64 KiB
TeX
%% =============================================================================
|
|
%% The CGAL Reference Manual
|
|
%% Chapter: STL Extensions - The Reference Part
|
|
%% -----------------------------------------------------------------------------
|
|
%% file : doc_tex/support/STL_Extension/STL_Extension_ref/stl_extension.tex
|
|
%% author: Michael Hoffmann, Lutz Kettner
|
|
%% -----------------------------------------------------------------------------
|
|
%% $CGAL_Chapter: STL_Extension $
|
|
%% $Id$
|
|
%% $Date$
|
|
%% =============================================================================
|
|
|
|
%% +=========================================================================+
|
|
|
|
%% +---------------------------------------------+
|
|
\begin{ccRefFunction}{predecessor}
|
|
\label{sectionPredecessor}
|
|
\label{sectionGenericFunctions}
|
|
|
|
\ccDefinition The function \ccRefName\ returns the previous iterator,
|
|
i.e. the result of \ccc{operator--} on a bidirectional iterator.
|
|
|
|
\ccInclude{CGAL/algorithm.h}
|
|
|
|
\ccThree{BidirectionalIterator}{predecessor}{}
|
|
\ccFunction{template <class BidirectionalIterator>
|
|
BidirectionalIterator predecessor(BidirectionalIterator it);}
|
|
{returns \ccc{--it}.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::successor}
|
|
\end{ccRefFunction}
|
|
|
|
%% +---------------------------------------------+
|
|
\begin{ccRefFunction}{successor}
|
|
\label{sectionSuccessor}
|
|
|
|
\ccDefinition The function \ccRefName\ returns the next iterator, i.e.
|
|
the result of \ccc{operator++} on a forward iterator.
|
|
|
|
\ccInclude{CGAL/algorithm.h}
|
|
|
|
\ccThree{ForwardIterator}{successor}{}
|
|
\ccFunction{template <class ForwardIterator>
|
|
ForwardIterator successor(ForwardIterator it);}
|
|
{returns \ccc{++it}.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::predecessor}
|
|
\end{ccRefFunction}
|
|
|
|
%% +---------------------------------------------+
|
|
\begin{ccRefFunction}{copy_n}
|
|
\label{sectionCopyN}
|
|
|
|
\ccDefinition The function \ccRefName\ copies $n$ items from an
|
|
input iterator to an output iterator which is useful for possibly
|
|
infinite
|
|
sequences of random geometric objects.\footnote{%
|
|
The \stl\ release June 13, 1997, from SGI contains an equivalent
|
|
function, but it is not part of the ISO standard.}
|
|
|
|
\ccInclude{CGAL/algorithm.h}
|
|
|
|
\ccThree{OutputIterator}{copy_n}{}
|
|
\ccFunction{template <class InputIterator, class Size, class
|
|
OutputIterator> OutputIterator copy_n(InputIterator first, Size n,
|
|
OutputIterator result);}{copies the first $n$ items from
|
|
\ccc{first} to \ccc{result}. Returns the value of \ccc{result}
|
|
after inserting the $n$ items.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Counting_iterator<Iterator, Value>}
|
|
\end{ccRefFunction}
|
|
|
|
%% +---------------------------------------------+
|
|
\begin{ccRefFunction}{min_max_element}
|
|
\label{sectionMinmaxelement}
|
|
|
|
\ccDefinition The function \ccRefName\ computes the minimal and the
|
|
maximal element of a range. It is modeled after the STL functions
|
|
\ccc{min_element} and \ccc{max_element}. The advantage of
|
|
\ccc{min_max_element} compared to calling both STL functions is that
|
|
one only iterates once over the sequence. This is more efficient
|
|
especially for large and/or complex sequences.
|
|
|
|
\ccInclude{CGAL/algorithm.h}
|
|
|
|
\ccFunction{template < class ForwardIterator > std::pair<
|
|
ForwardIterator, ForwardIterator > min_max_element(ForwardIterator
|
|
first, ForwardIterator last);}{returns a pair of iterators where
|
|
the first component refers to the minimal and the second component
|
|
refers to the maximal element in the range [\ccc{first},
|
|
\ccc{last}). The ordering is defined by \ccc{operator<} on the
|
|
value type of \ccc{ForwardIterator}.}
|
|
|
|
\ccFunction{template < class ForwardIterator, class CompareMin,
|
|
class CompareMax > std::pair< ForwardIterator, ForwardIterator >
|
|
min_max_element(ForwardIterator first, ForwardIterator last,
|
|
CompareMin comp_min, CompareMax comp_max);}{returns a pair of
|
|
iterators where the first component refers to the minimal and the
|
|
second component refers to the maximal element in the range
|
|
[\ccc{first}, \ccc{last}). \ccRequire
|
|
\ccc{CompareMin} and \ccc{CompareMax} are adaptable binary
|
|
function objects:
|
|
\ccc{VT}~$\times$~\ccc{VT}~$\rightarrow$~\ccc{bool} where \ccc{VT}
|
|
is the value type of \ccc{ForwardIterator}.}
|
|
|
|
\ccExample The following example program computes the minimal and
|
|
maximal element of the sequence $(3,\,6,\,5)$. Hence the output is
|
|
\ccc{min = 3, max = 6}.
|
|
|
|
\ccIncludeExampleCode{STL_Extension/min_max_element_example.cpp}
|
|
|
|
\end{ccRefFunction}
|
|
|
|
%% Michael: I commented these, as I think they should be replaced by combining
|
|
%% Filter_iterator with std::min/max_element().
|
|
%%
|
|
%% %% +---------------------------------------------+
|
|
%% \begin{ccRefFunction}{min_element_if}
|
|
%% \label{sectionMinElementIf}
|
|
|
|
%% \ccDefinition The function \ccRefName\ computes the minimum among
|
|
%% the elements of a range which satisfy a certain predicate. It is
|
|
%% modeled after the STL function \ccc{min_element}.
|
|
|
|
%% \ccInclude{CGAL/algorithm.h}
|
|
|
|
%% \ccFunction{template < class ForwardIterator, class Predicate >
|
|
%% ForwardIterator min_element_if(ForwardIterator first,
|
|
%% ForwardIterator last, Predicate pred);}{returns an iterator
|
|
%% referring to the minimal element among those satifying the
|
|
%% predicate \ccc{pred} in the range [\ccc{first}, \ccc{last}). The
|
|
%% ordering is defined by the \ccc{operator<} on \ccc{VT} where
|
|
%% \ccc{VT} is the value type of \ccc{ForwardIterator}.
|
|
%% \ccRequire \ccc{pred} is an unary function
|
|
%% object: \ccc{VT}~$\rightarrow$~\ccc{bool}.}
|
|
|
|
%% \ccFunction{template < class ForwardIterator, class Compare, class
|
|
%% Predicate > ForwardIterator min_element_if(ForwardIterator first,
|
|
%% ForwardIterator last, Compare comp, Predicate pred);} {return an
|
|
%% iterator referring to the minimal element among those satifying
|
|
%% the predicate \ccc{pred} in the range [\ccc{first}, \ccc{last}).
|
|
%% The ordering is defined by \ccc{comp}.
|
|
%% \ccRequire \ccc{comp} is a binary function
|
|
%% object: \ccc{VT}~$\times$~\ccc{VT}~$\rightarrow$~\ccc{bool} where
|
|
%% \ccc{VT} is the value type of \ccc{ForwardIterator}. \ccc{pred} is
|
|
%% an unary function object: \ccc{VT}~$\rightarrow$~\ccc{bool}.}
|
|
|
|
%% \ccSeeAlso
|
|
%% \ccRefIdfierPage{CGAL::max_element_if}\\
|
|
%% \ccRefIdfierPage{CGAL::min_max_element}
|
|
|
|
%% \ccExample The following example program computes the minimal odd
|
|
%% element of the sequence $(3,\,5,\,2)$. Hence the output is
|
|
%% \ccc{min_odd = 3}.
|
|
|
|
%% \ccIncludeExampleCode{STL_Extension_ref/min_element_if_example.cpp}
|
|
|
|
%% \end{ccRefFunction}
|
|
|
|
%% %% +---------------------------------------------+
|
|
%% \begin{ccRefFunction}{max_element_if}
|
|
|
|
%% \ccDefinition The function \ccRefName\ computes the maximum among
|
|
%% the elements of a range which satisfy a certain predicate. It is
|
|
%% modeled after the STL function \ccc{max_element}.
|
|
|
|
%% \ccInclude{CGAL/algorithm.h}
|
|
|
|
%% \ccFunction{template < class ForwardIterator, class Predicate >
|
|
%% ForwardIterator max_element_if(ForwardIterator first,
|
|
%% ForwardIterator last, Predicate pred);}{returns an iterator
|
|
%% referring to the maximal element among those satifying the
|
|
%% predicate \ccc{pred} in the range [\ccc{first}, \ccc{last}). The
|
|
%% ordering is defined by the \ccc{operator<} on \ccc{VT} where
|
|
%% \ccc{VT} is the value type of \ccc{ForwardIterator}.
|
|
%% \ccRequire \ccc{pred} is an unary function
|
|
%% object: \ccc{VT}~$\rightarrow$~\ccc{bool}.}
|
|
|
|
%% \ccFunction{template < class ForwardIterator, class Compare, class
|
|
%% Predicate > ForwardIterator max_element_if(ForwardIterator first,
|
|
%% ForwardIterator last, Compare comp, Predicate pred);} {return an
|
|
%% iterator referring to the maximal element among those satifying
|
|
%% the predicate \ccc{pred} in the range [\ccc{first}, \ccc{last}).
|
|
%% The ordering is defined by \ccc{comp}.
|
|
%% \ccRequire \ccc{comp} is a binary function
|
|
%% object: \ccc{VT}~$\times$~\ccc{VT}~$\rightarrow$~\ccc{bool} where
|
|
%% \ccc{VT} is the value type of \ccc{ForwardIterator}. \ccc{pred} is
|
|
%% an unary function object: \ccc{VT}~$\rightarrow$~\ccc{bool}.}
|
|
|
|
%% \ccSeeAlso
|
|
%% \ccRefIdfierPage{CGAL::min_element_if}\\
|
|
%% \ccRefIdfierPage{CGAL::min_max_element}
|
|
|
|
%% \end{ccRefFunction}
|
|
|
|
%% +=========================================================================+
|
|
|
|
\begin{ccRefClass}{Dispatch_output_iterator<V,O>}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ defines an
|
|
\ccc{OutputIterator} that contains a tuple of output iterators, and dispatches
|
|
among those based on the type of the value type which is put in it.
|
|
It also inherits from \ccc{O}, which makes it easy to treat like a tuple.
|
|
|
|
\ccParameters
|
|
\ccc{V} must be a \ccc{CGAL::cpp0x::tuple<...>} of the types of values to be accepted and dispatched.
|
|
\ccc{O} must be a \ccc{CGAL::cpp0x::tuple<...>} of the types of corresponding output iterators.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{OutputIterator}
|
|
|
|
\ccInheritsFrom \ccc{O}
|
|
|
|
\ccTypes
|
|
|
|
\ccTypedef{typedef V Value_type_tuple;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef O Iterator_tuple;}{}
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Exptyset_iterator()}{}
|
|
|
|
\ccConstructor{Dispatch_output_iterator(I...o);}{Constructor taking all the output iterators.}
|
|
|
|
\ccMemberFunction{const Iterator_tuple& get_iterator_tuple() const;}
|
|
{returns a reference to the tuple of output iterators.}
|
|
|
|
\ccFunction{template < typename... V, typename... O>
|
|
Dispatch_output_iterator<tuple<V...>, tuple<O...> >
|
|
dispatch_output(O... o);}
|
|
{returns a \ccc{Dispatch_output_iterator} constructed from the arguments.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Dispatch_or_drop_output_iterator<V,O>}
|
|
|
|
\end{ccRefClass}
|
|
|
|
|
|
\begin{ccRefClass}{Dispatch_or_drop_output_iterator<V,O>}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ defines an
|
|
\ccc{OutputIterator} that contains a tuple of output iterators, and dispatches
|
|
among those based on the type of the value type which is put in it.
|
|
Other types are also accepted, and the object is simply discarded in this case.
|
|
It also inherits from \ccc{O}, which makes it easy to treat like a tuple.
|
|
|
|
\ccParameters
|
|
\ccc{V} must be a \ccc{CGAL::cpp0x::tuple<...>} of the types of values to be accepted and dispatched.
|
|
\ccc{O} must be a \ccc{CGAL::cpp0x::tuple<...>} of the types of corresponding output iterators.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{OutputIterator}
|
|
|
|
\ccInheritsFrom \ccc{O}
|
|
|
|
\ccTypes
|
|
|
|
\ccTypedef{typedef V Value_type_tuple;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef O Iterator_tuple;}{}
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Exptyset_iterator()}{}
|
|
|
|
\ccConstructor{Dispatch_or_drop_output_iterator(I...o);}{Constructor taking all the output iterators.}
|
|
|
|
\ccMemberFunction{const Iterator_tuple& get_iterator_tuple() const;}
|
|
{returns a reference to the tuple of output iterators.}
|
|
|
|
\ccFunction{template < typename... V, typename... O>
|
|
Dispatch_or_drop_output_iterator<tuple<V...>, tuple<O...> >
|
|
dispatch_or_drop_output(O... o);}
|
|
{returns a \ccc{Dispatch_or_drop_output_iterator} constructed from the arguments.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Dispatch_output_iterator<V,O>}
|
|
|
|
\end{ccRefClass}
|
|
|
|
|
|
\begin{ccRefClass}{Emptyset_iterator}
|
|
\label{sectionEmptysetIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The class \ccClassName\ defines an
|
|
\ccc{OutputIterator} that ignores everything written to it. One can
|
|
think of it as being connected to \texttt{/dev/null}.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{OutputIterator}
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Emptyset_iterator()}{}
|
|
|
|
\ccConstructor{Emptyset_iterator();}{default constructor.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Oneset_iterator}\\
|
|
\ccRefIdfierPage{CGAL::Const_oneset_iterator}
|
|
|
|
\end{ccRefClass}
|
|
|
|
\begin{ccRefClass}{Oneset_iterator<T>}
|
|
\label{sectionOnesetIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ defines an
|
|
\ccc{BidirectionalIterator} that always refers to one specific
|
|
object of type \ccc{T}. Internally, \ccClassTemplateName\ stores a
|
|
pointer to the referred object.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{BidirectionalIterator}
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Oneset_iterator(T& t);}{}
|
|
|
|
\ccTagFullDeclarations\ccConstructor{Oneset_iterator(T& t);}{creates
|
|
an iterator referring to \ccc{t}.}\ccTagDefaults
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Emptyset_iterator}\\
|
|
\ccRefIdfierPage{CGAL::Const_oneset_iterator}
|
|
|
|
\end{ccRefClass}
|
|
|
|
\begin{ccRefClass}{Const_oneset_iterator<T>}
|
|
\label{sectionConst_onesetIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ defines an
|
|
\ccc{RandomAccessIterator} that always refers to a copy of a
|
|
specific object of type \ccc{T}.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{RandomAccessIterator}
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Const_oneset_iterator(const T& t);}{}
|
|
|
|
\ccTagFullDeclarations\ccConstructor{Const_oneset_iterator(T&
|
|
t);}{creates an iterator that always refers to some copy of
|
|
\ccc{t}. The copy is constructed by invoking \ccc{T}'s copy
|
|
constructor and remains constant during $i$'s
|
|
lifetime.}\ccTagDefaults
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Emptyset_iterator}\\
|
|
\ccRefIdfierPage{CGAL::Oneset_iterator}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{Counting_iterator<Iterator, Value>}
|
|
\label{sectionCountingIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The iterator adaptor \ccClassTemplateName\ adds a
|
|
counter to the internal iterator of type \ccc{Iterator} and defines
|
|
equality of two instances in terms of this counter. It can be used
|
|
to create finite sequences of possibly infinite sequences of values
|
|
from input iterators.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{InputIterator}
|
|
|
|
\ccRequirements \ccc{Iterator} is a model for
|
|
\ccc{InputIterator}.
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Identity<Value>MMMMMM}{}
|
|
|
|
\ccConstructor{Counting_iterator( std::size_t n = 0);}{initializes
|
|
the internal counter to $n$ and \ccVar\ has a singular value.}
|
|
|
|
\ccConstructor{Counting_iterator( Iterator j, std::size_t n = 0);}{
|
|
initializes the internal counter to $n$ and \ccVar\ to $j$.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::copy_n}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{Insert_iterator<Container>}
|
|
\label{sectionInsertIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The output iterator \ccClassTemplateName\ is similar
|
|
to \ccc{std::insert_iterator}, but differs in that it calls the
|
|
\ccc{insert()} function of the container without the iterator
|
|
additional argument.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel
|
|
\ccc{OutputIterator}
|
|
|
|
\ccRequirements \ccc{Container} provides a member function
|
|
\ccc{insert(const Container::const_reference&)}.
|
|
|
|
\ccCreation
|
|
|
|
\ccTwo{Identity<Value>MMMMMM}{}
|
|
|
|
\ccConstructor{Insert_iterator( Container &c );}{initializes
|
|
the internal container reference to $c$.}
|
|
|
|
There is also a global function similar to \ccc{std::inserter}:
|
|
|
|
\ccFunction{template < class Container >
|
|
Insert_iterator<Container>
|
|
inserter(Container &x);}
|
|
{ Constructs \ccc{Insert_iterator<Container>(x)}. }
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{N_step_adaptor<I,int N>}
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The adaptor \ccRefName\ changes the step width of the
|
|
iterator or circulator class \ccStyle{I} to $N$. It is itself an
|
|
iterator or circulator respectively. The behavior is undefined if
|
|
the adaptor is used on a range [$i,j$) where $j-i$ is not a multiple
|
|
of $n$.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccCreation
|
|
\ccTwo{N_step_adaptor<I,int N> i( I j);;M}{}
|
|
|
|
\ccConstructor{N_step_adaptor(const I& j);}{down cast.}
|
|
|
|
\end{ccRefClass}
|
|
|
|
\begin{ccRefClass}{Filter_iterator<Iterator, Predicate>}
|
|
\label{sectionFilterIterator}
|
|
|
|
\ccCreationVariable{i}
|
|
|
|
\ccDefinition The iterator adaptor \ccClassTemplateName\ acts as a
|
|
filter on a given range. Whenever the iterator is in-- or
|
|
decremented, it ignores all iterators for which the given
|
|
\ccc{Predicate} is true. The iterator category is the same as for
|
|
\ccc{Iterator}.
|
|
|
|
Note: Boost also provides the same functionality via the
|
|
\ccc{boost::filter_iterator} class. Unfortunately, the semantics
|
|
chosen for accepting or rejecting elements based on the predicate's
|
|
result are opposite as the semantic chosen here. What is more, the
|
|
argument of the predicate is different: the predicate used with
|
|
\ccc{boost::filter_iterator} must take the value type of the iterator, as
|
|
argument, and not the iterator itself.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccRequirements
|
|
\begin{itemize}
|
|
\item \ccc{Iterator} is a model for \ccc{ForwardIterator}.
|
|
\item \ccc{Predicate} is a functor: \ccc{Iterator} $\rightarrow$
|
|
\ccc{bool}.
|
|
\end{itemize}
|
|
|
|
\ccCreation
|
|
|
|
%%\ccTwo{Identity<Value>MMMMMM}{}
|
|
|
|
\ccConstructor{Filter_iterator();}{}
|
|
|
|
\ccConstructor{Filter_iterator(Iterator e, Predicate p, Iterator c = e);}
|
|
{creates an iterator which filters values according to \ccc{p}.
|
|
Initializes by taking the first valid iterator (according to \ccc{p}),
|
|
starting at \ccc{c}, and stopping at \ccc{e} if none is found.}
|
|
|
|
There is also a global function to help the use of \ccClassTemplateName{}:
|
|
|
|
\ccFunction{template < class Iterator, class Predicate >
|
|
inline Filter_iterator< Iterator, Predicate >
|
|
filter_iterator(Iterator e, const Predicate& p, Iterator c = e);}
|
|
{ Constructs \ccc{Filter_iterator<Iterator, Predicate>(e, p, c)}. }
|
|
\end{ccRefClass}
|
|
|
|
%% +---------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Join_input_iterator_1<Iterator, Creator>}
|
|
\label{sectionJoinInputIterator}
|
|
|
|
\ccDefinition The class \ccRefName\ joins an iterator and a creator
|
|
function object. The result is again an iterator (of the same
|
|
iterator category type as the original iterator) that reads an object
|
|
from the stream and applies a creator function object to that
|
|
object.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccIsModel \ccc{InputIterator}
|
|
|
|
\ccTypes
|
|
\ccNestedType{value_type}{typedef to \ccc{Creator::result_type}.}
|
|
|
|
\ccCreation\ccCreationVariable{join}
|
|
|
|
\ccConstructor{Join_input_iterator_1( Iterator i, const Creator&
|
|
creator);} {creates a join iterator from the given iterator $i$
|
|
and the functor \ccc{creator}. Applies \ccc{creator} to each item
|
|
read from $i$.}
|
|
|
|
\ccConstructor{Join_input_iterator_1( Iterator i);} {creates a join
|
|
iterator from the given iterator $i$ and a default constructed
|
|
instance of \ccc{Creator}. The latter instance is applied to each
|
|
item read from $i$.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Creator_1<Arg, Result>}
|
|
\end{ccRefClass}
|
|
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{Inverse_index<IC>}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ constructs an inverse
|
|
index for a given range [$i,j$) of two iterators or circulators of
|
|
type \ccc{IC}. The first element $I$ in the range [$i,j$) has the
|
|
index 0. Consecutive elements are numbered incrementally. The
|
|
inverse index provides a query for a given iterator or circulator
|
|
$k$ to retrieve its index number. {\em Precondition:}\/ The iterator
|
|
or circulator must be either of the random access category or the
|
|
dereference operator must return stable and distinguishable
|
|
addresses for the values, e.g.~proxies or non-modifiable iterator
|
|
with opaque values will not work.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccCreation\ccCreationVariable{inverse}
|
|
|
|
\ccTwo{Inverse_index< IC,> inverse( IC i, IC j);;}{}
|
|
\ccConstructor{Inverse_index();}{invalid index.}
|
|
|
|
\ccGlue\ccConstructor{Inverse_index( const IC& i);}{empty inverse
|
|
index initialized to start at $i$.}
|
|
|
|
\ccGlue\ccConstructor{Inverse_index( const IC& i, const IC& j);}
|
|
{inverse index initialized with range [$i,j$).}
|
|
|
|
\ccOperations
|
|
\ccThree{std::size_t}{inverse.find( const T* p);}{}
|
|
|
|
\ccMethod{std::size_t operator[]( const IC& k);}{returns inverse
|
|
index of $k$. \ccPrecond $k$ has been stored in the inverse
|
|
index.}
|
|
|
|
\ccMethod{void push_back( const IC& k);}{adds $k$ at the end of the
|
|
indices.}
|
|
|
|
\ccImplementation
|
|
|
|
For random access iterators or circulators, it is done in constant
|
|
time by subtracting $i$. For other iterator categories, an \stl\
|
|
\ccc{map} is used, which results in a $\log j-i$ query time. The
|
|
comparisons are done using the operator \ccc{operator<} on pointers.
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Random_access_adaptor<IC>}\\
|
|
\ccRefIdfierPage{CGAL::Random_access_value_adaptor<IC,T>}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{Random_access_adaptor<IC>}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ provides a random
|
|
access for data structures. Either the data structure supports
|
|
random access iterators or circulators where this class maps
|
|
function calls to the iterator or circulator, or a \stl\
|
|
\ccc{std::vector} is used to provide the random access. The iterator
|
|
or circulator of the data structure are of type \ccc{IC}.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccTypes
|
|
|
|
\ccNestedType{size_type}{size type of the \stl\ \ccc{std::vector}.}
|
|
|
|
\ccCreation\ccCreationVariable{random_access}
|
|
|
|
\ccTwo{Random_access_adaptor< IC> random_access;}{}
|
|
\ccConstructor{Random_access_adaptor();}{invalid index.}
|
|
|
|
\ccConstructor{Random_access_adaptor( const IC& i);} {empty random
|
|
access index initialized to start at $i$.}
|
|
|
|
\ccConstructor{Random_access_adaptor( const IC& i, const IC& j);}
|
|
{random access index initialized to the range [$i,j$).}
|
|
|
|
\ccThree{Dist}{random_access.push_back( IC k);}{} \ccMethod{void
|
|
reserve( size_type r);}{reserve $r$ entries, if a
|
|
\ccc{std::vector} is used internally.}
|
|
|
|
\ccOperations
|
|
|
|
\ccMethod{IC operator[]( size_type n);}{returns iterator or
|
|
circulator to the $n$-th item. \ccPrecond $n <$ number of items
|
|
in \ccVar.}
|
|
|
|
\ccMethod{void push_back( const IC& k);}{adds $k$ at the end of the
|
|
indices.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Inverse_index<IC>}\\
|
|
\ccRefIdfierPage{CGAL::Random_access_value_adaptor<IC,T>}
|
|
|
|
\end{ccRefClass}
|
|
|
|
|
|
%% +--------------------------------------------------------+
|
|
\begin{ccRefClass}{Random_access_value_adaptor<IC,T>}
|
|
|
|
\ccDefinition The class \ccClassTemplateName\ provides a random
|
|
access for data structures. It is derived from
|
|
\ccc{Random_access_adaptor<IC>}. Instead of returning iterators from
|
|
the \ccc{operator[]} methods, it returns the dereferenced value of
|
|
the iterator. The iterator or circulator of the data structure are
|
|
of type \ccc{IC}. Their value type is $T$.
|
|
|
|
\ccInclude{CGAL/iterator.h}
|
|
|
|
\ccOperations
|
|
|
|
Creation and operations see \ccc{Random_access_adaptor<IC>}, with
|
|
the exception of:
|
|
|
|
\ccCreationVariable{random_access}
|
|
|
|
\ccThree{Dist}{random_access.push_back( IC k);}{}
|
|
|
|
\ccMethod{T& operator[]( size_type n);}{returns a reference to the
|
|
$n$-th item. \ccPrecond $n <$ number of items in \ccVar.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Inverse_index<IC>}\\
|
|
\ccRefIdfierPage{CGAL::Random_access_adaptor<IC>}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +=========================================================================+
|
|
|
|
\begin{ccRefFunction}{compare_to_less}
|
|
\ccDefinition The function \ccRefName\ is used to change a functor
|
|
returning a \ccc{Comparison_result} to one which returns a bool.
|
|
The returned functor will return \ccc{true} iff the original one
|
|
returns \ccc{SMALLER}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccThree{typename Compare_to_less< F >::Type}{compare_to_less}{}
|
|
|
|
\ccFunction{template < class F > Compare_to_less< F >
|
|
compare_to_less(const F& f);}{returns a functor equivalent to
|
|
\ccc{f}, but which returns a bool instead of a
|
|
\ccc{Comparison_result}.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Compare_to_less<F>}
|
|
|
|
\end{ccRefFunction}
|
|
|
|
\begin{ccRefClass}{Compare_to_less<F>}
|
|
\ccDefinition The class \ccRefName\ is used to convert a functor which
|
|
returns a \ccc{Comparison_result} to a predicate (returning bool) : it
|
|
will return true iff the return value of \ccc{F} is \ccc{SMALLER}.
|
|
The class is used in conjunction with the \ccc{compare_to_less}
|
|
function; see there for an explanation on how exactly the functors
|
|
are combined.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccTypes
|
|
\ccNestedType{Type}{type of the composed functor.}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::compare_to_less}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +=========================================================================+
|
|
|
|
\begin{ccRefFunctionObjectConcept}{Projection_object}
|
|
\label{sectionProjectionFunctionObjects}
|
|
|
|
\ccDefinition The concept \ccRefName\ is modeled after the STL
|
|
concept \ccc{UnaryFunction}, but takes also care of (const)
|
|
references.
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{argument type.}
|
|
\ccNestedType{result_type}{result type.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Projection_object();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
\ccMethod{result_type& operator()(argument_type &) const;}{}
|
|
\ccGlue
|
|
\ccMethod{const result_type& operator()(const argument_type &) const;}{}
|
|
\ccTagDefaults
|
|
|
|
\ccHasModels
|
|
\ccRefIdfierPage{CGAL::Identity<Value>}\\
|
|
\ccRefIdfierPage{CGAL::Dereference<Value>}\\
|
|
\ccRefIdfierPage{CGAL::Get_address<Value>}\\
|
|
\ccRefIdfierPage{CGAL::Cast_function_object<Arg, Result>}\\
|
|
\ccRefIdfierPage{CGAL::Project_vertex<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_facet<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_point<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_normal<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_plane<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_next<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_prev<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_next_opposite<Node>}\\
|
|
\ccRefIdfierPage{CGAL::Project_opposite_prev<Node>}
|
|
|
|
\end{ccRefFunctionObjectConcept}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Identity<Value>}
|
|
\ccDefinition The class \ccRefName\ represents the identity function
|
|
on \ccc{Value}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Value}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Value}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Identity();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& x) const;}{returns
|
|
\ccc{x}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
x) const;}{returns \ccc{x}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Dereference<Value>}
|
|
\ccDefinition The class \ccRefName\ dereferences a pointer
|
|
(\ccc{operator*}).
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Value*}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Value}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Dereference();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& x) const;}{returns
|
|
\ccc{*x}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
x) const;}{returns \ccc{*x}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Get_address<Value>}
|
|
\ccDefinition The class \ccRefName\ gets the address of an lvalue
|
|
(\ccc{operator&}).
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Value}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Value*}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Get_address();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& x) const;}{returns
|
|
\ccc{&x}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
x) const;}{returns \ccc{&x}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Cast_function_object<Arg, Result>}
|
|
\ccDefinition The class \ccRefName\ applies a C-style type cast to
|
|
its argument.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Arg}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Result}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Cast_function_object();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& x) const;}{returns
|
|
\ccc{(Result)x}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
x) const;}{returns \ccc{(Result)x}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_vertex<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{vertex()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node::Vertex}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_vertex();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n.vertex()}.}
|
|
|
|
\ccGlue \ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n.vertex()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_facet<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{facet()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node::Facet}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_facet();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n.facet()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n.facet()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_point<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{point()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node::Point}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_point();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n.point()}.}
|
|
|
|
\ccGlue \ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n.point()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_normal<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{normal()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node::Normal}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_normal();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n.normal()}.}
|
|
|
|
\ccGlue \ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n.normal()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_plane<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{plane()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node::Plane}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_plane();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n.plane()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n.plane()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_next<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{next()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node*}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node*}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_next();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n->next()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n->next()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_prev<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member function
|
|
\ccc{prev()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node*}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node*}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_prev();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n->prev()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n->prev()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_next_opposite<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member functions
|
|
\ccc{next()->opposite()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node*}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node*}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_next_opposite();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n->next()->opposite()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n->next()->opposite()}.} \ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Project_opposite_prev<Node>}
|
|
\ccDefinition The class \ccRefName\ calls the member functions
|
|
\ccc{opposite()->prev()} on an instance of type \ccc{Node}.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccIsModel
|
|
\ccRefConceptPage{Projection_object}
|
|
|
|
\ccTagFullDeclarations
|
|
\ccNestedType{argument_type}{typedef to \ccc{Node*}.}
|
|
\ccNestedType{result_type}{typedef to \ccc{Node*}.}
|
|
\ccCreationVariable{o}
|
|
\ccCreation
|
|
\ccConstructor{Project_opposite_prev();}{default constructor.}
|
|
\ccOperations
|
|
\ccThree{const result_type&;;}{A}{}
|
|
|
|
\ccMethod{result_type& operator()(argument_type& n) const;}{returns
|
|
\ccc{n->opposite()->prev()}.}
|
|
|
|
\ccGlue\ccMethod{const result_type& operator()(const argument_type&
|
|
n) const;}{returns \ccc{n->opposite()->prev()}.}
|
|
\ccTagDefaults
|
|
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_1<Arg, Result>}
|
|
\label{sectionCreatorFunctionObjects}
|
|
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from one argument.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccHeading{Requirements} \ccc{Arg} is convertible to \ccc{Result}.
|
|
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of argument.}
|
|
\ccNestedType{result_type}{type of object to create.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a) const;}{returns
|
|
\ccc{result_type(a)}.}
|
|
|
|
\ccTagDefaults
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_2<Arg1, Arg2, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from two arguments.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a corresponding
|
|
constructor.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument1_type}{type of first argument.}
|
|
\ccNestedType{argument2_type}{type of second argument.}
|
|
\ccNestedType{result_type}{type of object to create.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type1 a1, argument_type2
|
|
a2) const;}{returns \ccc{result_type(a1, a2)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_3<Arg1, Arg2, Arg3, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from three arguments.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a corresponding
|
|
constructor.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument1_type}{type of first argument.}
|
|
\ccNestedType{argument2_type}{type of second argument.}
|
|
\ccNestedType{argument3_type}{type of third argument.}
|
|
\ccNestedType{result_type}{type of object to create.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type1 a1, argument_type2
|
|
a2, argument_type3 a3) const;}{returns \ccc{result_type(a1, a2,
|
|
a3)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_4<Arg1, Arg2, Arg3, Arg4, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from four arguments.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a corresponding
|
|
constructor.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument1_type}{type of first argument.}
|
|
\ccNestedType{argument2_type}{type of second argument.}
|
|
\ccNestedType{argument3_type}{type of third argument.}
|
|
\ccNestedType{argument4_type}{type of 4th argument.}
|
|
\ccNestedType{result_type}{type of object to create.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type1 a1, argument_type2
|
|
a2, argument_type3 a3, argument_type4 a4) const;}{returns
|
|
\ccc{result_type(a1, a2, a3, a4)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_5<Arg1, Arg2, Arg3, Arg4, Arg5, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from five arguments.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a corresponding
|
|
constructor.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument1_type}{type of first argument.}
|
|
\ccNestedType{argument2_type}{type of second argument.}
|
|
\ccNestedType{argument3_type}{type of third argument.}
|
|
\ccNestedType{argument4_type}{type of 4th argument.}
|
|
\ccNestedType{argument5_type}{type of 5th argument.}
|
|
\ccNestedType{result_type}{type of object to create.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type1 a1, argument_type2
|
|
a2, argument_type3 a3, argument_type4 a4, argument_type5 a5)
|
|
const;}{returns \ccc{result_type(a1, a2, a3, a4, a5)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_2<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from two arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from two
|
|
\ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2)
|
|
const;}{returns \ccc{result_type(a1, a2)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_3<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from three arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
three \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3) const;}{returns \ccc{result_type(a1, a2, a3)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_4<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from four arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
four \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4) const;}{returns
|
|
\ccc{result_type(a1, a2, a3, a4)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_5<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from five arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
five \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4, argument_type a5)
|
|
const;}{returns \ccc{result_type(a1, a2, a3, a4, a5)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_6<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from six arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from six
|
|
\ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4, argument_type a5,
|
|
argument_type a6) const;}{returns \ccc{result_type(a1, a2, a3, a4,
|
|
a5, a6)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_7<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from seven arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
seven \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4, argument_type a5,
|
|
argument_type a6, argument_type a7) const;}{returns
|
|
\ccc{result_type(a1, a2, a3, a4, a5, a6, a7)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_8<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from eight arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
eight \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4, argument_type a5,
|
|
argument_type a6, argument_type a7, argument_type a8)
|
|
const;}{returns \ccc{result_type(a1, a2, a3, a4, a5, a6, a7,
|
|
a8)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_9<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from nine arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from
|
|
nine \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2,
|
|
argument_type a3, argument_type a4, argument_type a5,
|
|
argument_type a6, argument_type a7, argument_type a8,
|
|
argument_type a9) const;}{returns \ccc{result_type(a1, a2, a3, a4,
|
|
a5, a6, a7, a8, a9)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
\begin{ccRefFunctionObjectClass}{Creator_uniform_d<Arg, Result>}
|
|
\ccDefinition The concept \ccRefName\ defines types and operations
|
|
for creating objects from two arguments of the same type.
|
|
|
|
\ccInclude{CGAL/function_objects.h}
|
|
|
|
\ccRequirements \ccc{Result} defines a constructor from three arguments:
|
|
one \ccc{d} dimension and two \ccc{Arg} arguments.
|
|
|
|
\def\ccLongParamLayout{\ccTrue}
|
|
\ccTagFullDeclarations\ccCreationVariable{c}
|
|
\ccNestedType{argument_type}{type of arguments; typedef to
|
|
\ccc{Arg}.}
|
|
\ccNestedType{result_type}{type of object to create; typedef to
|
|
\ccc{Result}.}
|
|
\ccThree{result_type;;}{operator()(argument_type a) const;;}{}
|
|
|
|
\ccMethod{result_type operator()(argument_type a1, argument_type a2)
|
|
const;}{returns \ccc{result_type(d, a1, a2)}.}
|
|
|
|
\ccTagDefaults\def\ccLongParamLayout{\ccFalse}
|
|
\end{ccRefFunctionObjectClass}
|
|
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Twotuple<T>}
|
|
This class is deprecated, and will be removed in some future \cgal\ release.
|
|
Please use \ccc{CGAL::cpp0x::array} instead.
|
|
|
|
\begin{ccDeprecated}
|
|
\ccDefinition The \ccRefName\ class stores a homogeneous (same type) pair
|
|
of objects of type \ccc{T}. A \ccRefName\ is much like a container, in that
|
|
it "owns" its elements. It is not actually a model of container, though,
|
|
because it does not support the standard methods (such as iterators) for
|
|
accessing the elements of a container.
|
|
|
|
\ccInclude{CGAL/Twotuple.h}
|
|
|
|
\ccRequirements \ccc{T} must be \ccc{Assignable}.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T value_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T e0;}{first element}
|
|
\ccGlue
|
|
\ccVariable{T e1;}{second element}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Twotuple();}{introduces a \ccRefName\ using the default
|
|
constructor of the elements.}
|
|
|
|
\ccConstructor{Twotuple(T x, T y);}{constructs a \ccRefName\ such
|
|
that \ccc{e0} is constructed from \ccc{x} and \ccc{e1} is
|
|
constructed from \ccc{y}.}
|
|
\end{ccDeprecated}
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Threetuple<T>}
|
|
This class is deprecated, and will be removed in some future \cgal\ release.
|
|
Please use \ccc{CGAL::cpp0x::array} instead.
|
|
|
|
\begin{ccDeprecated}
|
|
\ccDefinition The \ccRefName\ class stores a homogeneous (same type) triple
|
|
of objects of type \ccc{T}. A \ccRefName\ is much like a container, in that
|
|
it "owns" its elements. It is not actually a model of container, though,
|
|
because it does not support the standard methods (such as iterators) for
|
|
accessing the elements of a container.
|
|
|
|
\ccInclude{CGAL/Threetuple.h}
|
|
|
|
\ccRequirements \ccc{T} must be \ccc{Assignable}.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T value_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T e0;}{first element}
|
|
\ccGlue
|
|
\ccVariable{T e1;}{second element}
|
|
\ccGlue
|
|
\ccVariable{T e2;}{third element}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Threetuple();}{introduces a \ccRefName\ using the default
|
|
constructor of the elements.}
|
|
|
|
\ccConstructor{Threetuple(T x, T y, T z);}{constructs a \ccRefName\ such
|
|
that \ccc{e0} is constructed from \ccc{x}, \ccc{e1} is
|
|
constructed from \ccc{y} and \ccc{e2} is constructed from \ccc{z}.}
|
|
\end{ccDeprecated}
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Fourtuple<T>}
|
|
This class is deprecated, and will be removed in some future \cgal\ release.
|
|
Please use \ccc{CGAL::cpp0x::array} instead.
|
|
|
|
\begin{ccDeprecated}
|
|
\ccDefinition The \ccRefName\ class stores a homogeneous (same type)
|
|
fourtuple of objects of type \ccc{T}. A \ccRefName\ is much like a
|
|
container, in that it "owns" its elements. It is not actually a model of
|
|
container, though, because it does not support the standard methods (such as
|
|
iterators) for accessing the elements of a container.
|
|
|
|
\ccInclude{CGAL/Fourtuple.h}
|
|
|
|
\ccRequirements \ccc{T} must be \ccc{Assignable}.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T value_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T e0;}{first element}
|
|
\ccGlue
|
|
\ccVariable{T e1;}{second element}
|
|
\ccGlue
|
|
\ccVariable{T e2;}{third element}
|
|
\ccGlue
|
|
\ccVariable{T e3;}{fourth element}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Fourtuple();}{introduces a \ccRefName\ using the default
|
|
constructor of the elements.}
|
|
|
|
\ccConstructor{Fourtuple(T x, T y, T z, T t);}{constructs a \ccRefName\ such
|
|
that \ccc{e0} is constructed from \ccc{x}, \ccc{e1} from \ccc{y},
|
|
\ccc{e2} from \ccc{z} and \ccc{e3} from \ccc{t}.}
|
|
\end{ccDeprecated}
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Sixtuple<T>}
|
|
This class is deprecated, and will be removed in some future \cgal\ release.
|
|
Please use \ccc{CGAL::cpp0x::array} instead.
|
|
|
|
\begin{ccDeprecated}
|
|
\ccDefinition The \ccRefName\ class stores a homogeneous (same type)
|
|
sixtuple of objects of type \ccc{T}. A \ccRefName\ is much like a
|
|
container, in that it "owns" its elements. It is not actually a model of
|
|
container, though, because it does not support the standard methods (such as
|
|
iterators) for accessing the elements of a container.
|
|
|
|
\ccInclude{CGAL/Sixtuple.h}
|
|
|
|
\ccRequirements \ccc{T} must be \ccc{Assignable}.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T value_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T e0;}{first element}
|
|
\ccGlue
|
|
\ccVariable{T e1;}{second element}
|
|
\ccGlue
|
|
\ccVariable{T e2;}{third element}
|
|
\ccGlue
|
|
\ccVariable{T e3;}{fourth element}
|
|
\ccGlue
|
|
\ccVariable{T e4;}{fifth element}
|
|
\ccGlue
|
|
\ccVariable{T e5;}{sixth element}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Sixtuple();}{introduces a \ccRefName\ using the default
|
|
constructor of the elements.}
|
|
|
|
\ccConstructor{Sixtuple(T x, T y, T z, T t, T u, T v);}{constructs a
|
|
\ccRefName\ such that \ccc{e0} is constructed from \ccc{x}, \ccc{e1} from
|
|
\ccc{y}, \ccc{e2} from \ccc{z}, \ccc{e3} from \ccc{t}, \ccc{e4} from
|
|
\ccc{u} and \ccc{e5} from \ccc{v}.}
|
|
\end{ccDeprecated}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Triple<T1, T2, T3>}
|
|
|
|
\ccDefinition The Triple class is an extension of \ccc{std::pair}.
|
|
\ccRefName\ is a heterogeneous triple: it holds one object of type
|
|
\ccc{T1}, one of type \ccc{T2}, and one of type \ccc{T3}. A
|
|
\ccRefName\ is much like a container, in that it "owns" its
|
|
elements. It is not actually a model of container, though, because
|
|
it does not support the standard methods (such as iterators) for
|
|
accessing the elements of a container.
|
|
|
|
This class is NOT RECOMMENDED anymore. We recommend that you use
|
|
\ccc{CGAL::cpp0x::tuple} or \ccc{CGAL::cpp0x::array} instead for new uses.
|
|
|
|
\ccInclude{CGAL/utility.h}
|
|
|
|
\ccRequirements \ccc{T1}, \ccc{T2} and \ccc{T3} must be \ccc{Assignable}.
|
|
Additional operations have additional requirements.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T1 first_type;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef T2 second_type;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef T3 third_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T1 first;}{first element. Please access it using \ccc{get<0>()}.}
|
|
\ccGlue
|
|
\ccVariable{T2 second;}{second element. Please access it using \ccc{get<1>()}.}
|
|
\ccGlue
|
|
\ccVariable{T3 third;}{third element. Please access it using \ccc{get<2>()}.}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Triple();}{introduces a triple using the default
|
|
constructor of the three elements.}
|
|
|
|
\ccConstructor{Triple(T1 x, T2 y, T3 z);}{constructs a triple such
|
|
that \ccc{first} is constructed from \ccc{x}, \ccc{second} is
|
|
constructed from \ccc{y}, and \ccc{third} is constructed from
|
|
\ccc{z}.}
|
|
|
|
\ccConstructor{template <class U, class V, class W> Triple(U u, V v,
|
|
W w);} {constructs a triple such that \ccc{first} is constructed
|
|
from \ccc{u}, \ccc{second} is constructed from \ccc{v}, and
|
|
\ccc{third} is constructed from \ccc{w}. \ccRequire Proper
|
|
conversion operators exist from \ccc{U} to \ccc{T1}, \ccc{V} to
|
|
\ccc{T2}, and \ccc{W} to \ccc{T3}.}
|
|
|
|
\ccMemberFunction{template <int i> T get();}
|
|
{Gives access to \ccc{first}, \ccc{second} or \ccc{third} whenever
|
|
\ccc{i} is 0, 1 or 2, via a, potentially const, reference.
|
|
Note: \ccc{T} stands for \ccc{T1}, \ccc{T2} or \ccc{T3} depending
|
|
on \ccc{i}.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3> bool
|
|
operator<(Triple<T1, T2, T3> x, Triple<T1, T2, T3> y);} {The
|
|
comparison operator. It uses lexicographic comparison: the return
|
|
value is true if the first element of \ccc{x} is less than the
|
|
first element of \ccc{y}, and false if the first element of
|
|
\ccc{y} is less than the first element of \ccc{x}. If neither of
|
|
these is the case, then it returns true if the second element of
|
|
\ccc{x} is less than the second element of \ccc{y}, and false if
|
|
the second element of \ccc{y} is less than the second element of
|
|
\ccc{x}. If neither of these is the case, then it returns the
|
|
result of comparing the third elements of \ccc{x} and \ccc{y}.
|
|
This operator may only be used if \ccc{T1}, \ccc{T2} and \ccc{T3}
|
|
define the comparison operator.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3> bool
|
|
operator==(Triple<T1, T2, T3> x, Triple<T1, T2, T3> y);} {The
|
|
equality operator. The return value is true if and only the first
|
|
elements of \ccc{x} and \ccc{y} are equal, the second elements of
|
|
\ccc{x} and \ccc{y} are equal, and the third elements of \ccc{x}
|
|
and \ccc{y} are equal. This operator may only be used if
|
|
\ccc{T1}, \ccc{T2} and \ccc{T3} define the equality operator.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3> Triple<T1, T2,
|
|
T3> make_triple(T1 x, T2 y, T3 z);} {Equivalent to
|
|
\ccStyle{Triple<T1, T2, T3>(x, y, z)}.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3> Triple<T1, T2,
|
|
T3> make_tuple(T1 x, T2 y, T3 z);} {Equivalent to
|
|
\ccStyle{Triple<T1, T2, T3>(x, y, z)}.}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +--------------------------------------------------------+
|
|
|
|
\begin{ccRefClass}{Quadruple<T1, T2, T3, T4>}
|
|
|
|
\ccDefinition The Quadruple class is an extension of
|
|
\ccc{std::pair}. \ccRefName\ is a heterogeneous quadruple: it holds
|
|
one object of type \ccc{T1}, one of type \ccc{T2}, one of type
|
|
\ccc{T3}, and one of type \ccc{T4}. A \ccRefName\ is much like a
|
|
container, in that it ``owns'' its elements. It is not actually a
|
|
model of container, though, because it does not support the standard
|
|
methods (such as iterators) for accessing the elements of a
|
|
container.
|
|
|
|
This class is NOT RECOMMENDED anymore. We recommend that you use
|
|
\ccc{CGAL::cpp0x::tuple} or \ccc{CGAL::cpp0x::array} instead for new uses.
|
|
|
|
\ccInclude{CGAL/utility.h}
|
|
|
|
\ccRequirements \ccc{T1}, \ccc{T2}, \ccc{T3} and \ccc{T4} must be
|
|
\ccc{Assignable}. Additional operations have additional requirements.
|
|
|
|
%\ccSetThreeColumns{T*}{next_link ;}{}
|
|
\ccThree{result_type;;}{operator()(argument a) ;;}{}
|
|
|
|
\ccTypes
|
|
\ccTypedef{typedef T1 first_type;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef T2 second_type;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef T3 third_type;}{}
|
|
\ccGlue
|
|
\ccTypedef{typedef T4 fourth_type;}{}
|
|
|
|
\ccHeading{Variables}
|
|
\ccVariable{T1 first;}{first element. Please access it using \ccc{get<0>()}.}
|
|
\ccGlue
|
|
\ccVariable{T2 second;}{second element. Please access it using \ccc{get<1>()}.}
|
|
\ccGlue
|
|
\ccVariable{T3 third;}{third element. Please access it using \ccc{get<2>()}.}
|
|
\ccGlue
|
|
\ccVariable{T4 fourth;}{fourth element. Please access it using \ccc{get<3>()}.}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{t}
|
|
|
|
\ccConstructor{Quadruple();} {introduces a quadruple using the
|
|
default constructor of the four elements.}
|
|
|
|
\ccConstructor{Quadruple(T1 x, T2 y, T3 z, T4 w);} {constructs a
|
|
quadruple such that \ccc{first} is constructed from \ccc{x},
|
|
\ccc{second} is constructed from \ccc{y}, \ccc{third} is
|
|
constructed from \ccc{z}, and \ccc{fourth} is constructed from
|
|
\ccc{w}.}
|
|
|
|
\ccConstructor{template <class U, class V, class W, class X>
|
|
Quadruple(U u, V v, W w, X x);} {constructs a quadruple such that
|
|
\ccc{first} is constructed from \ccc{u}, \ccc{second} is
|
|
constructed from \ccc{v}, \ccc{third} is constructed from \ccc{w},
|
|
and \ccc{fourth} is constructed from \ccc{x}. \ccRequire Proper
|
|
conversion operators exist from \ccc{U} to \ccc{T1}, \ccc{V} to
|
|
\ccc{T2}, \ccc{W} to \ccc{T3}, and \ccc{X} to \ccc{T4}. }
|
|
|
|
\ccMemberFunction{template <int i> T get();}
|
|
{Gives access to \ccc{first}, \ccc{second}, \ccc{third} or \ccc{fourth}
|
|
whenever \ccc{i} is 0, 1, 2 or 3, via a, potentially const, reference.
|
|
Note: \ccc{T} stands for \ccc{T1}, \ccc{T2}, \ccc{T3} or \ccc{T4}
|
|
depending on \ccc{i}.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3, class T4> bool
|
|
operator<(Quadruple<T1, T2, T3, T4> x, Quadruple<T1, T2, T3, T4>
|
|
y);} {The comparison operator. It uses lexicographic comparison:
|
|
the return value is true if the first element of \ccc{x} is less
|
|
than the first element of \ccc{y}, and false if the first element
|
|
of \ccc{y} is less than the first element of \ccc{x}. If neither
|
|
of these is the case, then it returns true if the second element
|
|
of \ccc{x} is less than the second element of \ccc{y}, and false
|
|
if the second element of \ccc{y} is less than the second element
|
|
of \ccc{x}. If neither of these is the case, then it returns true
|
|
if the third element of \ccc{x} is less than the third element of
|
|
\ccc{y}, and false if the third element of \ccc{y} is less than
|
|
the third element of \ccc{x}. If neither of these is the case,
|
|
then it returns the result of comparing the fourth elements of
|
|
\ccc{x} and \ccc{y}. This operator may only be used if \ccc{T1},
|
|
\ccc{T2}, \ccc{T3}, and \ccc{T4} define the comparison operator.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3, class T4> bool
|
|
operator==(Quadruple<T1, T2, T3, T4> x, Quadruple<T1, T2, T3, T4>
|
|
y);} {The equality operator. The return value is true if and only
|
|
the first elements of \ccc{x} and \ccc{y} are equal, the second
|
|
elements of \ccc{x} and \ccc{y} are equal, the third elements of
|
|
\ccc{x} and \ccc{y} are equal, and the fourth elements of \ccc{x}
|
|
and \ccc{y} are equal. This operator may only be used if
|
|
\ccc{T1}, \ccc{T2}, \ccc{T3}, and \ccc{T4} define the equality
|
|
operator.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3, class T4>
|
|
Quadruple<T1, T2, T3, T4> make_quadruple(T1 x, T2 y, T3 z, T4 w);}
|
|
{Equivalent to \ccStyle{Quadruple<T1, T2, T3, T4>(x, y, z, w)}.}
|
|
|
|
\ccFunction{template <class T1, class T2, class T3, class T4>
|
|
Quadruple<T1, T2, T3, T4> make_tuple(T1 x, T2 y, T3 z, T4 w);}
|
|
{Equivalent to \ccStyle{Quadruple<T1, T2, T3, T4>(x, y, z, w)}.}
|
|
|
|
\end{ccRefClass}
|
|
|
|
%% +=========================================================================+
|
|
|
|
\begin{ccRefClass}{Boolean_tag<bool value>}
|
|
|
|
\ccDefinition
|
|
|
|
Depending on \ccc{bool value} the class \ccRefName\ indicates that
|
|
something is \ccc{true} or \ccc{false} respectively.
|
|
|
|
\ccInclude{CGAL/tags.h}
|
|
|
|
\ccConstants
|
|
|
|
\ccVariable{static const bool value;}{}
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Tag_true} \\
|
|
\ccRefIdfierPage{CGAL::Tag_false}
|
|
|
|
\end{ccRefClass}
|
|
|
|
|
|
\begin{ccRefClass}{Tag_true}
|
|
|
|
\ccDefinition
|
|
|
|
The typedef \ccRefName\ is \ccc{Boolean_tag<true>}.
|
|
It is used to indicate, for example,
|
|
that a certain feature is available in a class.
|
|
|
|
\ccInclude{CGAL/tags.h}
|
|
|
|
\ccVariable{static const bool value;}{ is \ccc{true} }
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Boolean_tag<bool value>} \\
|
|
\ccRefIdfierPage{CGAL::Tag_false}
|
|
|
|
\end{ccRefClass}
|
|
|
|
|
|
\begin{ccRefClass}{Tag_false}
|
|
|
|
\ccDefinition
|
|
|
|
The typedef \ccRefName\ is \ccc{Boolean_tag<false>}.
|
|
It is used to indicate, for example,
|
|
that a certain feature is not available in a class.
|
|
|
|
\ccInclude{CGAL/tags.h}
|
|
|
|
\ccVariable{static const bool value;}{ is \ccc{false} }
|
|
|
|
\ccSeeAlso
|
|
\ccRefIdfierPage{CGAL::Boolean_tag<bool value>} \\
|
|
\ccRefIdfierPage{CGAL::Tag_true}
|
|
|
|
\end{ccRefClass}
|
|
|
|
\input{STL_Extension_ref/Null_functor.tex}
|
|
\input{STL_Extension_ref/Null_tag.tex}
|
|
|
|
%% +--------------------------------------------------------+
|
|
\ccParDims
|
|
|
|
%% EOF
|
|
|
|
|