Wildmeshing Toolkit
Loading...
Searching...
No Matches
VolumeRemesher.hpp
1#pragma once
2
3// VolumeRemesher's 3D API (embed_tri_in_poly_mesh, and vol_rem::TetMesh from
4// delaunay3d_wrapper.h), minus the macros it leaks. Include this instead of
5// <VolumeRemesher/embed.h>.
6//
7// Delaunay3D, which VolumeRemesher includes from embed.h on, marks its tetrahedra with
8// `#define DT_UNKNOWN 0`, `DT_OUT 1` and `DT_IN 2`. glibc's <dirent.h> declares DT_UNKNOWN as
9// an enumerator, so on Linux any translation unit that reaches <dirent.h> afterwards -- Eigen's
10// SparseExtra does, through libigl -- expands it to `0 = 0` and fails to compile. macOS defines
11// DT_UNKNOWN as the same macro, and Windows has no <dirent.h>, so only Linux breaks.
12//
13// Dropping the macros here is safe: the preprocessor has already expanded them in Delaunay3D's
14// templates by the time the header ends, and nothing in the toolkit uses them.
15#include <VolumeRemesher/embed.h>
16
17#undef DT_UNKNOWN
18#undef DT_OUT
19#undef DT_IN