40 #ifndef GEOGRAM_BASIC_COMMON
41 #define GEOGRAM_BASIC_COMMON
194 #if (defined(NDEBUG) || defined(GEOGRAM_PSM)) && !defined(GEOGRAM_PSM_DEBUG)
204 #if defined(__ANDROID__)
205 #define GEO_OS_ANDROID
208 #if defined(__linux__)
213 #ifndef GEO_OS_ANDROID
221 #if defined(__INTEL_COMPILER)
222 # define GEO_COMPILER_INTEL
223 #elif defined(__clang__)
224 # define GEO_COMPILER_CLANG
225 #elif defined(__GNUC__)
226 # define GEO_COMPILER_GCC
228 # error "Unsupported compiler"
232 #if defined(__x86_64)
234 # define GEO_PROCESSOR_X86
241 #elif defined(_WIN32) || defined(_WIN64)
243 #define GEO_OS_WINDOWS
244 #define GEO_PROCESSOR_X86
250 #if defined(_MSC_VER)
251 # define GEO_COMPILER_MSVC
252 #elif defined(__MINGW32__) || defined(__MINGW64__)
253 # define GEO_COMPILER_MINGW
264 #elif defined(__APPLE__)
273 #if defined(__clang__)
274 # define GEO_COMPILER_CLANG
275 #elif defined(__GNUC__)
276 # define GEO_COMPILER_GCC
278 # error "Unsupported compiler"
281 #if defined(__x86_64) || defined(__ppc64__) || defined(__arm64__) || defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64)
289 #elif defined(__EMSCRIPTEN__)
293 #define GEO_OS_EMSCRIPTEN
295 #define GEO_COMPILER_EMSCRIPTEN
296 #define GEO_COMPILER_CLANG
300 #error "Unsupported operating system"
303 #if defined(GEO_COMPILER_GCC) || \
304 defined(GEO_COMPILER_CLANG) || \
305 defined(GEO_COMPILER_MINGW) || \
306 defined(GEO_COMPILER_EMSCRIPTEN)
307 #define GEO_COMPILER_GCC_FAMILY
312 #define GEO_OS_WINDOWS
314 #define GEO_OS_ANDROID
316 #define GEO_COMPILER_INTEL
317 #define GEO_COMPILER_MSVC
324 #define CPP_CONCAT_(A, B) A ## B
330 #define CPP_CONCAT(A, B) CPP_CONCAT_(A, B)
334 #elif defined(GEO_COMPILER_GCC_FAMILY) || \
335 defined(GEO_COMPILER_INTEL)
336 #define GEO_NORETURN __attribute__((noreturn))
342 #define GEO_NORETURN_DECL
343 #elif defined(GEO_COMPILER_MSVC)
344 #define GEO_NORETURN_DECL __declspec(noreturn)
346 #define GEO_NORETURN_DECL
349 #if defined(GEO_COMPILER_CLANG) || defined(GEO_COMPILER_EMSCRIPTEN)
350 #if __has_feature(cxx_noexcept)
351 #define GEO_NOEXCEPT noexcept
361 #define GEO_NOEXCEPT throw()
364 #define FOR(I,UPPERBND) for(index_t I = 0; I<index_t(UPPERBND); ++I)
369 #ifdef GEO_COMPILER_CLANG
370 #pragma GCC diagnostic ignored "-Walloca"
Basic definitions for the Geogram C API.
Global Vorpaline namespace.
void terminate()
Cleans up Geogram.
@ GEOGRAM_INSTALL_LOCALE
Sets the locale to POSIX.
@ GEOGRAM_INSTALL_HANDLERS
Install Geogram's signal handlers.
@ GEOGRAM_INSTALL_BIBLIO
Enable global citation database.
@ GEOGRAM_INSTALL_NONE
Do not install error handlers.
@ GEOGRAM_INSTALL_FPE
Enable or disable FPE during initialization.
@ GEOGRAM_INSTALL_ALL
Install everything.
@ GEOGRAM_INSTALL_ERRNO
Reset errno to 0.
void initialize(int flags=GEOGRAM_INSTALL_NONE)
Initialize Geogram.