21#define BJ_VERSION_MAJOR(version) (((version) >> 22U) & 0x3FFU)
26#define BJ_VERSION_MINOR(version) (((version) >> 12U) & 0x3FFU)
31#define BJ_VERSION_PATCH(version) ((version) & 0xFFFU)
38#define BJ_MAKE_VERSION(major, minor, patch) \
39 ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))
41#define BJ_VERSION_MAJOR_NUMBER 0
42#define BJ_VERSION_MINOR_NUMBER 1
43#define BJ_VERSION_PATCH_NUMBER 0
46#define BJ_VERSION BJ_MAKE_VERSION(BJ_VERSION_MAJOR_NUMBER, BJ_VERSION_MINOR_NUMBER, BJ_VERSION_PATCH_NUMBER)
49#define BJ_NAME "Banjo"
54#if defined(__EMSCRIPTEN__)
55# define BJ_OS_EMSCRIPTEN
56#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
58#elif defined(__linux__) || defined(__gnu_linux__)
62# include <TargetConditionals.h>
65# elif TARGET_IPHONE_SIMULATOR
67# define BJ_OS_IOS_SIMULATOR
72# define BJ_OS_APPLE_UNKNOWN
88#if defined(BJ_COMPILER_DOXYGEN)
89# define BJ_COMPILER_NAME "Doxygen"
90# define BJ_COMPILER_VERSION 0
91#elif defined(__EMSCRIPTEN__)
92# include <emscripten/version.h>
93# define BJ_COMPILER_EMSCRIPTEN
94# define BJ_COMPILER_NAME "Emscripten"
95# define BJ_COMPILER_VERSION __EMSCRIPTEN_major__
96#elif defined(__GNUC__) && !defined(__clang__)
97# define BJ_COMPILER_GCC
98# define BJ_COMPILER_NAME "GCC"
99# define BJ_COMPILER_VERSION __GNUC__
100#elif defined(__clang__)
101# define BJ_COMPILER_CLANG
102# define BJ_COMPILER_NAME "Clang"
103# define BJ_COMPILER_VERSION __clang_major__
104#elif defined(_MSC_VER)
105# define BJ_COMPILER_MSVC
106# define BJ_COMPILER_NAME "MSVC"
107# define BJ_COMPILER_VERSION _MSC_VER
108#elif defined(__MINGW32__)
109# define BJ_COMPILER_MINGW
110# define BJ_COMPILER_NAME "MinGW"
111# define BJ_COMPILER_VERSION 0
113# define BJ_COMPILER_UNKNOWN
114# define BJ_COMPILER_NAME "Unknown"
115# define BJ_COMPILER_VERSION 0
124#if defined(NDEBUG) || defined(BJ_COMPILER_DOXYGEN)
125# define BJ_BUILD_RELEASE
129#if !defined(NDEBUG) || defined(BJ_COMPILER_DOXYGEN)
130# define BJ_BUILD_DEBUG
138#if defined(BANJO_STATIC) || defined(BJ_COMPILER_DOXYGEN)
140# define BANJO_NO_EXPORT
145# define BANJO_EXPORT __declspec(dllexport)
147# define BANJO_EXPORT __declspec( dllexport )
150# ifndef BANJO_NO_EXPORT
151# define BANJO_NO_EXPORT
156# define BANJO_EXPORT __attribute__((visibility("default")))
158# define BANJO_EXPORT __attribute__((visibility("default")))
161# ifndef BANJO_NO_EXPORT
162# define BANJO_NO_EXPORT __attribute__((visibility("hidden")))
172#if defined(__cplusplus)
173 #if defined(__GNUC__) || defined(__clang__)
174 #define BJ_RESTRICT __restrict__
175 #elif defined(_MSC_VER)
176 #define BJ_RESTRICT __restrict
182 #if defined(BJ_COMPILER_DOXYGEN) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
183 #define BJ_RESTRICT restrict
184 #elif defined(__GNUC__) || defined(__clang__)
185 #define BJ_RESTRICT __restrict__
186 #elif defined(_MSC_VER)
187 #define BJ_RESTRICT __restrict
200 #if defined(BJ_API_FORCE_INLINE)
201 #define BJ_INLINE __forceinline
203 #if !defined(__cplusplus) && !defined(inline)
204 #define BJ_INLINE __inline
206 #define BJ_INLINE inline
209#elif defined(__GNUC__) || defined(__clang__)
210 #if defined(BJ_API_FORCE_INLINE)
211 #define BJ_INLINE inline __attribute__((always_inline))
213 #define BJ_INLINE inline
216 #if defined(BJ_COMPILER_DOXYGEN) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
217 #define BJ_INLINE inline
242#define BJ_FALSE ((bj_bool)0)
251#define BJ_TRUE ((bj_bool)1)
bj_bool feature_emscripten
Built with Emscripten support.
Definition api.h:261
bj_bool config_fastmath
Built with fast-math optimizations.
Definition api.h:269
uint32_t version
Packed API version (see BJ_VERSION).
Definition api.h:256
bj_bool feature_win32
Built with Win32 window support.
Definition api.h:260
bj_bool feature_x11
Built with X11 window support.
Definition api.h:262
const char * compiler_name
Compiler name string.
Definition api.h:257
const char * p_name
API name (see BJ_NAME).
Definition api.h:255
bj_bool debug
Non-zero if built with debug info.
Definition api.h:259
bj_bool config_checks_abort
Checks abort execution on failure.
Definition api.h:265
bj_bool config_pedantic
Extra runtime checks enabled.
Definition api.h:268
bj_bool feature_mme
Built with Windows MME audio.
Definition api.h:263
int compiler_version
Compiler version number.
Definition api.h:258
bj_bool feature_alsa
Built with ALSA audio.
Definition api.h:264
bj_bool config_checks_log
Checks log failures.
Definition api.h:266
bj_bool config_log_color
Colored log output enabled.
Definition api.h:267
#define BANJO_EXPORT
Definition api.h:139
uint32_t bj_bool
Boolean type used throughout the Banjo API.
Definition api.h:233
const bj_build_info * bj_build_information(void)
Get runtime build information for the loaded Banjo binaries.
Structure holding build information of the binary.
Definition api.h:254