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"
220#elif defined(_WIN32) || defined(_WIN64)
222#define GEO_OS_WINDOWS
229# define GEO_COMPILER_MSVC
230#elif defined(__MINGW32__) || defined(__MINGW64__)
231# define GEO_COMPILER_MINGW
242#elif defined(__APPLE__)
251#if defined(__clang__)
252# define GEO_COMPILER_CLANG
253#elif defined(__GNUC__)
254# define GEO_COMPILER_GCC
256# error "Unsupported compiler"
259#if defined(__x86_64) || defined(__ppc64__) || defined(__arm64__) || defined(__aarch64__)
267#elif defined(__EMSCRIPTEN__)
271#define GEO_OS_EMSCRIPTEN
273#define GEO_COMPILER_EMSCRIPTEN
277#error "Unsupported operating system"
280#if defined(GEO_COMPILER_GCC) || \
281 defined(GEO_COMPILER_CLANG) || \
282 defined(GEO_COMPILER_MINGW) || \
283 defined(GEO_COMPILER_EMSCRIPTEN)
284#define GEO_COMPILER_GCC_FAMILY
289#define GEO_OS_WINDOWS
291#define GEO_OS_ANDROID
293#define GEO_COMPILER_INTEL
294#define GEO_COMPILER_MSVC
301#define CPP_CONCAT_(A, B) A ## B
307#define CPP_CONCAT(A, B) CPP_CONCAT_(A, B)
311#elif defined(GEO_COMPILER_GCC_FAMILY) || \
312 defined(GEO_COMPILER_INTEL)
313#define GEO_NORETURN __attribute__((noreturn))
319#define GEO_NORETURN_DECL
320#elif defined(GEO_COMPILER_MSVC)
321#define GEO_NORETURN_DECL __declspec(noreturn)
323#define GEO_NORETURN_DECL
326#if defined(GEO_COMPILER_CLANG) || defined(GEO_COMPILER_EMSCRIPTEN)
327#if __has_feature(cxx_noexcept)
328#define GEO_NOEXCEPT noexcept
338#define GEO_NOEXCEPT throw()
341#define FOR(I,UPPERBND) for(index_t I = 0; I<index_t(UPPERBND); ++I)
346#ifdef GEO_COMPILER_CLANG
347#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.