// Copyright (c) 2005 INRIA Sophia-Antipolis (France) // All rights reserved. // // Authors : Monique Teillaud // Sylvain Pion // Julien Hazebrouck // // Partially supported by the IST Programme of the EU as a Shared-cost // RTD (FET Open) Project under Contract No IST-2000-26473 // (ECG - Effective Computational Geometry for Curves and Surfaces) // and a STREP (FET Open) Project under Contract No IST-006413 // (ACS -- Algorithms for Complex Shapes) // file : include/CGAL/Circular_kernel.h #ifndef CGAL_CIRCULAR_KERNEL_H #define CGAL_CIRCULAR_KERNEL_H #include #include #include #include #include #include #include #include #include #include #include namespace CGAL { namespace CGALi { template < class CircularKernel, class LinearKernelBase > struct Circular_kernel_base: public LinearKernelBase { typedef CGALi::Circular_arc_2 Circular_arc_2; typedef CGALi::Circular_arc_point_2 Circular_arc_point_2; typedef CGALi::Line_arc_2 Line_arc_2; #define CGAL_Curved_Kernel_pred(Y,Z) \ typedef CircularFunctors::Y Y; \ Y Z() const { return Y(); } #define CGAL_Curved_Kernel_cons(Y,Z) CGAL_Curved_Kernel_pred(Y,Z) #include }; } // namespace CGALi template < class LinearKernel, class AlgebraicKernel > struct Circular_kernel_2 : public Curved_kernel_type_equality_wrapper < CGALi::Circular_kernel_base < Circular_kernel_2, typename LinearKernel::template Base >::Type >, Circular_kernel_2 > { typedef Circular_kernel_2 Self; typedef typename LinearKernel::template Base >::Type Linear_kernel; typedef AlgebraicKernel Algebraic_kernel; // for Lazy hexagons/bbox kernels // Please remove this if you consider it to be sloppy struct Curved_tag{}; typedef Curved_tag Definition_tag; // typedef typename LinearKernel::RT RT; typedef typename LinearKernel::FT FT; typedef typename Algebraic_kernel::Root_of_2 Root_of_2; typedef typename Algebraic_kernel::Root_for_circles_2_2 Root_for_circles_2_2; typedef typename Algebraic_kernel::Polynomial_for_circles_2_2 Polynomial_for_circles_2_2; typedef typename Algebraic_kernel::Polynomial_1_2 Polynomial_1_2; // typedef CGAL::Object Object_2; // typedef CGAL::Object Object_3; }; } // namespace CGAL #endif // CGAL_CURVED_KERNEL_H