diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html')
| -rw-r--r-- | PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html b/PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html new file mode 100644 index 00000000..defacc83 --- /dev/null +++ b/PhysX_3.4/Documentation/PhysXAPI/files/PxSerializer_8h-source.html @@ -0,0 +1,195 @@ +<html> + <head> + <title>NVIDIA(R) PhysX(R) SDK 3.4 API Reference: PxSerializer.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>PxSerializer.h</h1><a href="PxSerializer_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span> +<a name="l00002"></a>00002 <span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span> +<a name="l00003"></a>00003 <span class="comment">//</span> +<a name="l00004"></a>00004 <span class="comment">// Notice</span> +<a name="l00005"></a>00005 <span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span> +<a name="l00006"></a>00006 <span class="comment">// proprietary rights in and to this software and related documentation and</span> +<a name="l00007"></a>00007 <span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span> +<a name="l00008"></a>00008 <span class="comment">// distribution of this software and related documentation without an express</span> +<a name="l00009"></a>00009 <span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span> +<a name="l00010"></a>00010 <span class="comment">//</span> +<a name="l00011"></a>00011 <span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES</span> +<a name="l00012"></a>00012 <span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span> +<a name="l00013"></a>00013 <span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span> +<a name="l00014"></a>00014 <span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span> +<a name="l00015"></a>00015 <span class="comment">//</span> +<a name="l00016"></a>00016 <span class="comment">// Information and code furnished is believed to be accurate and reliable.</span> +<a name="l00017"></a>00017 <span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span> +<a name="l00018"></a>00018 <span class="comment">// information or for any infringement of patents or other rights of third parties that may</span> +<a name="l00019"></a>00019 <span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span> +<a name="l00020"></a>00020 <span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span> +<a name="l00021"></a>00021 <span class="comment">// This code supersedes and replaces all information previously supplied.</span> +<a name="l00022"></a>00022 <span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span> +<a name="l00023"></a>00023 <span class="comment">// components in life support devices or systems without express written approval of</span> +<a name="l00024"></a>00024 <span class="comment">// NVIDIA Corporation.</span> +<a name="l00025"></a>00025 <span class="comment">//</span> +<a name="l00026"></a>00026 <span class="comment">// Copyright (c) 2008-2016 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 +<a name="l00031"></a>00031 <span class="preprocessor">#ifndef PX_SERIALIZER_H</span> +<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#define PX_SERIALIZER_H</span> +<a name="l00033"></a>00033 <span class="preprocessor"></span> +<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="PxSerialFramework_8h.html">PxSerialFramework.h</a>"</span> +<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="PxCollection_8h.html">PxCollection.h</a>"</span> +<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="PxAssert_8h.html">foundation/PxAssert.h</a>"</span> +<a name="l00040"></a>00040 +<a name="l00041"></a>00041 <span class="preprocessor">#if !PX_DOXYGEN</span> +<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="keyword">namespace </span>physx +<a name="l00043"></a>00043 { +<a name="l00044"></a>00044 <span class="preprocessor">#endif</span> +<a name="l00045"></a>00045 <span class="preprocessor"></span> +<a name="l00061"></a><a class="code" href="classPxSerializer.html">00061</a> <span class="keyword">class </span><a class="code" href="classPxSerializer.html" title="Serialization interface class.">PxSerializer</a> +<a name="l00062"></a>00062 { +<a name="l00063"></a>00063 <span class="keyword">public</span>: +<a name="l00064"></a>00064 +<a name="l00065"></a>00065 <span class="comment">/**********************************************************************************************************************/</span> +<a name="l00066"></a>00066 +<a name="l00070"></a>00070 +<a name="l00076"></a>00076 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getConcreteTypeName() <span class="keyword">const</span> = 0; +<a name="l00077"></a>00077 +<a name="l00085"></a>00085 <span class="keyword">virtual</span> <span class="keywordtype">void</span> requires(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>&, <a class="code" href="classPxProcessPxBaseCallback.html" title="Callback class used to process PxBase objects.">PxProcessPxBaseCallback</a>&) <span class="keyword">const</span> = 0; +<a name="l00086"></a>00086 +<a name="l00096"></a>00096 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSubordinate() <span class="keyword">const</span> = 0; +<a name="l00097"></a>00097 +<a name="l00099"></a>00099 <span class="comment">/**********************************************************************************************************************/</span> +<a name="l00100"></a>00100 +<a name="l00101"></a>00101 <span class="comment">/**********************************************************************************************************************/</span> +<a name="l00102"></a>00102 +<a name="l00106"></a>00106 +<a name="l00110"></a>00110 <span class="keyword">virtual</span> <span class="keywordtype">void</span> exportExtraData(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>&, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>&) <span class="keyword">const</span> = 0; +<a name="l00111"></a>00111 +<a name="l00115"></a>00115 <span class="keyword">virtual</span> <span class="keywordtype">void</span> exportData(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>&, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>&) <span class="keyword">const</span> = 0; +<a name="l00116"></a>00116 +<a name="l00120"></a>00120 <span class="keyword">virtual</span> <span class="keywordtype">void</span> registerReferences(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>& obj, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& s) <span class="keyword">const</span> = 0; +<a name="l00121"></a>00121 +<a name="l00127"></a>00127 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> getClassSize() <span class="keyword">const</span> = 0; +<a name="l00128"></a>00128 +<a name="l00136"></a>00136 <span class="keyword">virtual</span> <a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>* createObject(<a class="code" href="namespacephysx.html#3849f86abc21d3a58949481603fe8309">PxU8</a>*& address, <a class="code" href="classPxDeserializationContext.html" title="Binary deserialization context class.">PxDeserializationContext</a>& context) <span class="keyword">const</span> = 0; +<a name="l00137"></a>00137 +<a name="l00139"></a>00139 <span class="comment">/**********************************************************************************************************************/</span> +<a name="l00140"></a><a class="code" href="classPxSerializer.html#96746551fdacb2df8da8f2887817ff5f">00140</a> <span class="keyword">virtual</span> <a class="code" href="classPxSerializer.html#96746551fdacb2df8da8f2887817ff5f">~PxSerializer</a>() {} +<a name="l00141"></a>00141 }; +<a name="l00142"></a>00142 +<a name="l00143"></a>00143 +<a name="l00147"></a>00147 <span class="keyword">template</span><<span class="keyword">class</span> T> +<a name="l00148"></a><a class="code" href="classPxSerializerDefaultAdapter.html">00148</a> <span class="keyword">class </span><a class="code" href="classPxSerializerDefaultAdapter.html" title="Default PxSerializer implementation.">PxSerializerDefaultAdapter</a> : <span class="keyword">public</span> <a class="code" href="classPxSerializer.html" title="Serialization interface class.">PxSerializer</a> +<a name="l00149"></a>00149 { +<a name="l00150"></a>00150 <span class="keyword">public</span>: +<a name="l00151"></a>00151 +<a name="l00152"></a>00152 <span class="comment">/************************************************************************************************/</span> +<a name="l00153"></a>00153 +<a name="l00157"></a>00157 +<a name="l00158"></a><a class="code" href="classPxSerializerDefaultAdapter.html#3a59a446ea4fc277d0c224881c2f8658">00158</a> <a class="code" href="classPxSerializerDefaultAdapter.html#3a59a446ea4fc277d0c224881c2f8658">PxSerializerDefaultAdapter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name) : mTypeName(name){} +<a name="l00159"></a>00159 +<a name="l00160"></a><a class="code" href="classPxSerializerDefaultAdapter.html#eb03db4d0c9703af533696978aa72a27">00160</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* getConcreteTypeName()<span class="keyword"> const</span> +<a name="l00161"></a>00161 <span class="keyword"> </span>{ +<a name="l00162"></a>00162 <span class="keywordflow">return</span> mTypeName; +<a name="l00163"></a>00163 } +<a name="l00164"></a>00164 +<a name="l00165"></a><a class="code" href="classPxSerializerDefaultAdapter.html#b5e14929bfabcb268f3e6f3e710f5657">00165</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> requires(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>& obj, <a class="code" href="classPxProcessPxBaseCallback.html" title="Callback class used to process PxBase objects.">PxProcessPxBaseCallback</a>& c)<span class="keyword"> const</span> +<a name="l00166"></a>00166 <span class="keyword"> </span>{ +<a name="l00167"></a>00167 T& t = <span class="keyword">static_cast<</span>T&<span class="keyword">></span>(obj); +<a name="l00168"></a>00168 t.requires(c); +<a name="l00169"></a>00169 } +<a name="l00170"></a>00170 +<a name="l00171"></a><a class="code" href="classPxSerializerDefaultAdapter.html#4d038c573df687220ead4a77727b010f">00171</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSubordinate()<span class="keyword"> const</span> +<a name="l00172"></a>00172 <span class="keyword"> </span>{ +<a name="l00173"></a>00173 <span class="keywordflow">return</span> <span class="keyword">false</span>; +<a name="l00174"></a>00174 } +<a name="l00175"></a>00175 +<a name="l00177"></a>00177 <span class="comment">/************************************************************************************************/</span> +<a name="l00178"></a>00178 +<a name="l00182"></a>00182 +<a name="l00183"></a>00183 <span class="comment">// object methods</span> +<a name="l00184"></a>00184 +<a name="l00185"></a><a class="code" href="classPxSerializerDefaultAdapter.html#268c6700a8309b22890a882c8b097717">00185</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> exportExtraData(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>& obj, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& s)<span class="keyword"> const</span> +<a name="l00186"></a>00186 <span class="keyword"> </span>{ +<a name="l00187"></a>00187 T& t = <span class="keyword">static_cast<</span>T&<span class="keyword">></span>(obj); +<a name="l00188"></a>00188 t.exportExtraData(s); +<a name="l00189"></a>00189 } +<a name="l00190"></a>00190 +<a name="l00191"></a><a class="code" href="classPxSerializerDefaultAdapter.html#38ddac12b78f625e8eadd2a8ea5e5dd2">00191</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> exportData(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>& obj, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& s)<span class="keyword"> const</span> +<a name="l00192"></a>00192 <span class="keyword"> </span>{ +<a name="l00193"></a>00193 s.<a class="code" href="classPxSerializationContext.html#2cb3cc1613a70406c2bf89ec53035a22" title="Serializes object data and object extra data.">writeData</a>(&obj, <span class="keyword">sizeof</span>(T)); +<a name="l00194"></a>00194 } +<a name="l00195"></a>00195 +<a name="l00196"></a><a class="code" href="classPxSerializerDefaultAdapter.html#b6b01e18a34aa9ad330ec4602a40dedb">00196</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> registerReferences(<a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>& obj, <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& s)<span class="keyword"> const</span> +<a name="l00197"></a>00197 <span class="keyword"> </span>{ +<a name="l00198"></a>00198 T& t = <span class="keyword">static_cast<</span>T&<span class="keyword">></span>(obj); +<a name="l00199"></a>00199 +<a name="l00200"></a>00200 s.<a class="code" href="classPxSerializationContext.html#de8ef3b58a16bab4f4cbd3c04a891817" title="Registers a reference value corresponding to a PxBase object.">registerReference</a>(obj, <a class="code" href="group__common.html#g8cd51251f2e11c3b6598b96f32e400f8" title="Reference kind value for PxBase objects.">PX_SERIAL_REF_KIND_PXBASE</a>, <span class="keywordtype">size_t</span>(&obj)); +<a name="l00201"></a>00201 +<a name="l00202"></a>00202 <span class="keyword">struct </span>RequiresCallback : <span class="keyword">public</span> <a class="code" href="classPxProcessPxBaseCallback.html" title="Callback class used to process PxBase objects.">PxProcessPxBaseCallback</a> +<a name="l00203"></a>00203 { +<a name="l00204"></a>00204 RequiresCallback(<a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& c) : context(c) {} +<a name="l00205"></a>00205 RequiresCallback& operator=(RequiresCallback&) { <a class="code" href="group__foundation.html#g4a83a657390b324a460f14684e5accee">PX_ASSERT</a>(0); <span class="keywordflow">return</span> *<span class="keyword">this</span>; } +<a name="l00206"></a>00206 <span class="keywordtype">void</span> process(physx::PxBase& base) +<a name="l00207"></a>00207 { +<a name="l00208"></a>00208 context.registerReference(base, <a class="code" href="group__common.html#g8cd51251f2e11c3b6598b96f32e400f8" title="Reference kind value for PxBase objects.">PX_SERIAL_REF_KIND_PXBASE</a>, <span class="keywordtype">size_t</span>(&base)); +<a name="l00209"></a>00209 } +<a name="l00210"></a>00210 <a class="code" href="classPxSerializationContext.html" title="Binary serialization context class.">PxSerializationContext</a>& context; +<a name="l00211"></a>00211 }; +<a name="l00212"></a>00212 +<a name="l00213"></a>00213 RequiresCallback callback(s); +<a name="l00214"></a>00214 t.requires(callback); +<a name="l00215"></a>00215 } +<a name="l00216"></a>00216 +<a name="l00217"></a>00217 <span class="comment">// class methods</span> +<a name="l00218"></a>00218 +<a name="l00219"></a><a class="code" href="classPxSerializerDefaultAdapter.html#4b95fe59d75cd8482d74211c1844ce19">00219</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> getClassSize()<span class="keyword"> const</span> +<a name="l00220"></a>00220 <span class="keyword"> </span>{ +<a name="l00221"></a>00221 <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(T); +<a name="l00222"></a>00222 } +<a name="l00223"></a>00223 +<a name="l00224"></a><a class="code" href="classPxSerializerDefaultAdapter.html#1dfae626a47297bddf597a204c0e4d24">00224</a> <span class="keyword">virtual</span> <a class="code" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a>* createObject(<a class="code" href="namespacephysx.html#3849f86abc21d3a58949481603fe8309">PxU8</a>*& address, <a class="code" href="classPxDeserializationContext.html" title="Binary deserialization context class.">PxDeserializationContext</a>& context)<span class="keyword"> const</span> +<a name="l00225"></a>00225 <span class="keyword"> </span>{ +<a name="l00226"></a>00226 <span class="keywordflow">return</span> T::createObject(address, context); +<a name="l00227"></a>00227 } +<a name="l00228"></a>00228 +<a name="l00229"></a>00229 +<a name="l00231"></a>00231 <span class="comment">/************************************************************************************************/</span> +<a name="l00232"></a>00232 +<a name="l00233"></a>00233 <span class="keyword">private</span>: +<a name="l00234"></a><a class="code" href="classPxSerializerDefaultAdapter.html#12385fd1d59f49f27aed66c91b5d647c">00234</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* mTypeName; +<a name="l00235"></a>00235 }; +<a name="l00236"></a>00236 +<a name="l00242"></a><a class="code" href="group__extensions.html#g8695b63c3fd0f8e29ecce92c64e8f79b">00242</a> <span class="preprocessor">#define PX_NEW_SERIALIZER_ADAPTER(x) \</span> +<a name="l00243"></a>00243 <span class="preprocessor"> *new( PxGetFoundation().getAllocatorCallback().allocate(sizeof(PxSerializerDefaultAdapter<x>), \</span> +<a name="l00244"></a>00244 <span class="preprocessor"> "PxSerializerDefaultAdapter", __FILE__, __LINE__ )) PxSerializerDefaultAdapter<x>(#x)</span> +<a name="l00245"></a>00245 <span class="preprocessor"></span> +<a name="l00249"></a><a class="code" href="group__extensions.html#gf9d523f77e7143a4c7e49424d9f0081e">00249</a> <span class="preprocessor">#define PX_DELETE_SERIALIZER_ADAPTER(x) \</span> +<a name="l00250"></a>00250 <span class="preprocessor"> { PxSerializer* s = x; if (s) { s->~PxSerializer(); PxGetFoundation().getAllocatorCallback().deallocate(s); } }</span> +<a name="l00251"></a>00251 <span class="preprocessor"></span> +<a name="l00252"></a>00252 <span class="preprocessor">#if !PX_DOXYGEN</span> +<a name="l00253"></a>00253 <span class="preprocessor"></span>} <span class="comment">// namespace physx</span> +<a name="l00254"></a>00254 <span class="preprocessor">#endif</span> +<a name="l00255"></a>00255 <span class="preprocessor"></span> +<a name="l00257"></a>00257 <span class="preprocessor">#endif</span> +</pre></div></div> + +<hr style="width: 100%; height: 2px;"><br> +Copyright © 2008-2016 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> |