1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
|
<html>
<head>
<title>NVIDIA(R) PhysX(R) SDK 3.4 API Reference: PxPreprocessor.h Source File</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK HREF="NVIDIA.css" REL="stylesheet" TYPE="text/css">
</head>
<body bgcolor="#FFFFFF">
<div id="header">
<hr class="first">
<img alt="" src="images/PhysXlogo.png" align="middle"> <br>
<center>
<a class="qindex" href="main.html">Main Page</a>
<a class="qindex" href="hierarchy.html">Class Hierarchy</a>
<a class="qindex" href="annotated.html">Compound List</a>
<a class="qindex" href="functions.html">Compound Members</a>
</center>
<hr class="second">
</div>
<!-- Generated by Doxygen 1.5.8 -->
<h1>PxPreprocessor.h</h1><a href="PxPreprocessor_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// Redistribution and use in source and binary forms, with or without</span>
<a name="l00003"></a>00003 <span class="comment">// modification, are permitted provided that the following conditions</span>
<a name="l00004"></a>00004 <span class="comment">// are met:</span>
<a name="l00005"></a>00005 <span class="comment">// * Redistributions of source code must retain the above copyright</span>
<a name="l00006"></a>00006 <span class="comment">// notice, this list of conditions and the following disclaimer.</span>
<a name="l00007"></a>00007 <span class="comment">// * Redistributions in binary form must reproduce the above copyright</span>
<a name="l00008"></a>00008 <span class="comment">// notice, this list of conditions and the following disclaimer in the</span>
<a name="l00009"></a>00009 <span class="comment">// documentation and/or other materials provided with the distribution.</span>
<a name="l00010"></a>00010 <span class="comment">// * Neither the name of NVIDIA CORPORATION nor the names of its</span>
<a name="l00011"></a>00011 <span class="comment">// contributors may be used to endorse or promote products derived</span>
<a name="l00012"></a>00012 <span class="comment">// from this software without specific prior written permission.</span>
<a name="l00013"></a>00013 <span class="comment">//</span>
<a name="l00014"></a>00014 <span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY</span>
<a name="l00015"></a>00015 <span class="comment">// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<a name="l00016"></a>00016 <span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span>
<a name="l00017"></a>00017 <span class="comment">// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR</span>
<a name="l00018"></a>00018 <span class="comment">// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</span>
<a name="l00019"></a>00019 <span class="comment">// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</span>
<a name="l00020"></a>00020 <span class="comment">// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR</span>
<a name="l00021"></a>00021 <span class="comment">// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY</span>
<a name="l00022"></a>00022 <span class="comment">// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
<a name="l00023"></a>00023 <span class="comment">// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span>
<a name="l00024"></a>00024 <span class="comment">// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00025"></a>00025 <span class="comment">//</span>
<a name="l00026"></a>00026 <span class="comment">// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved.</span>
<a name="l00027"></a>00027 <span class="comment">// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.</span>
<a name="l00028"></a>00028 <span class="comment">// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.</span>
<a name="l00029"></a>00029
<a name="l00030"></a>00030 <span class="preprocessor">#ifndef PXFOUNDATION_PXPREPROCESSOR_H</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define PXFOUNDATION_PXPREPROCESSOR_H</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span>
<a name="l00033"></a>00033 <span class="preprocessor">#include <stddef.h></span>
<a name="l00034"></a>00034 <span class="preprocessor">#if !defined(PX_GENERATE_META_DATA)</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <ciso646></span>
<a name="l00036"></a>00036 <span class="preprocessor">#endif</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span>
<a name="l00041"></a><a class="code" href="group__foundation.html#gaa541ee81b5c7958c1367b710cfa99ed">00041</a> <span class="preprocessor">#define PX_STRINGIZE_HELPER(X) #X</span>
<a name="l00042"></a><a class="code" href="group__foundation.html#g40e7fc272047a5ab6870668b81aca1a3">00042</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_STRINGIZE(X) PX_STRINGIZE_HELPER(X)</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span>
<a name="l00044"></a><a class="code" href="group__foundation.html#g571ac4b7ead96ee2a8ad83d1ebe1aec9">00044</a> <span class="preprocessor">#define PX_CONCAT_HELPER(X, Y) X##Y</span>
<a name="l00045"></a><a class="code" href="group__foundation.html#g5f35262177498e8a11a4f3e5ba83e5e8">00045</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_CONCAT(X, Y) PX_CONCAT_HELPER(X, Y)</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00047"></a>00047 <span class="comment">/*</span>
<a name="l00048"></a>00048 <span class="comment">The following preprocessor identifiers specify compiler, OS, and architecture.</span>
<a name="l00049"></a>00049 <span class="comment">All definitions have a value of 1 or 0, use '#if' instead of '#ifdef'.</span>
<a name="l00050"></a>00050 <span class="comment">*/</span>
<a name="l00051"></a>00051
<a name="l00055"></a>00055 <span class="preprocessor">#if defined(_MSC_VER)</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#if _MSC_VER >= 1910</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 15</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#elif _MSC_VER >= 1900</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 14</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#elif _MSC_VER >= 1800</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 12</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#elif _MSC_VER >= 1700</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 11</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor">#elif _MSC_VER >= 1600</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 10</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#elif _MSC_VER >= 1500</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 9</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="preprocessor">#error "Unknown VC version"</span>
<a name="l00070"></a>00070 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__clang__)</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#define PX_CLANG 1</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__GNUC__) // note: __clang__ implies __GNUC__</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define PX_GCC 1</span>
<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#error "Unknown compiler"</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span>
<a name="l00082"></a>00082 <span class="preprocessor">#if defined(_XBOX_ONE)</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define PX_XBOXONE 1</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#elif defined(_WIN64) // note: _XBOX_ONE implies _WIN64</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define PX_WIN64 1</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#elif defined(_WIN32) // note: _M_PPC implies _WIN32</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#define PX_WIN32 1</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__ANDROID__)</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define PX_ANDROID 1</span>
<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__linux__) || defined (__EMSCRIPTEN__) // note: __ANDROID__ implies __linux__</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define PX_LINUX 1</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define PX_IOS 1</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__APPLE__)</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define PX_OSX 1</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__ORBIS__)</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define PX_PS4 1</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__NX__)</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define PX_SWITCH 1</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#error "Unknown operating system"</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>
<a name="l00107"></a>00107 <span class="preprocessor">#if defined(__x86_64__) || defined(_M_X64) // ps4 compiler defines _M_X64 without value</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#define PX_X64 1</span>
<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__i386__) || defined(_M_IX86) || defined (__EMSCRIPTEN__)</span>
<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#define PX_X86 1</span>
<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__arm64__) || defined(__aarch64__)</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define PX_A64 1</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__arm__) || defined(_M_ARM)</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define PX_ARM 1</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__ppc__) || defined(_M_PPC) || defined(__CELLOS_LV2__)</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#define PX_PPC 1</span>
<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor">#error "Unknown architecture"</span>
<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00120"></a>00120 <span class="preprocessor"></span>
<a name="l00124"></a>00124 <span class="preprocessor">#if !defined(PX_SIMD_DISABLED)</span>
<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor">#if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || (defined (__EMSCRIPTEN__) && defined(__SSE2__))</span>
<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor">#define PX_SSE2 1</span>
<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor">#if defined(_M_ARM) || defined(__ARM_NEON__) || defined(__ARM_NEON)</span>
<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor">#define PX_NEON 1</span>
<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor">#if defined(_M_PPC) || defined(__CELLOS_LV2__)</span>
<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor">#define PX_VMX 1</span>
<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00135"></a>00135 <span class="preprocessor"></span>
<a name="l00139"></a>00139 <span class="preprocessor">#ifndef PX_VC</span>
<a name="l00140"></a><a class="code" href="group__foundation.html#gec15ff1639b763560ddaffc82936ff03">00140</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_VC 0</span>
<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_CLANG</span>
<a name="l00143"></a><a class="code" href="group__foundation.html#g382d2b60e6161c1dcb3801bbf8e1b4a3">00143</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_CLANG 0</span>
<a name="l00144"></a>00144 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_GCC</span>
<a name="l00146"></a><a class="code" href="group__foundation.html#g732674527c19934c396385ac405993b6">00146</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_GCC 0</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_XBOXONE</span>
<a name="l00149"></a><a class="code" href="group__foundation.html#g966bf639353d2b617e4925513859c1ff">00149</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_XBOXONE 0</span>
<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00151"></a>00151 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_WIN64</span>
<a name="l00152"></a><a class="code" href="group__foundation.html#gfb26faf6ab4449f92b90eaedb74d6f3b">00152</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_WIN64 0</span>
<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00154"></a>00154 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_WIN32</span>
<a name="l00155"></a><a class="code" href="group__foundation.html#gc4b372e9d2d91a0a86d40f7486936993">00155</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_WIN32 0</span>
<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_ANDROID</span>
<a name="l00158"></a><a class="code" href="group__foundation.html#gbe2aa1202597c18f98b9e7cefdf807a8">00158</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ANDROID 0</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_LINUX</span>
<a name="l00161"></a><a class="code" href="group__foundation.html#g73b08402e151455258acc7ec628a277b">00161</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_LINUX 0</span>
<a name="l00162"></a>00162 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00163"></a>00163 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_IOS</span>
<a name="l00164"></a><a class="code" href="group__foundation.html#ge61c2ba4eafd46db3a41bb5d86f3f4a8">00164</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_IOS 0</span>
<a name="l00165"></a>00165 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00166"></a>00166 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_OSX</span>
<a name="l00167"></a><a class="code" href="group__foundation.html#g2b3efd786b831b6cfd30e51dcd3c5ca2">00167</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_OSX 0</span>
<a name="l00168"></a>00168 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_PS4</span>
<a name="l00170"></a><a class="code" href="group__foundation.html#g42b3e630801b256ea6a118cea57757d3">00170</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_PS4 0</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_SWITCH</span>
<a name="l00173"></a><a class="code" href="group__foundation.html#g69c3fa9b2882d545ebdb965086853c62">00173</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_SWITCH 0</span>
<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_X64</span>
<a name="l00176"></a><a class="code" href="group__foundation.html#g559a6fbf1f502edf3e25e3b90647f111">00176</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_X64 0</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_X86</span>
<a name="l00179"></a><a class="code" href="group__foundation.html#g4f7abce9f24240386fb46d29e4332d3d">00179</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_X86 0</span>
<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00181"></a>00181 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_A64</span>
<a name="l00182"></a><a class="code" href="group__foundation.html#g8853e1b0f46c6dd7043b948747a19a19">00182</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_A64 0</span>
<a name="l00183"></a>00183 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00184"></a>00184 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_ARM</span>
<a name="l00185"></a><a class="code" href="group__foundation.html#gd566a9166622790d99924279df71eaf4">00185</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ARM 0</span>
<a name="l00186"></a>00186 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00187"></a>00187 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_PPC</span>
<a name="l00188"></a><a class="code" href="group__foundation.html#g5bd657340cb0dc207107cb1742d1135b">00188</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_PPC 0</span>
<a name="l00189"></a>00189 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_SSE2</span>
<a name="l00191"></a><a class="code" href="group__foundation.html#g2dd18616fa4eec4df42b5f3505dd2a64">00191</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_SSE2 0</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00193"></a>00193 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_NEON</span>
<a name="l00194"></a><a class="code" href="group__foundation.html#g41ea3463989964c5a4e21d68a9d3884a">00194</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_NEON 0</span>
<a name="l00195"></a>00195 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00196"></a>00196 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_VMX</span>
<a name="l00197"></a><a class="code" href="group__foundation.html#g43eec71a9b57bd336f2208cb33dba42e">00197</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_VMX 0</span>
<a name="l00198"></a>00198 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00199"></a>00199 <span class="preprocessor"></span>
<a name="l00200"></a>00200 <span class="comment">/*</span>
<a name="l00201"></a>00201 <span class="comment">define anything not defined through the command line to 0</span>
<a name="l00202"></a>00202 <span class="comment">*/</span>
<a name="l00203"></a>00203 <span class="preprocessor">#ifndef PX_DEBUG</span>
<a name="l00204"></a><a class="code" href="group__foundation.html#g7b6fbb539e9185279ced84864179180b">00204</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_DEBUG 0</span>
<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00206"></a>00206 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_CHECKED</span>
<a name="l00207"></a><a class="code" href="group__foundation.html#gdff4cde4e8b8443cfbe024b9fb52a891">00207</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_CHECKED 0</span>
<a name="l00208"></a>00208 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00209"></a>00209 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_PROFILE</span>
<a name="l00210"></a><a class="code" href="group__foundation.html#gbefdbdd6927f15e90168c46824f7bd38">00210</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_PROFILE 0</span>
<a name="l00211"></a>00211 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_NVTX</span>
<a name="l00213"></a><a class="code" href="group__foundation.html#g65237bda8f886bb466e89d01a1ba0a77">00213</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_NVTX 0</span>
<a name="l00214"></a>00214 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00215"></a>00215 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_DOXYGEN</span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="preprocessor">#define PX_DOXYGEN 0</span>
<a name="l00217"></a>00217 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00218"></a>00218 <span class="preprocessor"></span>
<a name="l00222"></a>00222 <span class="comment">// compiler</span>
<a name="l00223"></a><a class="code" href="group__foundation.html#ge6e47183b054e4c5d6a478a00fe91e27">00223</a> <span class="preprocessor">#define PX_GCC_FAMILY (PX_CLANG || PX_GCC)</span>
<a name="l00224"></a>00224 <span class="preprocessor"></span><span class="comment">// os</span>
<a name="l00225"></a><a class="code" href="group__foundation.html#g5121e2d88c11a94738ee44b0b6b339a2">00225</a> <span class="preprocessor">#define PX_WINDOWS_FAMILY (PX_WIN32 || PX_WIN64)</span>
<a name="l00226"></a><a class="code" href="group__foundation.html#ga68c4b18475815da696850a588b3ac8b">00226</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_MICROSOFT_FAMILY (PX_XBOXONE || PX_WINDOWS_FAMILY)</span>
<a name="l00227"></a><a class="code" href="group__foundation.html#ga6237ff50213fc9872d4569a649dcd53">00227</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_LINUX_FAMILY (PX_LINUX || PX_ANDROID)</span>
<a name="l00228"></a><a class="code" href="group__foundation.html#g4330ceada999f3f6d10f7bd4b3dd3c2f">00228</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_APPLE_FAMILY (PX_IOS || PX_OSX) // equivalent to #if __APPLE__</span>
<a name="l00229"></a><a class="code" href="group__foundation.html#gd7d515be586be72c5c485c5624783a97">00229</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_UNIX_FAMILY (PX_LINUX_FAMILY || PX_APPLE_FAMILY) // shortcut for unix/posix platforms</span>
<a name="l00230"></a>00230 <span class="preprocessor"></span><span class="preprocessor">#if defined(__EMSCRIPTEN__)</span>
<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#define PX_EMSCRIPTEN 1</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00233"></a><a class="code" href="group__foundation.html#gb14d7af80f3dc4ff432087381fcefdb9">00233</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_EMSCRIPTEN 0</span>
<a name="l00234"></a>00234 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="comment">// architecture</span>
<a name="l00236"></a><a class="code" href="group__foundation.html#g481340bf67229603a2c5b9257874934a">00236</a> <span class="preprocessor">#define PX_INTEL_FAMILY (PX_X64 || PX_X86)</span>
<a name="l00237"></a><a class="code" href="group__foundation.html#g99db209a98702e2d6673d967bac37d07">00237</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ARM_FAMILY (PX_ARM || PX_A64)</span>
<a name="l00238"></a><a class="code" href="group__foundation.html#gc9e21d1f7a04c78926a89d936c97546f">00238</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_P64_FAMILY (PX_X64 || PX_A64) // shortcut for 64-bit architectures</span>
<a name="l00239"></a>00239 <span class="preprocessor"></span>
<a name="l00243"></a>00243 <span class="preprocessor">#if defined(_LIBCPP_VERSION) || PX_WIN64 || PX_WIN32 || PX_PS4 || PX_XBOXONE || PX_EMSCRIPTEN</span>
<a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#define PX_LIBCPP 1</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00246"></a><a class="code" href="group__foundation.html#gd76274b09d89544fc4133c8d915293ed">00246</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_LIBCPP 0</span>
<a name="l00247"></a>00247 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00248"></a>00248 <span class="preprocessor"></span>
<a name="l00249"></a>00249 <span class="comment">// legacy define for PhysX</span>
<a name="l00250"></a><a class="code" href="group__foundation.html#g8d26d765b23de0bca18dd327cde2d8f8">00250</a> <span class="preprocessor">#define PX_WINDOWS (PX_WINDOWS_FAMILY && !PX_ARM_FAMILY)</span>
<a name="l00251"></a>00251 <span class="preprocessor"></span>
<a name="l00255"></a>00255 <span class="preprocessor">#ifndef PX_ENABLE_ASSERTS</span>
<a name="l00256"></a>00256 <span class="preprocessor"></span><span class="preprocessor">#if PX_DEBUG && !defined(__CUDACC__)</span>
<a name="l00257"></a>00257 <span class="preprocessor"></span><span class="preprocessor">#define PX_ENABLE_ASSERTS 1</span>
<a name="l00258"></a>00258 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00259"></a><a class="code" href="group__foundation.html#g43c56deefc64fae5fe077a232a10056c">00259</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ENABLE_ASSERTS 0</span>
<a name="l00260"></a>00260 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00261"></a>00261 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00262"></a>00262 <span class="preprocessor"></span>
<a name="l00266"></a>00266 <span class="preprocessor">#ifndef PX_C_EXPORT</span>
<a name="l00267"></a>00267 <span class="preprocessor"></span><span class="preprocessor">#if PX_WINDOWS_FAMILY || PX_LINUX</span>
<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="preprocessor">#define PX_C_EXPORT extern "C"</span>
<a name="l00269"></a>00269 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00270"></a>00270 <span class="preprocessor"></span><span class="preprocessor">#define PX_C_EXPORT</span>
<a name="l00271"></a>00271 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00272"></a>00272 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00273"></a>00273 <span class="preprocessor"></span>
<a name="l00274"></a>00274 <span class="preprocessor">#if PX_UNIX_FAMILY&& __GNUC__ >= 4</span>
<a name="l00275"></a>00275 <span class="preprocessor"></span><span class="preprocessor">#define PX_UNIX_EXPORT __attribute__((visibility("default")))</span>
<a name="l00276"></a>00276 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00277"></a><a class="code" href="group__foundation.html#gc40d28c5e85426df7a98ff9bd597810c">00277</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_UNIX_EXPORT</span>
<a name="l00278"></a>00278 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00279"></a>00279 <span class="preprocessor"></span>
<a name="l00280"></a>00280 <span class="preprocessor">#if PX_WINDOWS_FAMILY</span>
<a name="l00281"></a>00281 <span class="preprocessor"></span><span class="preprocessor">#define PX_DLL_EXPORT __declspec(dllexport)</span>
<a name="l00282"></a>00282 <span class="preprocessor"></span><span class="preprocessor">#define PX_DLL_IMPORT __declspec(dllimport)</span>
<a name="l00283"></a>00283 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00284"></a><a class="code" href="group__foundation.html#g5be743320fae5abf91e51efebced816e">00284</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_DLL_EXPORT PX_UNIX_EXPORT</span>
<a name="l00285"></a><a class="code" href="group__foundation.html#gdfbe26e2b38cec0e72ed7d70872d234f">00285</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_DLL_IMPORT</span>
<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00287"></a>00287 <span class="preprocessor"></span>
<a name="l00297"></a>00297 <span class="preprocessor">#if PX_WINDOWS_FAMILY && !PX_ARM_FAMILY</span>
<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="preprocessor">#ifndef PX_FOUNDATION_DLL</span>
<a name="l00299"></a>00299 <span class="preprocessor"></span><span class="preprocessor">#define PX_FOUNDATION_API PX_DLL_IMPORT</span>
<a name="l00300"></a>00300 <span class="preprocessor"></span><span class="preprocessor">#elif PX_FOUNDATION_DLL</span>
<a name="l00301"></a>00301 <span class="preprocessor"></span><span class="preprocessor">#define PX_FOUNDATION_API PX_DLL_EXPORT</span>
<a name="l00302"></a>00302 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00303"></a>00303 <span class="preprocessor"></span><span class="preprocessor">#elif PX_UNIX_FAMILY</span>
<a name="l00304"></a>00304 <span class="preprocessor"></span><span class="preprocessor">#ifdef PX_FOUNDATION_DLL</span>
<a name="l00305"></a>00305 <span class="preprocessor"></span><span class="preprocessor">#define PX_FOUNDATION_API PX_UNIX_EXPORT</span>
<a name="l00306"></a>00306 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00307"></a>00307 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00308"></a>00308 <span class="preprocessor"></span>
<a name="l00309"></a>00309 <span class="preprocessor">#ifndef PX_FOUNDATION_API</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="preprocessor">#define PX_FOUNDATION_API</span>
<a name="l00311"></a>00311 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span>
<a name="l00316"></a>00316 <span class="preprocessor">#ifndef PX_CALL_CONV</span>
<a name="l00317"></a>00317 <span class="preprocessor"></span><span class="preprocessor">#if PX_MICROSOFT_FAMILY</span>
<a name="l00318"></a>00318 <span class="preprocessor"></span><span class="preprocessor">#define PX_CALL_CONV __cdecl</span>
<a name="l00319"></a>00319 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00320"></a>00320 <span class="preprocessor"></span><span class="preprocessor">#define PX_CALL_CONV</span>
<a name="l00321"></a>00321 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00322"></a>00322 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00323"></a>00323 <span class="preprocessor"></span>
<a name="l00327"></a>00327 <span class="preprocessor">#if PX_VC</span>
<a name="l00328"></a>00328 <span class="preprocessor"></span><span class="preprocessor">#define PX_PUSH_PACK_DEFAULT __pragma(pack(push, 8))</span>
<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#define PX_POP_PACK __pragma(pack(pop))</span>
<a name="l00330"></a>00330 <span class="preprocessor"></span><span class="preprocessor">#elif PX_GCC_FAMILY</span>
<a name="l00331"></a>00331 <span class="preprocessor"></span><span class="preprocessor">#define PX_PUSH_PACK_DEFAULT _Pragma("pack(push, 8)")</span>
<a name="l00332"></a>00332 <span class="preprocessor"></span><span class="preprocessor">#define PX_POP_PACK _Pragma("pack(pop)")</span>
<a name="l00333"></a>00333 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00334"></a><a class="code" href="group__foundation.html#g1145ffab2cc9a77ca65b59ba4126342f">00334</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_PUSH_PACK_DEFAULT</span>
<a name="l00335"></a><a class="code" href="group__foundation.html#g9aad3b08e5e15565ff39638b753f4a92">00335</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_POP_PACK</span>
<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00337"></a>00337 <span class="preprocessor"></span>
<a name="l00341"></a><a class="code" href="group__foundation.html#gcb03347b642a2a5bdea1f9b305a6fbec">00341</a> <span class="preprocessor">#define PX_INLINE inline</span>
<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#if PX_MICROSOFT_FAMILY</span>
<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#pragma inline_depth(255)</span>
<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00345"></a>00345 <span class="preprocessor"></span>
<a name="l00349"></a>00349 <span class="preprocessor">#if PX_VC</span>
<a name="l00350"></a>00350 <span class="preprocessor"></span><span class="preprocessor">#define PX_FORCE_INLINE __forceinline</span>
<a name="l00351"></a>00351 <span class="preprocessor"></span><span class="preprocessor">#elif PX_LINUX // Workaround; Fedora Core 3 do not agree with force inline and PxcPool</span>
<a name="l00352"></a>00352 <span class="preprocessor"></span><span class="preprocessor">#define PX_FORCE_INLINE inline</span>
<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="preprocessor">#elif PX_GCC_FAMILY</span>
<a name="l00354"></a>00354 <span class="preprocessor"></span><span class="preprocessor">#define PX_FORCE_INLINE inline __attribute__((always_inline))</span>
<a name="l00355"></a>00355 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00356"></a><a class="code" href="group__foundation.html#g6a774eed3cad34b0f636332a3d28c6bb">00356</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_FORCE_INLINE inline</span>
<a name="l00357"></a>00357 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00358"></a>00358 <span class="preprocessor"></span>
<a name="l00362"></a>00362 <span class="preprocessor">#if PX_MICROSOFT_FAMILY</span>
<a name="l00363"></a>00363 <span class="preprocessor"></span><span class="preprocessor">#define PX_NOINLINE __declspec(noinline)</span>
<a name="l00364"></a>00364 <span class="preprocessor"></span><span class="preprocessor">#elif PX_GCC_FAMILY</span>
<a name="l00365"></a>00365 <span class="preprocessor"></span><span class="preprocessor">#define PX_NOINLINE __attribute__((noinline))</span>
<a name="l00366"></a>00366 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00367"></a><a class="code" href="group__foundation.html#g56b7f4f37ac451a47f3d7d661069aa49">00367</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_NOINLINE</span>
<a name="l00368"></a>00368 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00369"></a>00369 <span class="preprocessor"></span>
<a name="l00373"></a>00373 <span class="preprocessor">#if defined(__CUDACC__)</span>
<a name="l00374"></a>00374 <span class="preprocessor"></span><span class="preprocessor">#define PX_RESTRICT __restrict__</span>
<a name="l00375"></a>00375 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00376"></a><a class="code" href="group__foundation.html#g3b15bb2f7697b2bed10eb5477909fbe4">00376</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_RESTRICT __restrict</span>
<a name="l00377"></a>00377 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00378"></a>00378 <span class="preprocessor"></span>
<a name="l00382"></a>00382 <span class="preprocessor">#if PX_MICROSOFT_FAMILY</span>
<a name="l00383"></a>00383 <span class="preprocessor"></span><span class="preprocessor">#define PX_NOALIAS __declspec(noalias)</span>
<a name="l00384"></a>00384 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00385"></a><a class="code" href="group__foundation.html#g838010cc1baa6df8d6ff0fc5655274dd">00385</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_NOALIAS</span>
<a name="l00386"></a>00386 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00387"></a>00387 <span class="preprocessor"></span>
<a name="l00399"></a>00399 <span class="preprocessor">#ifndef PX_ALIGN</span>
<a name="l00400"></a>00400 <span class="preprocessor"></span><span class="preprocessor">#if PX_MICROSOFT_FAMILY</span>
<a name="l00401"></a>00401 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN(alignment, decl) __declspec(align(alignment)) decl</span>
<a name="l00402"></a>00402 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_PREFIX(alignment) __declspec(align(alignment))</span>
<a name="l00403"></a>00403 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_SUFFIX(alignment)</span>
<a name="l00404"></a>00404 <span class="preprocessor"></span><span class="preprocessor">#elif PX_GCC_FAMILY</span>
<a name="l00405"></a>00405 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN(alignment, decl) decl __attribute__((aligned(alignment)))</span>
<a name="l00406"></a>00406 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_PREFIX(alignment)</span>
<a name="l00407"></a>00407 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_SUFFIX(alignment) __attribute__((aligned(alignment)))</span>
<a name="l00408"></a>00408 <span class="preprocessor"></span><span class="preprocessor">#elif defined __CUDACC__</span>
<a name="l00409"></a>00409 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN(alignment, decl) __align__(alignment) decl</span>
<a name="l00410"></a>00410 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_PREFIX(alignment)</span>
<a name="l00411"></a>00411 <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_SUFFIX(alignment) __align__(alignment))</span>
<a name="l00412"></a>00412 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00413"></a><a class="code" href="group__foundation.html#g95024dd88a7efd73c060616238ccbe8a">00413</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN(alignment, decl)</span>
<a name="l00414"></a><a class="code" href="group__foundation.html#ga645944027e6f4e405de626910e82d8d">00414</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_PREFIX(alignment)</span>
<a name="l00415"></a><a class="code" href="group__foundation.html#g7160eeaa47f99f991d9b1f113b398143">00415</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_ALIGN_SUFFIX(alignment)</span>
<a name="l00416"></a>00416 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00417"></a>00417 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00418"></a>00418 <span class="preprocessor"></span>
<a name="l00429"></a><a class="code" href="group__foundation.html#gfd8f8779793627061774cfcfa1b9fbd7">00429</a> <span class="preprocessor">#define PX_DEPRECATED</span>
<a name="l00430"></a>00430 <span class="preprocessor"></span>
<a name="l00435"></a>00435 <span class="comment">// static assert</span>
<a name="l00436"></a>00436 <span class="preprocessor">#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) || (PX_PS4) || (PX_APPLE_FAMILY) || (PX_SWITCH) || (PX_CLANG && PX_ARM)</span>
<a name="l00437"></a>00437 <span class="preprocessor"></span><span class="preprocessor">#define PX_COMPILE_TIME_ASSERT(exp) typedef char PX_CONCAT(PxCompileTimeAssert_Dummy, __COUNTER__)[(exp) ? 1 : -1] __attribute__((unused))</span>
<a name="l00438"></a>00438 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00439"></a><a class="code" href="group__foundation.html#gb12cc8cbd08c9c19ab0d40b7f789012e">00439</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1]</span>
<a name="l00440"></a>00440 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00441"></a>00441 <span class="preprocessor"></span>
<a name="l00442"></a>00442 <span class="preprocessor">#if PX_GCC_FAMILY</span>
<a name="l00443"></a>00443 <span class="preprocessor"></span><span class="preprocessor">#define PX_OFFSET_OF(X, Y) __builtin_offsetof(X, Y)</span>
<a name="l00444"></a>00444 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00445"></a><a class="code" href="group__foundation.html#gace09d9150d8d87671f893afe548ebac">00445</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_OFFSET_OF(X, Y) offsetof(X, Y)</span>
<a name="l00446"></a>00446 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00447"></a>00447 <span class="preprocessor"></span>
<a name="l00448"></a><a class="code" href="group__foundation.html#g305a9ab26a10d521e58782103206edf5">00448</a> <span class="preprocessor">#define PX_OFFSETOF_BASE 0x100 // casting the null ptr takes a special-case code path, which we don't want</span>
<a name="l00449"></a><a class="code" href="group__foundation.html#g2ac82f7e080e1411a86f98758a0f3875">00449</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_OFFSET_OF_RT(Class, Member) \</span>
<a name="l00450"></a>00450 <span class="preprocessor"> (reinterpret_cast<size_t>(&reinterpret_cast<Class*>(PX_OFFSETOF_BASE)->Member) - size_t(PX_OFFSETOF_BASE))</span>
<a name="l00451"></a>00451 <span class="preprocessor"></span>
<a name="l00452"></a>00452 <span class="comment">// check that exactly one of NDEBUG and _DEBUG is defined</span>
<a name="l00453"></a>00453 <span class="preprocessor">#if !defined(NDEBUG) ^ defined(_DEBUG)</span>
<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="preprocessor">#error Exactly one of NDEBUG and _DEBUG needs to be defined!</span>
<a name="l00455"></a>00455 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00456"></a>00456 <span class="preprocessor"></span>
<a name="l00457"></a>00457 <span class="comment">// make sure PX_CHECKED is defined in all _DEBUG configurations as well</span>
<a name="l00458"></a>00458 <span class="preprocessor">#if !PX_CHECKED && PX_DEBUG</span>
<a name="l00459"></a>00459 <span class="preprocessor"></span><span class="preprocessor">#error PX_CHECKED must be defined when PX_DEBUG is defined</span>
<a name="l00460"></a>00460 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00461"></a>00461 <span class="preprocessor"></span>
<a name="l00462"></a>00462 <span class="preprocessor">#ifdef __CUDACC__</span>
<a name="l00463"></a>00463 <span class="preprocessor"></span><span class="preprocessor">#define PX_CUDA_CALLABLE __host__ __device__</span>
<a name="l00464"></a>00464 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00465"></a><a class="code" href="group__foundation.html#g6e444d58dbf1459261fadc9b79594f63">00465</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_CUDA_CALLABLE</span>
<a name="l00466"></a>00466 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00467"></a>00467 <span class="preprocessor"></span>
<a name="l00468"></a>00468 <span class="comment">// avoid unreferenced parameter warning</span>
<a name="l00469"></a>00469 <span class="comment">// preferred solution: omit the parameter's name from the declaration</span>
<a name="l00470"></a>00470 <span class="keyword">template</span> <<span class="keyword">class</span> T>
<a name="l00471"></a><a class="code" href="group__foundation.html#g3b618390d8743c532c4131cb931df43a">00471</a> <a class="code" href="group__foundation.html#g6e444d58dbf1459261fadc9b79594f63">PX_CUDA_CALLABLE</a> <a class="code" href="group__foundation.html#gcb03347b642a2a5bdea1f9b305a6fbec">PX_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="group__foundation.html#g3b618390d8743c532c4131cb931df43a">PX_UNUSED</a>(T <span class="keyword">const</span>&)
<a name="l00472"></a>00472 {
<a name="l00473"></a>00473 }
<a name="l00474"></a>00474
<a name="l00475"></a>00475 <span class="comment">// Ensure that the application hasn't tweaked the pack value to less than 8, which would break</span>
<a name="l00476"></a>00476 <span class="comment">// matching between the API headers and the binaries</span>
<a name="l00477"></a>00477 <span class="comment">// This assert works on win32/win64, but may need further specialization on other platforms.</span>
<a name="l00478"></a>00478 <span class="comment">// Some GCC compilers need the compiler flag -malign-double to be set.</span>
<a name="l00479"></a>00479 <span class="comment">// Apparently the apple-clang-llvm compiler doesn't support malign-double.</span>
<a name="l00480"></a>00480 <span class="preprocessor">#if PX_PS4 || PX_APPLE_FAMILY || (PX_CLANG && !PX_ARM)</span>
<a name="l00481"></a>00481 <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="structPxPackValidation.html">PxPackValidation</a>
<a name="l00482"></a>00482 {
<a name="l00483"></a>00483 <span class="keywordtype">char</span> <a class="code" href="structPxPackValidation.html#00c377f77d0d7d739bccc389151af49d">_</a>;
<a name="l00484"></a>00484 <span class="keywordtype">long</span> <a class="code" href="structPxPackValidation.html#a2ff9e4c23eeb6b7285e5571deb71535">a</a>;
<a name="l00485"></a>00485 };
<a name="l00486"></a>00486 <span class="preprocessor">#elif PX_ANDROID || (PX_CLANG && PX_ARM)</span>
<a name="l00487"></a>00487 <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="structPxPackValidation.html">PxPackValidation</a>
<a name="l00488"></a>00488 {
<a name="l00489"></a>00489 <span class="keywordtype">char</span> <a class="code" href="structPxPackValidation.html#00c377f77d0d7d739bccc389151af49d">_</a>;
<a name="l00490"></a>00490 <span class="keywordtype">double</span> <a class="code" href="structPxPackValidation.html#a2ff9e4c23eeb6b7285e5571deb71535">a</a>;
<a name="l00491"></a>00491 };
<a name="l00492"></a>00492 <span class="preprocessor">#else</span>
<a name="l00493"></a><a class="code" href="structPxPackValidation.html">00493</a> <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="structPxPackValidation.html">PxPackValidation</a>
<a name="l00494"></a>00494 {
<a name="l00495"></a><a class="code" href="structPxPackValidation.html#00c377f77d0d7d739bccc389151af49d">00495</a> <span class="keywordtype">char</span> <a class="code" href="structPxPackValidation.html#00c377f77d0d7d739bccc389151af49d">_</a>;
<a name="l00496"></a><a class="code" href="structPxPackValidation.html#a2ff9e4c23eeb6b7285e5571deb71535">00496</a> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="structPxPackValidation.html#a2ff9e4c23eeb6b7285e5571deb71535">a</a>;
<a name="l00497"></a>00497 };
<a name="l00498"></a>00498 <span class="preprocessor">#endif</span>
<a name="l00499"></a>00499 <span class="preprocessor"></span><span class="comment">// clang (as of version 3.9) cannot align doubles on 8 byte boundary when compiling for Intel 32 bit target</span>
<a name="l00500"></a>00500 <span class="preprocessor">#if !PX_APPLE_FAMILY && !PX_EMSCRIPTEN && !(PX_CLANG && PX_X86)</span>
<a name="l00501"></a>00501 <span class="preprocessor"></span><a class="code" href="group__foundation.html#gb12cc8cbd08c9c19ab0d40b7f789012e">PX_COMPILE_TIME_ASSERT</a>(<a class="code" href="group__foundation.html#gace09d9150d8d87671f893afe548ebac">PX_OFFSET_OF</a>(<a class="code" href="structPxPackValidation.html">PxPackValidation</a>, a) == 8);
<a name="l00502"></a>00502 <span class="preprocessor">#endif</span>
<a name="l00503"></a>00503 <span class="preprocessor"></span>
<a name="l00504"></a>00504 <span class="comment">// use in a cpp file to suppress LNK4221</span>
<a name="l00505"></a>00505 <span class="preprocessor">#if PX_VC</span>
<a name="l00506"></a>00506 <span class="preprocessor"></span><span class="preprocessor">#define PX_DUMMY_SYMBOL \</span>
<a name="l00507"></a>00507 <span class="preprocessor"> namespace \</span>
<a name="l00508"></a>00508 <span class="preprocessor"> { \</span>
<a name="l00509"></a>00509 <span class="preprocessor"> char PxDummySymbol; \</span>
<a name="l00510"></a>00510 <span class="preprocessor"> }</span>
<a name="l00511"></a>00511 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00512"></a><a class="code" href="group__foundation.html#ge83a283ec08df8515d40c81810628e87">00512</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_DUMMY_SYMBOL</span>
<a name="l00513"></a>00513 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00514"></a>00514 <span class="preprocessor"></span>
<a name="l00515"></a>00515 <span class="preprocessor">#if PX_GCC_FAMILY</span>
<a name="l00516"></a>00516 <span class="preprocessor"></span><span class="preprocessor">#define PX_WEAK_SYMBOL __attribute__((weak)) // this is to support SIMD constant merging in template specialization</span>
<a name="l00517"></a>00517 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00518"></a><a class="code" href="group__foundation.html#g41f92d88ba8f7b8ef321aa090b0e270d">00518</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_WEAK_SYMBOL</span>
<a name="l00519"></a>00519 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00520"></a>00520 <span class="preprocessor"></span>
<a name="l00521"></a>00521 <span class="comment">// Macro for avoiding default assignment and copy, because doing this by inheritance can increase class size on some</span>
<a name="l00522"></a>00522 <span class="comment">// platforms.</span>
<a name="l00523"></a><a class="code" href="group__foundation.html#g2af6846d9d49e433af97059f0291eef1">00523</a> <span class="preprocessor">#define PX_NOCOPY(Class) \</span>
<a name="l00524"></a>00524 <span class="preprocessor"> \</span>
<a name="l00525"></a>00525 <span class="preprocessor">protected: \</span>
<a name="l00526"></a>00526 <span class="preprocessor"> Class(const Class&); \</span>
<a name="l00527"></a>00527 <span class="preprocessor"> Class& operator=(const Class&);</span>
<a name="l00528"></a>00528 <span class="preprocessor"></span>
<a name="l00529"></a>00529 <span class="preprocessor">#ifndef DISABLE_CUDA_PHYSX</span>
<a name="l00530"></a>00530 <span class="preprocessor"></span><span class="comment">//CUDA is currently supported only on windows </span>
<a name="l00531"></a><a class="code" href="group__foundation.html#g0a511de410e7de7a8625fb572f88bd89">00531</a> <span class="preprocessor">#define PX_SUPPORT_GPU_PHYSX ((PX_WINDOWS_FAMILY) || (PX_LINUX && PX_X64))</span>
<a name="l00532"></a>00532 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00533"></a>00533 <span class="preprocessor"></span><span class="preprocessor">#define PX_SUPPORT_GPU_PHYSX 0</span>
<a name="l00534"></a>00534 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00535"></a>00535 <span class="preprocessor"></span>
<a name="l00536"></a><a class="code" href="group__foundation.html#g39f6354f5e10029a058e2141956ed9ef">00536</a> <span class="preprocessor">#define PX_SUPPORT_COMPUTE_PHYSX 0</span>
<a name="l00537"></a>00537 <span class="preprocessor"></span>
<a name="l00538"></a>00538 <span class="preprocessor">#ifndef PX_SUPPORT_EXTERN_TEMPLATE</span>
<a name="l00539"></a><a class="code" href="group__foundation.html#g58dd174408338f37c62dfe6ac1baec60">00539</a> <span class="preprocessor"></span><span class="preprocessor">#define PX_SUPPORT_EXTERN_TEMPLATE ((!PX_ANDROID) && (PX_VC != 11))</span>
<a name="l00540"></a>00540 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00541"></a>00541 <span class="preprocessor"></span><span class="preprocessor">#define PX_SUPPORT_EXTERN_TEMPLATE 0</span>
<a name="l00542"></a>00542 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00543"></a>00543 <span class="preprocessor"></span>
<a name="l00545"></a>00545 <span class="preprocessor">#endif // #ifndef PXFOUNDATION_PXPREPROCESSOR_H</span>
</pre></div></div>
<hr style="width: 100%; height: 2px;"><br>
Copyright © 2008-2018 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. <a href="http://www.nvidia.com ">www.nvidia.com</a>
</body>
</html>
|