aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Documentation/PhysXAPI/files/classPxSerializationContext.html
blob: 4509f6f77e7ec3ce41e0ab98bc81f7f3e10677a0 (plain) (blame)
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
<html>
	<head>
		<title>NVIDIA(R) PhysX(R) SDK 3.4 API Reference: PxSerializationContext Class Reference</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> &nbsp; 
				<a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; 
				<a class="qindex" href="annotated.html">Compound List</a> &nbsp; 
				<a class="qindex" href="functions.html">Compound Members</a> &nbsp;  
			</center>
			<hr class="second">
		</div>
<!-- Generated by Doxygen 1.5.8 -->
<div class="contents">
<h1>PxSerializationContext Class Reference<br>
<small>
[<a class="el" href="group__common.html">Common</a>]</small>
</h1><!-- doxytag: class="PxSerializationContext" -->Binary serialization context class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="PxSerialFramework_8h-source.html">PxSerialFramework.h</a>&gt;</code>
<p>

<p>
<a href="classPxSerializationContext-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#de8ef3b58a16bab4f4cbd3c04a891817">registerReference</a> (<a class="el" href="classPxBase.html">PxBase</a> &amp;base, <a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a> kind, size_t reference)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Registers a reference value corresponding to a <a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object.  <a href="#de8ef3b58a16bab4f4cbd3c04a891817"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classPxCollection.html">PxCollection</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#acf1647853d5b3cede4763f667449bb1">getCollection</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the collection that is being serialized.  <a href="#acf1647853d5b3cede4763f667449bb1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#2cb3cc1613a70406c2bf89ec53035a22">writeData</a> (const void *data, <a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a> size)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Serializes object data and object extra data.  <a href="#2cb3cc1613a70406c2bf89ec53035a22"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#5d7a1f5789f666908ea28caf166fc609">alignData</a> (<a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a> alignment=PX_SERIAL_ALIGN)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Aligns the serialized data.  <a href="#5d7a1f5789f666908ea28caf166fc609"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#1a708961bc536693395826a6bc11a8f6">writeName</a> (const char *name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Helper function to write a name to the extraData if serialization is configured to save names.  <a href="#1a708961bc536693395826a6bc11a8f6"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#586e2fdab9eb45ee4f88c5fc3f637936">PxSerializationContext</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxSerializationContext.html#a2dbd9a052f3bfe5242b3ab8c980f576">~PxSerializationContext</a> ()</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Binary serialization context class. 
<p>
This class is used to register reference values and write object and object extra data during serialization. It is mainly used by the serialization framework. Except for custom serializable types, users should not have to worry about it.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPxDeserializationContext.html" title="Binary deserialization context class.">PxDeserializationContext</a> </dd></dl>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="586e2fdab9eb45ee4f88c5fc3f637936"></a><!-- doxytag: member="PxSerializationContext::PxSerializationContext" ref="586e2fdab9eb45ee4f88c5fc3f637936" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">PxSerializationContext::PxSerializationContext           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="a2dbd9a052f3bfe5242b3ab8c980f576"></a><!-- doxytag: member="PxSerializationContext::~PxSerializationContext" ref="a2dbd9a052f3bfe5242b3ab8c980f576" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual PxSerializationContext::~PxSerializationContext           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="5d7a1f5789f666908ea28caf166fc609"></a><!-- doxytag: member="PxSerializationContext::alignData" ref="5d7a1f5789f666908ea28caf166fc609" args="(PxU32 alignment=PX_SERIAL_ALIGN)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxSerializationContext::alignData           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a>&nbsp;</td>
          <td class="paramname"> <em>alignment</em> = <code>PX_SERIAL_ALIGN</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Aligns the serialized data. 
<p>
This function is assumed to be called within the implementation of <a class="el" href="classPxSerializer.html#b764ac0639b0616549f934de0b31df9f" title="Exports object&#39;s data to stream.">PxSerializer::exportData</a> and <a class="el" href="classPxSerializer.html#c3531178852e0c6e43519aa254ceb823" title="Exports object&#39;s extra data to stream.">PxSerializer::exportExtraData</a>.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPxSerializer.html#b764ac0639b0616549f934de0b31df9f" title="Exports object&#39;s data to stream.">PxSerializer::exportData</a>, <a class="el" href="classPxSerializer.html#c3531178852e0c6e43519aa254ceb823" title="Exports object&#39;s extra data to stream.">PxSerializer::exportExtraData</a>, <a class="el" href="classPxDeserializationContext.html#f6b8fa92c606bc4641ef3e06750b4a37" title="Function to align the extra data stream to a power of 2 alignment.">PxDeserializationContext::alignExtraData</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="acf1647853d5b3cede4763f667449bb1"></a><!-- doxytag: member="PxSerializationContext::getCollection" ref="acf1647853d5b3cede4763f667449bb1" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classPxCollection.html">PxCollection</a>&amp; PxSerializationContext::getCollection           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the collection that is being serialized. 
<p>

</div>
</div><p>
<a class="anchor" name="de8ef3b58a16bab4f4cbd3c04a891817"></a><!-- doxytag: member="PxSerializationContext::registerReference" ref="de8ef3b58a16bab4f4cbd3c04a891817" args="(PxBase &amp;base, PxU32 kind, size_t reference)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxSerializationContext::registerReference           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classPxBase.html">PxBase</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a>&nbsp;</td>
          <td class="paramname"> <em>kind</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>reference</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Registers a reference value corresponding to a <a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object. 
