diff --git a/Convex_hull_3/include/CGAL/Convex_hull_3/dual/halfspace_intersection_interior_point_3.h b/Convex_hull_3/include/CGAL/Convex_hull_3/dual/halfspace_intersection_interior_point_3.h index afdab1fdee08..ba396c0e2e02 100644 --- a/Convex_hull_3/include/CGAL/Convex_hull_3/dual/halfspace_intersection_interior_point_3.h +++ b/Convex_hull_3/include/CGAL/Convex_hull_3/dual/halfspace_intersection_interior_point_3.h @@ -180,7 +180,7 @@ halfspace_intersection_interior_point_3(PlaneIterator begin, PlaneIterator end) typedef typename Kernel_traits::value_type>::Kernel K; // choose exact integral type - typedef typename internal::Exact_field_selector::Type ET; + typedef typename internal::Exact_field_selector::Type ET; // find a point inside the intersection internal::Interior_polyhedron_3 interior; diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 388f336227b9..c52173c61a70 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -15,7 +15,7 @@ Release date: October 2023 [Release 5.6](https://github.com/CGAL/cgal/releases/tag/v5.6) ----------- -Release date: June 2023 +Release date: July 2023 ### General Changes @@ -186,6 +186,13 @@ Release date: June 2023 to describe 3D simplicial meshes, and makes the data structure independent from the [tetrahedral mesh generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) package. +### [Tetrahedral Remeshing](https://doc.cgal.org/5.6/Manual/packages.html#PkgTetrahedralRemeshing) +- **Breaking change**: The template parameters of + [`CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3`](https://doc.cgal.org/5.6/Tetrahedral_remeshing/group__PkgTetrahedralRemeshingClasses.html#ga7ef4f8c0c1ed715c34389ea4ee851a92) + and + [`CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3`](https://doc.cgal.org/5.6/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__cell__base__3.html) + have been modified. + ### [3D Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) - Added two new named parameters to the named constructor diff --git a/Intersections_2/test/Intersections_2/test_intersections_2.cpp b/Intersections_2/test/Intersections_2/test_intersections_2.cpp index 5c15555404af..dad2d129c15f 100644 --- a/Intersections_2/test/Intersections_2/test_intersections_2.cpp +++ b/Intersections_2/test/Intersections_2/test_intersections_2.cpp @@ -924,9 +924,9 @@ int main() { CGAL::Set_ieee_double_precision pfr; - Test< CGAL::Simple_cartesian::Type > >().run(); + Test< CGAL::Simple_cartesian::Type > >().run(); Test< CGAL::Cartesian >().run(); - Test< CGAL::Homogeneous::Type > >().run(); + Test< CGAL::Homogeneous::Type > >().run(); Test< CGAL::Exact_predicates_inexact_constructions_kernel >().run(); Test< CGAL::Exact_predicates_exact_constructions_kernel >().run(); } diff --git a/Number_types/include/CGAL/Exact_integer.h b/Number_types/include/CGAL/Exact_integer.h index 3ba3fb9816a6..86b13dd3dc63 100644 --- a/Number_types/include/CGAL/Exact_integer.h +++ b/Number_types/include/CGAL/Exact_integer.h @@ -40,7 +40,7 @@ typedef unspecified_type Exact_integer; #else // not DOXYGEN_RUNNING -typedef internal::Exact_ring_selector::Type Exact_integer; +using Exact_integer = internal::Exact_NT_backend::Integer; #endif // not DOXYGEN_RUNNING diff --git a/Number_types/include/CGAL/Exact_rational.h b/Number_types/include/CGAL/Exact_rational.h index f07c61d42a95..7b53700b5b49 100644 --- a/Number_types/include/CGAL/Exact_rational.h +++ b/Number_types/include/CGAL/Exact_rational.h @@ -42,7 +42,7 @@ typedef unspecified_type Exact_rational; #else // not DOXYGEN_RUNNING -typedef internal::Exact_field_selector::Type Exact_rational; +using Exact_rational = internal::Exact_NT_backend::Rational; #endif diff --git a/Number_types/include/CGAL/Number_types/internal/Exact_type_selector.h b/Number_types/include/CGAL/Number_types/internal/Exact_type_selector.h index f0d8e961c325..b0f645eb3a6e 100644 --- a/Number_types/include/CGAL/Number_types/internal/Exact_type_selector.h +++ b/Number_types/include/CGAL/Number_types/internal/Exact_type_selector.h @@ -156,25 +156,27 @@ constexpr ENT_backend_choice Default_exact_nt_backend = static_cast -struct Exact_field_selector -{ - using Type = typename Exact_NT_backend::Rational; -}; +struct Exact_field_selector; template < typename > -struct Exact_ring_selector -{ - using Type = typename Exact_NT_backend::Integer; -}; - -template <> -struct Exact_ring_selector -{ - using Type = typename Exact_NT_backend::Ring_for_float; +struct Exact_ring_selector; + +#define CGAL_EXACT_SELECTORS_SPECS(X) \ +template <> \ +struct Exact_ring_selector \ +{ \ + using Type = typename Exact_NT_backend::Ring_for_float; \ +}; \ +\ +template <> \ +struct Exact_field_selector \ +{ \ + using Type = typename Exact_NT_backend::Rational; \ }; -template <> -struct Exact_ring_selector : Exact_ring_selector { }; +CGAL_EXACT_SELECTORS_SPECS(double) +CGAL_EXACT_SELECTORS_SPECS(float) +CGAL_EXACT_SELECTORS_SPECS(int) template <> struct Exact_field_selector @@ -188,6 +190,10 @@ template <> struct Exact_field_selector > { typedef Quotient Type; }; +template <> +struct Exact_ring_selector > +{ typedef Quotient Type; }; + // And we specialize for the following types : #ifdef CGAL_USE_GMP template <> @@ -249,6 +255,10 @@ struct Exact_ring_selector template <> struct Exact_field_selector { typedef leda_real Type; }; + +template <> +struct Exact_ring_selector +{ typedef leda_real Type; }; #endif #ifdef CGAL_USE_CORE @@ -277,6 +287,26 @@ struct Exact_field_selector::Rational> template <> struct Exact_ring_selector::Rational> { typedef Exact_NT_backend::Rational Type; }; + + +#ifdef CGAL_USE_GMP +template <> +struct Exact_field_selector::Integer> +{ typedef Exact_NT_backend::Rational Type; }; + +template <> +struct Exact_ring_selector::Integer> +{ typedef Exact_NT_backend::Integer Type; }; + +template <> +struct Exact_field_selector::Rational> +{ typedef Exact_NT_backend::Rational Type; }; + +template <> +struct Exact_ring_selector::Rational> +{ typedef Exact_NT_backend::Rational Type; }; +#endif + #endif #ifndef CGAL_NO_DEPRECATED_CODE @@ -287,4 +317,6 @@ struct Exact_type_selector : Exact_field_selector< ET > {}; } } // namespace CGAL::internal +#undef CGAL_EXACT_SELECTORS_SPECS + #endif // CGAL_INTERNAL_EXACT_TYPE_SELECTOR_H