1 #ifndef PLATFORM_CONFIG_H 2 3 #define PLATFORM_CONFIG_H 4 5 // Modify this header file to make the HACD data types be compatible with your 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <assert.h> 9 #include <new> 10 11 // This header file provides a brief compatibility layer between the PhysX and APEX SDK foundation header files. 12 // Modify this header file to your own data types and memory allocation routines and do a global find/replace if necessary 13 14 namespace hacd 15 { 16 #if defined( _WINDOWS ) 17 typedef signed __int64 HaI64; 18 typedef unsigned __int64 HaU64; 19 #define HACD_ALLOC_ALIGNED(x,y) ::_aligned_malloc(x,y) 20 #define HACD_ALLOC(x) ::_aligned_malloc(x,16) 21 #define HACD_FREE(x) ::_aligned_free(x) 22 #define HACD_NOINLINE __declspec(noinline) 23 #define HACD_FORCE_INLINE __forceinline 24 #define HACD_SPRINTF_S sprintf_s 25 #else 26 #include <inttypes.h> 27 typedef int64_t HaI64; 28 typedef uint64_t HaU64; 29 #define HACD_ALLOC_ALIGNED(x,y) malloc(x) 30 #define HACD_ALLOC(x) malloc(x) 31 #define HACD_FREE(x) free(x) 32 #define HACD_NOINLINE 33 #define HACD_FORCE_INLINE inline 34 #define HACD_SPRINTF_S sprintf 35 #endif 36 37 38 typedef signed int HaI32; 39 typedef signed short HaI16; 40 typedef signed char HaI8; 41 42 43 typedef unsigned int HaU32; 44 typedef unsigned short HaU16; 45 typedef unsigned char HaU8; 46 47 typedef float HaF32; 48 typedef double HaF64; 49 50 51 52 class PxEmpty; 53 54 #define HACD_SIGN_BITMASK 0x80000000 55 56 // avoid unreferenced parameter warning (why not just disable it?) 57 // PT: or why not just omit the parameter's name from the declaration???? 58 #define HACD_FORCE_PARAMETER_REFERENCE(_P) (void)(_P); 59 #define HACD_UNUSED(_P) HACD_FORCE_PARAMETER_REFERENCE(_P) 60 61 62 63 #define HACD_ASSERT(x) assert(x) 64 #define HACD_ALWAYS_ASSERT() assert(0) 65 66 #define HACD_INLINE inline 67 68 #define HACD_PLACEMENT_NEW(p, T) new(p) T 69 70 class UserAllocated 71 { 72 public: new(size_t size,UserAllocated * t)73 HACD_INLINE void* operator new(size_t size,UserAllocated *t) 74 { 75 HACD_FORCE_PARAMETER_REFERENCE(size); 76 return t; 77 } 78 new(size_t size,const char * className,const char * fileName,int lineno,size_t classSize)79 HACD_INLINE void* operator new(size_t size,const char *className,const char* fileName, int lineno,size_t classSize) 80 { 81 HACD_FORCE_PARAMETER_REFERENCE(className); 82 HACD_FORCE_PARAMETER_REFERENCE(fileName); 83 HACD_FORCE_PARAMETER_REFERENCE(lineno); 84 HACD_FORCE_PARAMETER_REFERENCE(classSize); 85 return HACD_ALLOC(size); 86 } 87 88 inline void* operator new[](size_t size,const char *className,const char* fileName, int lineno,size_t classSize) 89 { 90 HACD_FORCE_PARAMETER_REFERENCE(className); 91 HACD_FORCE_PARAMETER_REFERENCE(fileName); 92 HACD_FORCE_PARAMETER_REFERENCE(lineno); 93 HACD_FORCE_PARAMETER_REFERENCE(classSize); 94 return HACD_ALLOC(size); 95 } 96 delete(void * p,UserAllocated * t)97 inline void operator delete(void* p,UserAllocated *t) 98 { 99 HACD_FORCE_PARAMETER_REFERENCE(p); 100 HACD_FORCE_PARAMETER_REFERENCE(t); 101 HACD_ALWAYS_ASSERT(); // should never be executed 102 } 103 delete(void * p)104 inline void operator delete(void* p) 105 { 106 HACD_FREE(p); 107 } 108 109 inline void operator delete[](void* p) 110 { 111 HACD_FREE(p); 112 } 113 delete(void * p,const char * className,const char * fileName,int line,size_t classSize)114 inline void operator delete(void *p,const char *className,const char* fileName, int line,size_t classSize) 115 { 116 HACD_FORCE_PARAMETER_REFERENCE(className); 117 HACD_FORCE_PARAMETER_REFERENCE(fileName); 118 HACD_FORCE_PARAMETER_REFERENCE(line); 119 HACD_FORCE_PARAMETER_REFERENCE(classSize); 120 HACD_FREE(p); 121 } 122 123 inline void operator delete[](void *p,const char *className,const char* fileName, int line,size_t classSize) 124 { 125 HACD_FORCE_PARAMETER_REFERENCE(className); 126 HACD_FORCE_PARAMETER_REFERENCE(fileName); 127 HACD_FORCE_PARAMETER_REFERENCE(line); 128 HACD_FORCE_PARAMETER_REFERENCE(classSize); 129 HACD_FREE(p); 130 } 131 132 }; 133 134 class ICallback 135 { 136 public: 137 virtual void ReportProgress(const char *, HaF32 progress) = 0; 138 virtual bool Cancelled() = 0; 139 }; 140 141 #define HACD_NEW(T) new(#T,__FILE__,__LINE__,sizeof(T)) T 142 143 144 145 } // end HACD namespace 146 147 #define UANS hacd // the user allocator namespace 148 149 #include "PxVector.h" 150 151 152 153 #endif 154