<p>
This method is assumed to be called in the implementation of <a class="el" href="classPxSerializer.html#0352b843a22c461c9f9c3d3c6bea5b44" title="Register references that the object maintains to other objects.">PxSerializer::registerReferences</a> for serialized references that need to be resolved on deserialization.<p>
A reference needs to be associated with exactly one <a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object in either the collection or the external references collection.<p>
Different kinds of references are supported and need to be specified. In the most common case (PX_SERIAL_REF_KIND_PXBASE) the <a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object matches the reference value (which is the pointer to the <a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object). Integer references maybe registered as well (used for internal material indices with PX_SERIAL_REF_KIND_MATERIAL_IDX). Other kinds could be added with the restriction that for pointer types the kind value needs to be marked with the PX_SERIAL_REF_KIND_PTR_TYPE_BIT.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</td><td><a class="el" href="classPxBase.html" title="Base class for objects that can be members of a PxCollection.">PxBase</a> object associated with the reference </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>kind</em>&nbsp;</td><td>What kind of reference this is (PX_SERIAL_REF_KIND_PXBASE, PX_SERIAL_REF_KIND_MATERIAL_IDX or custom kind) </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>reference</em>&nbsp;</td><td>Value of reference</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPxDeserializationContext.html#b190b79866da182afa6f3f23f48d1d37" title="Retrieves a pointer to a deserialized PxBase object given a corresponding deserialized...">PxDeserializationContext::resolveReference</a>, <a class="el" href="group__common.html#g8cd51251f2e11c3b6598b96f32e400f8" title="Reference kind value for PxBase objects.">PX_SERIAL_REF_KIND_PXBASE</a>, <a class="el" href="group__common.html#g27914dcd6d0448671eebfeca012cd0b5" title="Reference kind value for material indices.">PX_SERIAL_REF_KIND_MATERIAL_IDX</a>, <a class="el" href="classPxSerializer.html#0352b843a22c461c9f9c3d3c6bea5b44" title="Register references that the object maintains to other objects.">PxSerializer::registerReferences</a> </dd></dl>

<p>Referenced by <a class="el" href="PxSerializer_8h-source.html#l00196">PxSerializerDefaultAdapter&lt; T &gt;::registerReferences()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2cb3cc1613a70406c2bf89ec53035a22"></a><!-- doxytag: member="PxSerializationContext::writeData" ref="2cb3cc1613a70406c2bf89ec53035a22" args="(const void *data, PxU32 size)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxSerializationContext::writeData           </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__foundation.html#gcce5749db3dcfb916e98c253374264ed">PxU32</a>&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Serializes object data and object extra data. 
<p>
This function is assumed to be called within the implementation of <a class="el" href="classPxSerializer.html#b764ac0639b0616549f934de0b31df9f" title="Exports object&#39;s data to stream.">PxSerializer::exportData</a> and <a class="el" href="classPxSerializer.html#c3531178852e0c6e43519aa254ceb823" title="Exports object&#39;s extra data to stream.">PxSerializer::exportExtraData</a>.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPxSerializer.html#b764ac0639b0616549f934de0b31df9f" title="Exports object&#39;s data to stream.">PxSerializer::exportData</a>, <a class="el" href="classPxSerializer.html#c3531178852e0c6e43519aa254ceb823" title="Exports object&#39;s extra data to stream.">PxSerializer::exportExtraData</a>, <a class="el" href="classPxSerializer.html#1fadfa942cb290428004ef688825dfb3" title="Create object at a given address, resolve references and import extra data.">PxSerializer::createObject</a>, <a class="el" href="classPxDeserializationContext.html#fc3b1411dd1c15ed50b393bb1a65290a" title="Function to read extra data during deserialization.">PxDeserializationContext::readExtraData</a> </dd></dl>

<p>Referenced by <a class="el" href="PxSerializer_8h-source.html#l00191">PxSerializerDefaultAdapter&lt; T &gt;::exportData()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1a708961bc536693395826a6bc11a8f6"></a><!-- doxytag: member="PxSerializationContext::writeName" ref="1a708961bc536693395826a6bc11a8f6" args="(const char *name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxSerializationContext::writeName           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function to write a name to the extraData if serialization is configured to save names. 
<p>
This function is assumed to be called within the implementation of <a class="el" href="classPxSerializer.html#c3531178852e0c6e43519aa254ceb823" title="Exports object&#39;s extra data to stream.">PxSerializer::exportExtraData</a>.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPxSerialization.html#1d6242bea0c7513bfbfb24670e5cfb03" title="Serializes a collection to a binary stream.">PxSerialization::serializeCollectionToBinary</a>, <a class="el" href="classPxDeserializationContext.html#393b7ca347c967d330791d19b2e37006" title="Helper function to read a name from the extra data during deserialization.">PxDeserializationContext::readName</a> </dd></dl>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="PxSerialFramework_8h-source.html">PxSerialFramework.h</a></ul>
</div>

<hr style="width: 100%; height: 2px;"><br>
Copyright &copy; 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>