// Copyright (c) 2003,2004,2005,2006 INRIA Sophia-Antipolis (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v5.2/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_traits_2.h $ // $Id: Segment_Delaunay_graph_traits_2.h 0779373 2020-03-26T13:31:46+01:00 Sébastien Loriot // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Menelaos Karavelas #ifndef CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H #define CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H #include #include #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 #include #endif // CGAL_SEGMENT_DELAUNAY_GRAPH_TRAITS_2_H