// Copyright (c) 2003 // Utrecht University (The Netherlands), // ETH Zurich (Switzerland), // INRIA Sophia-Antipolis (France), // Max-Planck-Institute Saarbruecken (Germany), // and Tel-Aviv University (Israel). All rights reserved. // // This file is part of CGAL (www.cgal.org) // // $URL$ // $Id$ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Menelaos Karavelas, Sylvain Pion #ifndef CGAL_EXACT_PREDICATES_INEXACT_CONSTRUCTIONS_KERNEL_H #define CGAL_EXACT_PREDICATES_INEXACT_CONSTRUCTIONS_KERNEL_H #include #include #include #include #include #include namespace CGAL { constexpr bool epick_use_static_filter = #ifdef CGAL_NO_STATIC_FILTERS false; #else true; #endif // Here Epick is a class, and Double_precision_epick an alias to it. class Epick; class Single_precision_epick; using Double_precision_epick = Epick; namespace internal { // Basic objects, constructions, and predicates, using the same base class as // Simple_cartesian: Cartesian_base without reference counting. template using Epick_base = typename Simple_cartesian::template Base::Type; // Add the type equality property, by changing the objects types template using Epick_base_with_type_equality = Type_equality_wrapper, Kernel>; // Change the predicates to filtered predicates (with static filters or not) template using Epick_with_filtered_predicates = Filtered_kernel_adaptor, epick_use_static_filter>; }; // The following is equivalent to Filtered_kernel< Simple_cartesian >, // but it's shorter in terms of template name length (for error messages, mangling...). class Epick : public internal::Epick_with_filtered_predicates {}; template <> struct Triangulation_structural_filtering_traits { using Use_structural_filtering_tag = Tag_true; }; using Exact_predicates_inexact_constructions_kernel = Epick; // This kernel is Epick with the difference that its `FT` is `float`. class Single_precision_epick : public Converting_constructions_kernel_adaptor< internal::Epick_with_filtered_predicates, Double_precision_epick> {}; template <> struct Triangulation_structural_filtering_traits { using Use_structural_filtering_tag = Tag_true; }; } //namespace CGAL #endif // CGAL_EXACT_PREDICATES_INEXACT_CONSTRUCTIONS_KERNEL_H