40 #ifndef GEOGRAM_BASIC_COMMON
41 #define GEOGRAM_BASIC_COMMON
67 GEOGRAM_NO_HANDLER = 0,
68 GEOGRAM_INSTALL_HANDLERS = 1
85 void GEOGRAM_API
initialize(
int flags = GEOGRAM_INSTALL_HANDLERS);
174 #if (defined(NDEBUG) || defined(GEOGRAM_PSM)) && !defined(GEOGRAM_PSM_DEBUG)
184 #if defined(__ANDROID__)
185 #define GEO_OS_ANDROID
188 #if defined(__linux__)
193 #ifndef GEO_OS_ANDROID
201 #if defined(__INTEL_COMPILER)
202 # define GEO_COMPILER_INTEL
203 #elif defined(__clang__)
204 # define GEO_COMPILER_CLANG
205 #elif defined(__GNUC__)
206 # define GEO_COMPILER_GCC
208 # error "Unsupported compiler"
212 #if defined(__x86_64)
214 # define GEO_PROCESSOR_X86
221 #elif defined(_WIN32) || defined(_WIN64)
223 #define GEO_OS_WINDOWS
224 #define GEO_PROCESSOR_X86
230 #if defined(_MSC_VER)
231 # define GEO_COMPILER_MSVC
232 #elif defined(__MINGW32__) || defined(__MINGW64__)
233 # define GEO_COMPILER_MINGW
244 #elif defined(__APPLE__)
253 #if defined(__clang__)
254 # define GEO_COMPILER_CLANG
255 #elif defined(__GNUC__)
256 # define GEO_COMPILER_GCC
258 # error "Unsupported compiler"
261 #if defined(__x86_64) || defined(__ppc64__) || defined(__arm64__) || defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64)
269 #elif defined(__EMSCRIPTEN__)
273 #define GEO_OS_EMSCRIPTEN
275 #define GEO_COMPILER_EMSCRIPTEN
279 #error "Unsupported operating system"
282 #if defined(GEO_COMPILER_GCC) || \
283 defined(GEO_COMPILER_CLANG) || \
284 defined(GEO_COMPILER_MINGW) || \
285 defined(GEO_COMPILER_EMSCRIPTEN)
286 #define GEO_COMPILER_GCC_FAMILY
291 #define GEO_OS_WINDOWS
293 #define GEO_OS_ANDROID
295 #define GEO_COMPILER_INTEL
296 #define GEO_COMPILER_MSVC
303 #define CPP_CONCAT_(A, B) A ## B
309 #define CPP_CONCAT(A, B) CPP_CONCAT_(A, B)
313 #elif defined(GEO_COMPILER_GCC_FAMILY) || \
314 defined(GEO_COMPILER_INTEL)
315 #define GEO_NORETURN __attribute__((noreturn))
321 #define GEO_NORETURN_DECL
322 #elif defined(GEO_COMPILER_MSVC)
323 #define GEO_NORETURN_DECL __declspec(noreturn)
325 #define GEO_NORETURN_DECL
328 #if defined(GEO_COMPILER_CLANG) || defined(GEO_COMPILER_EMSCRIPTEN)
329 #if __has_feature(cxx_noexcept)
330 #define GEO_NOEXCEPT noexcept
340 #define GEO_NOEXCEPT throw()
343 #define FOR(I,UPPERBND) for(index_t I = 0; I<index_t(UPPERBND); ++I)
348 #ifdef GEO_COMPILER_CLANG
349 #pragma GCC diagnostic ignored "-Walloca"
Basic definitions for the Geogram C API.
Global Vorpaline namespace.
void terminate()
Cleans up Geogram.
void initialize(int flags=GEOGRAM_INSTALL_HANDLERS)
Initialize Geogram.