Use a clearer name than "Static_filtered_predicate" for EPECK static filters

This commit is contained in:
Mael Rouxel-Labbé 2024-12-20 16:00:20 +01:00
parent a886420841
commit 468dde773d
2 changed files with 14 additions and 7 deletions

View File

@ -9,15 +9,15 @@
//
// Author(s) : Andreas Fabri, Laurent Rineau
#ifndef CGAL_STATIC_FILTERED_PREDICATE_H
#define CGAL_STATIC_FILTERED_PREDICATE_H
#ifndef CGAL_EPIC_PREDICATE_IF_CONVERTIBLE_H
#define CGAL_EPIC_PREDICATE_IF_CONVERTIBLE_H
#include <CGAL/Epic_converter.h>
namespace CGAL {
template <typename AK, typename FP, typename EpicP>
class Static_filtered_predicate {
class EPIC_predicate_if_convertible {
public:
FP fp;
EpicP epicp;
@ -54,4 +54,4 @@ public:
} // CGAL
#endif // CGAL_STATIC_FILTERED_PREDICATE_H
#endif // CGAL_EPIC_PREDICATE_IF_CONVERTIBLE_H

View File

@ -86,7 +86,7 @@ public:
#ifdef CGAL_NO_STATIC_FILTERS_FOR_LAZY_KERNEL
enum { Has_static_filters = false };
#else
// @fixme, this should be 'true' but it's broken because Conditional_EPIC_predicate
// @fixme, this should be 'true' but it's broken because EPIC_predicate_if_convertible
// assumes the static filtered predicate and the (non-static) filtered predicate
// have the same signature, which is not always the case, for example in
// Do_intersect_3(Sphere_3, Bbox_3, *bool*)
@ -137,8 +137,15 @@ public:
typedef Filtered_predicate<typename Exact_kernel::P, typename Approximate_kernel::P, C2E, C2F> P; \
P Pf() const { return P(); }
#else
// - the first template parameter is because either it fits in a double, or not, so
// we might as well use the approximate kernel directly rather than the complete lazy kernel
// - the second is the predicate to be called if EPICK is not usable
// - the third is the equivalent predicate in EPICK
#define CGAL_Kernel_pred(P, Pf) \
typedef Static_filtered_predicate<Approximate_kernel, Filtered_predicate<typename Exact_kernel::P, typename Approximate_kernel::P, C2E, C2F>, Exact_predicates_inexact_constructions_kernel::P> P; \
typedef EPIC_predicate_if_convertible<Approximate_kernel, \
Filtered_predicate<typename Exact_kernel::P, \
typename Approximate_kernel::P, C2E, C2F>, \
Exact_predicates_inexact_constructions_kernel::P> P; \
P Pf() const { return P(); }
#endif