// Copyright (c) 2003,2004,2005,2006 INRIA Sophia-Antipolis (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // You can redistribute it and/or modify it under the terms of the GNU // General Public License as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // // $URL$ // $Id$ // // // Author(s) : Menelaos Karavelas #ifndef CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H #define CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H #include #include #include #include namespace CGAL { //----------------------------------------------------------------------- // the Traits classes //----------------------------------------------------------------------- // this traits class does support intersecting segments // the following definition is okay when giving Field_with_sqrt_tag // for all other tags I need a specialization template::Algebraic_category /*Field_tag*/> struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 {}; template struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 {}; template struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 {}; template struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 {}; // Concept checking template struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 { Segment_Delaunay_graph_traits_2() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Field_with_sqrt_tag ( R() ); } }; template struct Segment_Delaunay_graph_traits_2 : public Segment_Delaunay_graph_traits_base_2 { Segment_Delaunay_graph_traits_2() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Field_with_sqrt_tag ( R() ); } }; // Specializations for filtered_kernel template struct Segment_Delaunay_graph_traits_2,Field_tag> : public Segment_Delaunay_graph_filtered_traits_2::Exact_kernel, Field_tag, typename Filtered_kernel::Approximate_kernel, Field_with_sqrt_tag> {}; template struct Segment_Delaunay_graph_traits_2,Field_with_sqrt_tag> : public Segment_Delaunay_graph_filtered_traits_2::Exact_kernel, Field_tag, typename Filtered_kernel::Approximate_kernel, Field_with_sqrt_tag> {}; //========================================================================= // this traits class does NOT support intersecting segments template::Algebraic_category /*Integral_domain_without_division_tag*/> struct Segment_Delaunay_graph_traits_without_intersections_2 : public Segment_Delaunay_graph_traits_base_2 {}; template struct Segment_Delaunay_graph_traits_without_intersections_2 : public Segment_Delaunay_graph_traits_base_2 { Segment_Delaunay_graph_traits_without_intersections_2() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Integral_domain_without_division_tag_OR_Field_with_sqrt_tag ( R() ); } }; template struct Segment_Delaunay_graph_traits_without_intersections_2 : public Segment_Delaunay_graph_traits_base_2 { Segment_Delaunay_graph_traits_without_intersections_2() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Integral_domain_without_division_tag_OR_Field_with_sqrt_tag ( R() ); } }; // Specialization for filtered_kernel template struct Segment_Delaunay_graph_traits_without_intersections_2, Integral_domain_without_division_tag> : public Segment_Delaunay_graph_filtered_traits_without_intersections_2::Exact_kernel, Integral_domain_without_division_tag, typename Filtered_kernel::Approximate_kernel, Field_with_sqrt_tag> {}; template struct Segment_Delaunay_graph_traits_without_intersections_2, Field_with_sqrt_tag> : public Segment_Delaunay_graph_filtered_traits_without_intersections_2::Exact_kernel, Integral_domain_without_division_tag, typename Filtered_kernel::Approximate_kernel, Field_with_sqrt_tag> {}; } //namespace CGAL #endif // CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H