| /* |
| * Copyright 2022 Rive |
| */ |
| |
| // This should always be included by any other rive files, |
| // as it performs basic self-consistency checks, and provides |
| // shared common types and macros. |
| |
| #ifndef _RIVE_TYPES_HPP_ |
| #define _RIVE_TYPES_HPP_ |
| |
| // We treat NDEBUG is the root of truth from the user. |
| // Our other symbols (DEBUG, RELEASE) must agree with it. |
| // ... its ok if our client doesn't set these, we will do that... |
| // ... they just can't set them inconsistently. |
| |
| #ifdef NDEBUG |
| // we're in release mode |
| #ifdef DEBUG |
| #error "can't define both DEBUG and NDEBUG" |
| #endif |
| #ifndef RELEASE |
| #define RELEASE |
| #endif |
| #else |
| // we're in debug mode |
| #ifdef RELEASE |
| #error "can't define RELEASE and not NDEBUG" |
| #endif |
| #ifndef DEBUG |
| #define DEBUG |
| #endif |
| #endif |
| |
| // We really like these headers, so we include them all the time. |
| |
| #include <cassert> |
| #include <cstddef> |
| #include <cstdint> |
| #include <memory> |
| #include <type_traits> |
| |
| #endif // rive_types |