\begin{ccRefFunctionObjectConcept}{CircularKernel::CompareX_2} 

\ccRefines

\ccc{Kernel::CompareX_2}

\ccCreationVariable{fo}

An object \ccVar\ of this type must provide in addition: 

\ccMemberFunction{Comparison_result operator()
	(const CircularKernel::Circular_arc_point_2 &p,
         const CircularKernel::Circular_arc_point_2 &q );}
{Compares the $x$-coordinates of $p$ and $q$.}

\ccSeeAlso

\ccRefIdfierPage{CircularKernel::CompareY_2}\\
\ccRefIdfierPage{CircularKernel::CompareXY_2}\\
\ccRefIdfierPage{CircularKernel::Equal_2}

\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{CircularKernel::CompareY_2} 

\ccRefines

\ccc{Kernel::CompareY_2}

\ccCreationVariable{fo}

An object \ccVar\ of this type must provide in addition: 

\ccMemberFunction{Comparison_result operator()
	(const CircularKernel::Circular_arc_point_2 &p,
         const CircularKernel::Circular_arc_point_2 &q );}
{Compares the $y$-coordinates of $p$ and $q$.}

\ccSeeAlso

\ccRefIdfierPage{CircularKernel::CompareX_2}\\
\ccRefIdfierPage{CircularKernel::CompareXY_2}\\
\ccRefIdfierPage{CircularKernel::Equal_2}

\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{CircularKernel::CompareXY_2} 

\ccRefines

\ccc{Kernel::CompareXY_2}

\ccCreationVariable{fo}

An object \ccVar\ of this type must provide in addition: 

\ccMemberFunction{Comparison_result operator()
	(const CircularKernel::Circular_arc_point_2 &p,
         const CircularKernel::Circular_arc_point_2 &q );}
{Compares $p$ and $q$ according to the lexicographic ordering on $x$- and $y$-coordinates.}

\ccSeeAlso

\ccRefIdfierPage{CircularKernel::CompareX_2}\\
\ccRefIdfierPage{CircularKernel::CompareY_2}\\
\ccRefIdfierPage{CircularKernel::Equal_2}

\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{CircularKernel::CompareYatX_2}

\ccCreationVariable{fo}

An object \ccVar\ of this type must provide two operators that compare 
a point $p$ and an arc $a$ on the vertical line passing through $p$.

\ccMemberFunction{Comparison_result operator()
	(const CircularKernel::Circular_arc_point_2 &p,
        const CircularKernel::Circular_arc_2 &a);}
{For a circular arc.
\ccPrecond{The arc $a$ must be monotone and $p$ must be in the vertical range 
of $a$.}}

\ccMemberFunction{Comparison_result operator()
	(const CircularKernel::Circular_arc_point_2 &p,
        const CircularKernel::Line_arc_2 &a);}
{Same for a segment.}

\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{CircularKernel::CompareYtoRight_2}

\ccCreationVariable{fo}

An object \ccVar\ of this type must provide operators that compare vertically 
two arcs on the right side of a common point $p$:

\ccMemberFunction{Comparison_result operator()
	(const Circular_kernel_2::Circular_arc_2 &a1,
	const Circular_kernel_2::Circular_arc_2 &a2,
        const Circular_kernel_2::Circular_arc_point_2 &p);}
{For two circular arcs.
\ccPrecond{$p$ must be a common point to $a_1$ and $a_2$, 
and $a_1$ and $a_2$ must be defined to the right of $p$.}}

\ccMemberFunction{Comparison_result operator()
	(const Circular_kernel_2::Line_arc_2 &a1,
        const Circular_kernel_2::Line_arc_2 &a2,
        const Circular_kernel_2::Circular_arc_point_2 &p);}
{Same for two segments.}

\ccMemberFunction{Comparison_result operator()
	(const Circular_kernel_2::Line_arc_2 &a1,
        const Circular_kernel_2::Circular_arc_2 &a2,
        const Circular_kernel_2::Circular_arc_point_2 &p);}
{For a segment and an arc.}

\ccMemberFunction{Comparison_result operator()
	(const Circular_kernel_2::Circular_arc_2 &a1,
        const Circular_kernel_2::Line_arc_2 &a2,
        const Circular_kernel_2::Circular_arc_point_2 &p);}
{Same as previous.}

\end{ccRefFunctionObjectConcept}
