Repair the binary I/O of CDT_3

This commit is contained in:
Laurent Rineau 2022-12-05 09:56:14 +01:00
parent 1a8ea5e166
commit 5443a005bd
4 changed files with 17 additions and 14 deletions

View File

@ -27,6 +27,7 @@
#include <CGAL/Regular_triangulation_3.h> #include <CGAL/Regular_triangulation_3.h>
#include <CGAL/Regular_triangulation_cell_base_3.h> #include <CGAL/Regular_triangulation_cell_base_3.h>
#include <CGAL/Regular_triangulation_cell_base_with_weighted_circumcenter_3.h> #include <CGAL/Regular_triangulation_cell_base_with_weighted_circumcenter_3.h>
#include <CGAL/type_traits.h>
#ifdef CGAL_PERIODIC_3_MESH_3_CONFIG_H #ifdef CGAL_PERIODIC_3_MESH_3_CONFIG_H
#include <CGAL/Periodic_3_triangulation_3.h> #include <CGAL/Periodic_3_triangulation_3.h>
@ -40,17 +41,12 @@
namespace CGAL { namespace CGAL {
// SFINAE test // SFINAE test
template <typename T, typename U> template <typename T, class = void>
class has_io_signature struct has_io_signature : public std::false_type {};
{
private:
template <U> struct helper;
template <typename V> static char check(helper<&V::io_signature> *);
template <typename V> static char (&check(...))[2];
public: template <typename T>
enum { value = (sizeof(check<T>(0)) == sizeof(char)) }; struct has_io_signature<T, CGAL::cpp17::void_t<decltype(T::io_signature())>>
}; : public std::true_type {};
template <class T, bool has_io_signature> template <class T, bool has_io_signature>
struct Get_io_signature_aux struct Get_io_signature_aux
@ -76,10 +72,7 @@ template <class T>
struct Get_io_signature struct Get_io_signature
: public Get_io_signature_aux< : public Get_io_signature_aux<
T, T,
(has_io_signature<T, std::string (T::*)() >::value || has_io_signature<T>::value
has_io_signature<T, std::string (T::*)() const >::value ||
has_io_signature<T, std::string (*)() >::value ) // signature for
// static mem func
> >
{ {
}; };

View File

@ -27,6 +27,10 @@ struct is_same_or_derived :
>::type >::type
{}; {};
namespace cpp17 {
template< class... > using void_t = void;
} // end namespace cpp17
} }
#endif // CGAL_TYPE_TRAITS_H #endif // CGAL_TYPE_TRAITS_H

View File

@ -66,6 +66,7 @@ public:
template <typename T_3> template <typename T_3>
class Conforming_Delaunay_triangulation_3 : public T_3 { class Conforming_Delaunay_triangulation_3 : public T_3 {
public:
using Vertex_handle = typename T_3::Vertex_handle; using Vertex_handle = typename T_3::Vertex_handle;
using Cell_handle = typename T_3::Cell_handle; using Cell_handle = typename T_3::Cell_handle;
using Point = typename T_3::Point; using Point = typename T_3::Point;

View File

@ -162,6 +162,11 @@ public:
using Geom_traits = typename T_3::Geom_traits; using Geom_traits = typename T_3::Geom_traits;
using Face_index = CDT_3_face_index; using Face_index = CDT_3_face_index;
static std::string io_signature() {
return Get_io_signature<Conforming_Dt>()();
}
private: private:
struct CDT_2_types { struct CDT_2_types {
using Projection_traits = Projection_traits_3<Geom_traits>; using Projection_traits = Projection_traits_3<Geom_traits>;