mirror of https://github.com/CGAL/cgal
check if Kernel provides the nested type
This commit is contained in:
parent
e5a07965ce
commit
9e2f375d10
|
|
@ -21,6 +21,7 @@
|
||||||
#include <CGAL/Interval_nt.h>
|
#include <CGAL/Interval_nt.h>
|
||||||
#include <CGAL/Kernel/Type_mapper.h>
|
#include <CGAL/Kernel/Type_mapper.h>
|
||||||
#include <CGAL/Cartesian_converter.h>
|
#include <CGAL/Cartesian_converter.h>
|
||||||
|
#include <CGAL/STL_Extension/internal/Has_nested_type_Has_filtered_predicates_tag.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
@ -59,14 +60,16 @@ public:
|
||||||
|
|
||||||
static auto get_type()
|
static auto get_type()
|
||||||
{
|
{
|
||||||
|
if constexpr (::CGAL::internal::Has_nested_type_Has_filtered_predicates_tag<K>::value)
|
||||||
|
{
|
||||||
if constexpr (K::Has_filtered_predicates_tag::value) {
|
if constexpr (K::Has_filtered_predicates_tag::value) {
|
||||||
return typename K::Exact_kernel{};
|
return typename K::Exact_kernel{};
|
||||||
} else {
|
|
||||||
if constexpr (std::is_floating_point_v<typename K::FT>)
|
|
||||||
return CGAL::Simple_cartesian<CGAL::Exact_rational>{};
|
|
||||||
else
|
|
||||||
return K{};
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if constexpr (std::is_floating_point_v<typename K::FT>)
|
||||||
|
return CGAL::Simple_cartesian<CGAL::Exact_rational>{};
|
||||||
|
else
|
||||||
|
return K{};
|
||||||
}
|
}
|
||||||
|
|
||||||
using Rational_kernel = decltype(get_type());
|
using Rational_kernel = decltype(get_type());
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
// Copyright (c) 2024 GeometryFactory Sarl (France)
|
||||||
|
// 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) : Sébastien Loriot
|
||||||
|
|
||||||
|
#ifndef CGAL_HAS_NESTED_TYPE_HAS_FILTERED_PREDICATES_TAG_H
|
||||||
|
#define CGAL_HAS_NESTED_TYPE_HAS_FILTERED_PREDICATES_TAG_H
|
||||||
|
|
||||||
|
#include <boost/mpl/has_xxx.hpp>
|
||||||
|
|
||||||
|
namespace CGAL {
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(Has_nested_type_Has_filtered_predicates_tag, Has_filtered_predicates_tag, false)
|
||||||
|
|
||||||
|
} } // end namespace CGAL::internal
|
||||||
|
|
||||||
|
#endif // CGAL_HAS_NESTED_TYPE_HAS_FILTERED_PREDICATES_TAG_H
|
||||||
Loading…
Reference in New Issue