\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}