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