From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001
From: git perforce import user
Date: Tue, 25 Oct 2016 12:29:14 -0600
Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @
21275617
[CL 21300167]
---
.../PhysXAPI/files/PxPreprocessor_8h-source.html | 469 +++++++++++++++++++++
1 file changed, 469 insertions(+)
create mode 100644 PhysX_3.4/Documentation/PhysXAPI/files/PxPreprocessor_8h-source.html
(limited to 'PhysX_3.4/Documentation/PhysXAPI/files/PxPreprocessor_8h-source.html')
diff --git a/PhysX_3.4/Documentation/PhysXAPI/files/PxPreprocessor_8h-source.html b/PhysX_3.4/Documentation/PhysXAPI/files/PxPreprocessor_8h-source.html
new file mode 100644
index 00000000..67058056
--- /dev/null
+++ b/PhysX_3.4/Documentation/PhysXAPI/files/PxPreprocessor_8h-source.html
@@ -0,0 +1,469 @@
+
+
+ PxPreprocessor.h
Go to the documentation of this file.
00001 // This code contains NVIDIA Confidential Information and is disclosed to you +00002 // under a form of NVIDIA software license agreement provided separately to you. +00003 // +00004 // Notice +00005 // NVIDIA Corporation and its licensors retain all intellectual property and +00006 // proprietary rights in and to this software and related documentation and +00007 // any modifications thereto. Any use, reproduction, disclosure, or +00008 // distribution of this software and related documentation without an express +00009 // license agreement from NVIDIA Corporation is strictly prohibited. +00010 // +00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +00015 // +00016 // Information and code furnished is believed to be accurate and reliable. +00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +00018 // information or for any infringement of patents or other rights of third parties that may +00019 // result from its use. No license is granted by implication or otherwise under any patent +00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice. +00021 // This code supersedes and replaces all information previously supplied. +00022 // NVIDIA Corporation products are not authorized for use as critical +00023 // components in life support devices or systems without express written approval of +00024 // NVIDIA Corporation. +00025 // +00026 // Copyright (c) 2008-2016 NVIDIA Corporation. All rights reserved. +00027 // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. +00028 // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. +00029 +00030 #ifndef PXFOUNDATION_PXPREPROCESSOR_H +00031 #define PXFOUNDATION_PXPREPROCESSOR_H +00032 +00033 #include <stddef.h> +00034 #if !(defined(__clang__) && (defined(_WIN32) || defined(_WIN64))) +00035 #include <ciso646> // detect std::lib, unless clang on windows is used (PxMetaDataGenerator issue) +00036 #endif +00037 +00041 /* +00042 The following preprocessor identifiers specify compiler, OS, and architecture. +00043 All definitions have a value of 1 or 0, use '#if' instead of '#ifdef'. +00044 */ +00045 +00049 #if defined(_MSC_VER) +00050 #if _MSC_VER >= 1900 +00051 #define PX_VC 14 +00052 #elif _MSC_VER >= 1800 +00053 #define PX_VC 12 +00054 #elif _MSC_VER >= 1700 +00055 #define PX_VC 11 +00056 #elif _MSC_VER >= 1600 +00057 #define PX_VC 10 +00058 #elif _MSC_VER >= 1500 +00059 #define PX_VC 9 +00060 #else +00061 #error "Unknown VC version" +00062 #endif +00063 #elif defined(__clang__) +00064 #define PX_CLANG 1 +00065 #elif defined(__GNUC__) // note: __clang__ implies __GNUC__ +00066 #define PX_GCC 1 +00067 #else +00068 #error "Unknown compiler" +00069 #endif +00070 +00074 #if defined(_XBOX_ONE) +00075 #define PX_XBOXONE 1 +00076 #elif defined(_WIN64) // note: _XBOX_ONE implies _WIN64 +00077 #define PX_WIN64 1 +00078 #elif defined(_WIN32) // note: _M_PPC implies _WIN32 +00079 #define PX_WIN32 1 +00080 #elif defined(__ANDROID__) +00081 #define PX_ANDROID 1 +00082 #elif defined(__linux__) || defined (__EMSCRIPTEN__) // note: __ANDROID__ implies __linux__ +00083 #define PX_LINUX 1 +00084 #elif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) +00085 #define PX_IOS 1 +00086 #elif defined(__APPLE__) +00087 #define PX_OSX 1 +00088 #elif defined(__ORBIS__) +00089 #define PX_PS4 1 +00090 #else +00091 #error "Unknown operating system" +00092 #endif +00093 +00097 #if defined(__x86_64__) || defined(_M_X64) // ps4 compiler defines _M_X64 without value +00098 #define PX_X64 1 +00099 #elif defined(__i386__) || defined(_M_IX86) || defined (__EMSCRIPTEN__) +00100 #define PX_X86 1 +00101 #elif defined(__arm64__) || defined(__aarch64__) +00102 #define PX_A64 1 +00103 #elif defined(__arm__) || defined(_M_ARM) +00104 #define PX_ARM 1 +00105 #elif defined(__ppc__) || defined(_M_PPC) || defined(__CELLOS_LV2__) +00106 #define PX_PPC 1 +00107 #else +00108 #error "Unknown architecture" +00109 #endif +00110 +00114 #if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || defined (__EMSCRIPTEN__) +00115 #define PX_SSE2 1 +00116 #endif +00117 #if defined(_M_ARM) || defined(__ARM_NEON__) +00118 #define PX_NEON 1 +00119 #endif +00120 #if defined(_M_PPC) || defined(__CELLOS_LV2__) +00121 #define PX_VMX 1 +00122 #endif +00123 +00127 #ifndef PX_VC +00128 #define PX_VC 0 +00129 #endif +00130 #ifndef PX_CLANG +00131 #define PX_CLANG 0 +00132 #endif +00133 #ifndef PX_GCC +00134 #define PX_GCC 0 +00135 #endif +00136 #ifndef PX_XBOXONE +00137 #define PX_XBOXONE 0 +00138 #endif +00139 #ifndef PX_WIN64 +00140 #define PX_WIN64 0 +00141 #endif +00142 #ifndef PX_WIN32 +00143 #define PX_WIN32 0 +00144 #endif +00145 #ifndef PX_ANDROID +00146 #define PX_ANDROID 0 +00147 #endif +00148 #ifndef PX_LINUX +00149 #define PX_LINUX 0 +00150 #endif +00151 #ifndef PX_IOS +00152 #define PX_IOS 0 +00153 #endif +00154 #ifndef PX_OSX +00155 #define PX_OSX 0 +00156 #endif +00157 #ifndef PX_PS4 +00158 #define PX_PS4 0 +00159 #endif +00160 #ifndef PX_X64 +00161 #define PX_X64 0 +00162 #endif +00163 #ifndef PX_X86 +00164 #define PX_X86 0 +00165 #endif +00166 #ifndef PX_A64 +00167 #define PX_A64 0 +00168 #endif +00169 #ifndef PX_ARM +00170 #define PX_ARM 0 +00171 #endif +00172 #ifndef PX_PPC +00173 #define PX_PPC 0 +00174 #endif +00175 #ifndef PX_SSE2 +00176 #define PX_SSE2 0 +00177 #endif +00178 #ifndef PX_NEON +00179 #define PX_NEON 0 +00180 #endif +00181 #ifndef PX_VMX +00182 #define PX_VMX 0 +00183 #endif +00184 +00185 /* +00186 define anything not defined through the command line to 0 +00187 */ +00188 #ifndef PX_DEBUG +00189 #define PX_DEBUG 0 +00190 #endif +00191 #ifndef PX_CHECKED +00192 #define PX_CHECKED 0 +00193 #endif +00194 #ifndef PX_PROFILE +00195 #define PX_PROFILE 0 +00196 #endif +00197 #ifndef PX_NVTX +00198 #define PX_NVTX 0 +00199 #endif +00200 #ifndef PX_DOXYGEN +00201 #define PX_DOXYGEN 0 +00202 #endif +00203 +00207 // compiler +00208 #define PX_GCC_FAMILY (PX_CLANG || PX_GCC) +00209 // os +00210 #define PX_WINDOWS_FAMILY (PX_WIN32 || PX_WIN64) +00211 #define PX_MICROSOFT_FAMILY (PX_XBOXONE || PX_WINDOWS_FAMILY) +00212 #define PX_LINUX_FAMILY (PX_LINUX || PX_ANDROID) +00213 #define PX_APPLE_FAMILY (PX_IOS || PX_OSX) // equivalent to #if __APPLE__ +00214 #define PX_UNIX_FAMILY (PX_LINUX_FAMILY || PX_APPLE_FAMILY) // shortcut for unix/posix platforms +00215 #if defined(__EMSCRIPTEN__) +00216 #define PX_EMSCRIPTEN 1 +00217 #else +00218 #define PX_EMSCRIPTEN 0 +00219 #endif +00220 // architecture +00221 #define PX_INTEL_FAMILY (PX_X64 || PX_X86) +00222 #define PX_ARM_FAMILY (PX_ARM || PX_A64) +00223 #define PX_P64_FAMILY (PX_X64 || PX_A64) // shortcut for 64-bit architectures +00224 +00228 #if defined(_LIBCPP_VERSION) || PX_WIN64 || PX_WIN32 || PX_PS4 || PX_XBOXONE || PX_EMSCRIPTEN +00229 #define PX_LIBCPP 1 +00230 #else +00231 #define PX_LIBCPP 0 +00232 #endif +00233 +00234 // legacy define for PhysX +00235 #define PX_WINDOWS (PX_WINDOWS_FAMILY && !PX_ARM_FAMILY) +00236 +00240 #ifndef PX_ENABLE_ASSERTS +00241 #if PX_DEBUG && !defined(__CUDACC__) +00242 #define PX_ENABLE_ASSERTS 1 +00243 #else +00244 #define PX_ENABLE_ASSERTS 0 +00245 #endif +00246 #endif +00247 +00251 #ifndef PX_C_EXPORT +00252 #if PX_WINDOWS_FAMILY || PX_LINUX +00253 #define PX_C_EXPORT extern "C" +00254 #else +00255 #define PX_C_EXPORT +00256 #endif +00257 #endif +00258 +00259 #if PX_UNIX_FAMILY&& __GNUC__ >= 4 +00260 #define PX_UNIX_EXPORT __attribute__((visibility("default"))) +00261 #else +00262 #define PX_UNIX_EXPORT +00263 #endif +00264 +00265 #if PX_WINDOWS_FAMILY +00266 #define PX_DLL_EXPORT __declspec(dllexport) +00267 #define PX_DLL_IMPORT __declspec(dllimport) +00268 #else +00269 #define PX_DLL_EXPORT PX_UNIX_EXPORT +00270 #define PX_DLL_IMPORT +00271 #endif +00272 +00282 #if PX_WINDOWS_FAMILY && !PX_ARM_FAMILY +00283 #ifndef PX_FOUNDATION_DLL +00284 #define PX_FOUNDATION_API PX_DLL_IMPORT +00285 #elif PX_FOUNDATION_DLL +00286 #define PX_FOUNDATION_API PX_DLL_EXPORT +00287 #endif +00288 #elif PX_UNIX_FAMILY +00289 #ifdef PX_FOUNDATION_DLL +00290 #define PX_FOUNDATION_API PX_UNIX_EXPORT +00291 #endif +00292 #endif +00293 +00294 #ifndef PX_FOUNDATION_API +00295 #define PX_FOUNDATION_API +00296 #endif +00297 +00301 #ifndef PX_CALL_CONV +00302 #if PX_MICROSOFT_FAMILY +00303 #define PX_CALL_CONV __cdecl +00304 #else +00305 #define PX_CALL_CONV +00306 #endif +00307 #endif +00308 +00312 #if PX_VC +00313 #define PX_PUSH_PACK_DEFAULT __pragma(pack(push, 8)) +00314 #define PX_POP_PACK __pragma(pack(pop)) +00315 #elif PX_GCC_FAMILY +00316 #define PX_PUSH_PACK_DEFAULT _Pragma("pack(push, 8)") +00317 #define PX_POP_PACK _Pragma("pack(pop)") +00318 #else +00319 #define PX_PUSH_PACK_DEFAULT +00320 #define PX_POP_PACK +00321 #endif +00322 +00326 #define PX_INLINE inline +00327 #if PX_MICROSOFT_FAMILY +00328 #pragma inline_depth(255) +00329 #endif +00330 +00334 #if PX_VC +00335 #define PX_FORCE_INLINE __forceinline +00336 #elif PX_LINUX // Workaround; Fedora Core 3 do not agree with force inline and PxcPool +00337 #define PX_FORCE_INLINE inline +00338 #elif PX_GCC_FAMILY +00339 #define PX_FORCE_INLINE inline __attribute__((always_inline)) +00340 #else +00341 #define PX_FORCE_INLINE inline +00342 #endif +00343 +00347 #if PX_MICROSOFT_FAMILY +00348 #define PX_NOINLINE __declspec(noinline) +00349 #elif PX_GCC_FAMILY +00350 #define PX_NOINLINE __attribute__((noinline)) +00351 #else +00352 #define PX_NOINLINE +00353 #endif +00354 +00358 #if defined(__CUDACC__) +00359 #define PX_RESTRICT __restrict__ +00360 #else +00361 #define PX_RESTRICT __restrict +00362 #endif +00363 +00367 #if PX_MICROSOFT_FAMILY +00368 #define PX_NOALIAS __declspec(noalias) +00369 #else +00370 #define PX_NOALIAS +00371 #endif +00372 +00384 #ifndef PX_ALIGN +00385 #if PX_MICROSOFT_FAMILY +00386 #define PX_ALIGN(alignment, decl) __declspec(align(alignment)) decl +00387 #define PX_ALIGN_PREFIX(alignment) __declspec(align(alignment)) +00388 #define PX_ALIGN_SUFFIX(alignment) +00389 #elif PX_GCC_FAMILY +00390 #define PX_ALIGN(alignment, decl) decl __attribute__((aligned(alignment))) +00391 #define PX_ALIGN_PREFIX(alignment) +00392 #define PX_ALIGN_SUFFIX(alignment) __attribute__((aligned(alignment))) +00393 #elif defined __CUDACC__ +00394 #define PX_ALIGN(alignment, decl) __align__(alignment) decl +00395 #define PX_ALIGN_PREFIX(alignment) +00396 #define PX_ALIGN_SUFFIX(alignment) __align__(alignment)) +00397 #else +00398 #define PX_ALIGN(alignment, decl) +00399 #define PX_ALIGN_PREFIX(alignment) +00400 #define PX_ALIGN_SUFFIX(alignment) +00401 #endif +00402 #endif +00403 +00414 #define PX_DEPRECATED +00415 +00420 // static assert +00421 #if(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) || (PX_PS4) || (PX_APPLE_FAMILY) +00422 #define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1] __attribute__((unused)) +00423 #else +00424 #define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1] +00425 #endif +00426 +00427 #if PX_GCC_FAMILY +00428 #define PX_OFFSET_OF(X, Y) __builtin_offsetof(X, Y) +00429 #else +00430 #define PX_OFFSET_OF(X, Y) offsetof(X, Y) +00431 #endif +00432 +00433 #define PX_OFFSETOF_BASE 0x100 // casting the null ptr takes a special-case code path, which we don't want +00434 #define PX_OFFSET_OF_RT(Class, Member) \ +00435 (reinterpret_cast<size_t>(&reinterpret_cast<Class*>(PX_OFFSETOF_BASE)->Member) - size_t(PX_OFFSETOF_BASE)) +00436 +00437 // check that exactly one of NDEBUG and _DEBUG is defined +00438 #if !defined(NDEBUG) ^ defined(_DEBUG) +00439 #error Exactly one of NDEBUG and _DEBUG needs to be defined! +00440 #endif +00441 +00442 // make sure PX_CHECKED is defined in all _DEBUG configurations as well +00443 #if !PX_CHECKED && PX_DEBUG +00444 #error PX_CHECKED must be defined when PX_DEBUG is defined +00445 #endif +00446 +00447 #ifdef __CUDACC__ +00448 #define PX_CUDA_CALLABLE __host__ __device__ +00449 #else +00450 #define PX_CUDA_CALLABLE +00451 #endif +00452 +00453 // avoid unreferenced parameter warning +00454 // preferred solution: omit the parameter's name from the declaration +00455 template <class T> +00456 PX_CUDA_CALLABLE PX_INLINE void PX_UNUSED(T const&) +00457 { +00458 } +00459 +00460 // Ensure that the application hasn't tweaked the pack value to less than 8, which would break +00461 // matching between the API headers and the binaries +00462 // This assert works on win32/win64, but may need further specialization on other platforms. +00463 // Some GCC compilers need the compiler flag -malign-double to be set. +00464 // Apparently the apple-clang-llvm compiler doesn't support malign-double. +00465 #if PX_PS4 || PX_APPLE_FAMILY +00466 struct PxPackValidation +00467 { +00468 char _; +00469 long a; +00470 }; +00471 #elif PX_ANDROID +00472 struct PxPackValidation +00473 { +00474 char _; +00475 double a; +00476 }; +00477 #else +00478 struct PxPackValidation +00479 { +00480 char _; +00481 long long a; +00482 }; +00483 #endif +00484 #if !PX_APPLE_FAMILY +00485 PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PxPackValidation, a) == 8); +00486 #endif +00487 +00488 // use in a cpp file to suppress LNK4221 +00489 #if PX_VC +00490 #define PX_DUMMY_SYMBOL \ +00491 namespace \ +00492 { \ +00493 char PxDummySymbol; \ +00494 } +00495 #else +00496 #define PX_DUMMY_SYMBOL +00497 #endif +00498 +00499 #if PX_GCC_FAMILY +00500 #define PX_WEAK_SYMBOL __attribute__((weak)) // this is to support SIMD constant merging in template specialization +00501 #else +00502 #define PX_WEAK_SYMBOL +00503 #endif +00504 +00505 // Macro for avoiding default assignment and copy, because doing this by inheritance can increase class size on some +00506 // platforms. +00507 #define PX_NOCOPY(Class) \ +00508 \ +00509 protected: \ +00510 Class(const Class&); \ +00511 Class& operator=(const Class&); +00512 +00513 #define PX_STRINGIZE_HELPER(X) #X +00514 #define PX_STRINGIZE(X) PX_STRINGIZE_HELPER(X) +00515 +00516 #define PX_CONCAT_HELPER(X, Y) X##Y +00517 #define PX_CONCAT(X, Y) PX_CONCAT_HELPER(X, Y) +00518 +00519 #ifndef DISABLE_CUDA_PHYSX +00520 //CUDA is currently supported only on windows +00521 #define PX_SUPPORT_GPU_PHYSX ((PX_WINDOWS_FAMILY) || (PX_LINUX && PX_X64)) +00522 #else +00523 #define PX_SUPPORT_GPU_PHYSX 0 +00524 #endif +00525 +00526 #define PX_SUPPORT_COMPUTE_PHYSX 0 +00527 +00529 #endif // #ifndef PXFOUNDATION_PXPREPROCESSOR_H +