/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * Copyright (c) 2013 Google, Inc. * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include b2Version b2_version = {2, 3, 0}; #define LIQUIDFUN_VERSION_MAJOR 1 #define LIQUIDFUN_VERSION_MINOR 1 #define LIQUIDFUN_VERSION_REVISION 0 #define LIQUIDFUN_STRING_EXPAND(X) #X #define LIQUIDFUN_STRING(X) LIQUIDFUN_STRING_EXPAND(X) static void* b2AllocDefault(int32 size, void* callbackData); static void b2FreeDefault(void* mem, void* callbackData); const b2Version b2_liquidFunVersion = { LIQUIDFUN_VERSION_MAJOR, LIQUIDFUN_VERSION_MINOR, LIQUIDFUN_VERSION_REVISION, }; const char *b2_liquidFunVersionString = "LiquidFun " LIQUIDFUN_STRING(LIQUIDFUN_VERSION_MAJOR) "." LIQUIDFUN_STRING(LIQUIDFUN_VERSION_MINOR) "." LIQUIDFUN_STRING(LIQUIDFUN_VERSION_REVISION); static int32 b2_numAllocs = 0; // Initialize default allocator. static b2AllocFunction b2_allocCallback = b2AllocDefault; static b2FreeFunction b2_freeCallback = b2FreeDefault; static void *b2_callbackData = NULL; // Default implementation of b2AllocFunction. static void* b2AllocDefault(int32 size, void* callbackData) { B2_NOT_USED(callbackData); return malloc(size); } // Default implementation of b2FreeFunction. static void b2FreeDefault(void* mem, void* callbackData) { B2_NOT_USED(callbackData); free(mem); } /// Set alloc and free callbacks to override the default behavior of using /// malloc() and free() for dynamic memory allocation. /// Set allocCallback and freeCallback to NULL to restore the default /// allocator (malloc / free). void b2SetAllocFreeCallbacks(b2AllocFunction allocCallback, b2FreeFunction freeCallback, void* callbackData) { b2Assert((allocCallback && freeCallback) || (!allocCallback && !freeCallback)); b2Assert(0 == b2GetNumAllocs()); if (allocCallback && freeCallback) { b2_allocCallback = allocCallback; b2_freeCallback = freeCallback; b2_callbackData = callbackData; } else { b2_allocCallback = b2AllocDefault; b2_freeCallback = b2FreeDefault; b2_callbackData = NULL; } } // Memory allocators. Modify these to use your own allocator. void* b2Alloc(int32 size) { b2_numAllocs++; return b2_allocCallback(size, b2_callbackData); } void b2Free(void* mem) { b2_numAllocs--; b2_freeCallback(mem, b2_callbackData); } void b2SetNumAllocs(const int32 numAllocs) { b2_numAllocs = numAllocs; } int32 b2GetNumAllocs() { return b2_numAllocs; } // You can modify this to use your logging facility. void b2Log(const char* string, ...) { #if DEBUG va_list args; va_start(args, string); vprintf(string, args); va_end(args); #else B2_NOT_USED(string); #endif } class Validator { public: Validator() { b2Assert(sizeof(uint64)==8); b2Assert(sizeof(int64)==8); } } validate;