12#ifdef BOX2D_USER_CONFIG
13#include BOX2D_USER_CONFIG
19#define B2_NULL_INDEX ( -1 )
27#if defined( _WIN32 ) && defined( box2d_EXPORTS )
29 #define BOX2D_EXPORT __declspec( dllexport )
30#elif defined( _WIN32 ) && defined( BOX2D_DLL )
32 #define BOX2D_EXPORT __declspec( dllimport )
33#elif defined( box2d_EXPORTS )
35 #define BOX2D_EXPORT __attribute__( ( visibility( "default" ) ) )
44 #define B2_API extern "C" BOX2D_EXPORT
45 #define B2_INLINE inline
46 #define B2_ALIGN_AS(N) alignas(N)
47#if defined( _MSC_VER )
48 #define B2_FORCE_INLINE __forceinline
49#elif defined( __GNUC__ ) || defined( __clang__ )
50 #define B2_FORCE_INLINE inline __attribute__((always_inline))
52 #define B2_FORCE_INLINE inline
55 #define B2_LITERAL(T) T
56 #define B2_ZERO_INIT {}
58 #define B2_API BOX2D_EXPORT
59 #define B2_INLINE static inline
60 #define B2_ALIGN_AS(N) _Alignas(N)
62#if defined( _MSC_VER )
63 #define B2_FORCE_INLINE static __forceinline
64#elif defined( __GNUC__ ) || defined( __clang__ )
65 #define B2_FORCE_INLINE static inline __attribute__((always_inline))
67 #define B2_FORCE_INLINE static inline
71 #define B2_LITERAL(T) (T)
72 #define B2_ZERO_INIT {0}
76#if defined( BOX2D_VALIDATE ) && !defined( NDEBUG )
77#define B2_ENABLE_VALIDATION 1
79#define B2_ENABLE_VALIDATION 0
134#define B2_VERSION_MAJOR 3
137#define B2_VERSION_MINOR 2
140#define B2_VERSION_REVISION 0
156#if defined( _MSC_VER )
157#define B2_BREAKPOINT __debugbreak()
158#elif defined( __GNUC__ ) || defined( __clang__ )
159#define B2_BREAKPOINT __builtin_trap()
163#define B2_BREAKPOINT assert( 0 )
166#if !defined( NDEBUG ) || defined( B2_ENABLE_ASSERT )
167B2_API
int b2InternalAssert(
const char* condition,
const char* fileName,
int lineNumber );
168#define B2_ASSERT( condition ) \
169 ( (void)( ( !!( condition ) ) || \
170 ( b2InternalAssert( #condition, __FILE__, (int)( __LINE__ ) ), 0 ) ) )
172#define B2_ASSERT( ... ) ( (void)0 )
176#if B2_ENABLE_VALIDATION
177#define B2_VALIDATE( condition ) B2_ASSERT( condition )
179#define B2_VALIDATE( ... ) ( (void)0 )
185B2_API uint64_t b2GetTicks(
void );
188B2_API
float b2GetMilliseconds( uint64_t ticks );
192B2_API
float b2GetMillisecondsAndReset( uint64_t* ticks );
195B2_API
void b2Yield(
void );
198#define B2_HASH_INIT 5381
201B2_API uint32_t b2Hash( uint32_t hash,
const uint8_t* data,
int count );
int minor
Incremental changes.
Definition base.h:127
int revision
Bug fixes.
Definition base.h:130
int major
Significant changes.
Definition base.h:124
bool b2IsAVX2Available(void)
void b2SetLogCallback(b2LogCallbackFcn *logFcn)
Override the default log function.
void b2FreeCallbackFcn(void *mem, size_t size)
Prototype for user free function.
Definition base.h:96
int b2AssertCallbackFcn(const char *condition, const char *fileName, int lineNumber)
Prototype for the user assert callback. Return 0 to skip the debugger break.
Definition base.h:99
void b2LogCallbackFcn(const char *message)
Prototype for user log callback. Used to log warnings.
Definition base.h:102
void b2SetAllocator(b2AllocCallbackFcn *allocFcn, b2FreeCallbackFcn *freeFcn)
This allows the user to override the allocation functions.
void * b2AllocCallbackFcn(size_t size, int alignment)
Prototype for user allocation function.
Definition base.h:91
size_t b2GetByteCount(void)
bool b2IsDoublePrecision(void)
void b2SetAssertCallback(b2AssertCallbackFcn *assertFcn)
Override the default assert function.
b2Version b2GetVersion(void)
Get the current version of Box2D.
Version numbering scheme.
Definition base.h:122