Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ObjectHolder.cs
Go to the documentation of this file.
2
4
5internal sealed class ObjectHolder
6{
7 private object _object;
8
9 internal readonly long _id;
10
12
13 private int _missingDecendents;
14
16
18
20
22
24
25 internal int _flags;
26
28
30
32
33 private bool _reachable;
34
36 {
37 get
38 {
39 return (_flags & 1) != 0;
40 }
41 set
42 {
43 if (value)
44 {
45 _flags |= 1;
46 }
47 else
48 {
49 _flags &= -2;
50 }
51 }
52 }
53
54 internal bool RequiresDelayedFixup => (_flags & 7) != 0;
55
56 internal bool RequiresValueTypeFixup => (_flags & 8) != 0;
57
59 {
60 get
61 {
62 if ((_flags & 0x8000) == 0)
63 {
64 if (_object != null)
65 {
66 if (_dependentObjects != null)
67 {
68 return _dependentObjects.Count == 0;
69 }
70 return true;
71 }
72 return false;
73 }
74 return true;
75 }
76 set
77 {
78 if (value)
79 {
80 _flags |= 32768;
81 }
82 }
83 }
84
85 internal bool HasISerializable => (_flags & 2) != 0;
86
87 internal bool HasSurrogate => (_flags & 4) != 0;
88
90 {
91 get
92 {
93 if (_surrogate != null)
94 {
96 }
97 return true;
98 }
99 }
100
102 {
103 get
104 {
106 {
107 if (!HasSurrogate)
108 {
109 return false;
110 }
112 }
113 return true;
114 }
115 }
116
118
120
121 internal bool Reachable
122 {
123 get
124 {
125 return _reachable;
126 }
127 set
128 {
130 }
131 }
132
133 internal bool TypeLoadExceptionReachable => _typeLoad != null;
134
136 {
137 get
138 {
139 return _typeLoad;
140 }
141 set
142 {
144 }
145 }
146
147 internal object ObjectValue => _object;
148
150 {
151 get
152 {
153 return _serInfo;
154 }
155 set
156 {
157 _serInfo = value;
158 }
159 }
160
162
164 {
165 get
166 {
167 return _dependentObjects;
168 }
169 set
170 {
172 }
173 }
174
176 {
177 get
178 {
179 if ((_flags & 4) == 0 && (_flags & 2) == 0)
180 {
181 return false;
182 }
183 return (_flags & 0x4000) == 0;
184 }
185 set
186 {
187 if (!value)
188 {
189 _flags |= 16384;
190 }
191 else
192 {
193 _flags &= -16385;
194 }
195 }
196 }
197
199
200 internal bool CompletelyFixed
201 {
202 get
203 {
205 {
207 }
208 return false;
209 }
210 }
211
212 internal long ContainerID
213 {
214 get
215 {
216 if (_valueFixup == null)
217 {
218 return 0L;
219 }
221 }
222 }
223
224 internal ObjectHolder(long objID)
225 : this(null, objID, null, null, 0L, null, null)
226 {
227 }
228
230 {
231 _object = obj;
232 _id = objID;
233 _flags = 0;
236 _dependentObjects = null;
237 _next = null;
238 _serInfo = info;
242 {
244 }
245 if (idOfContainingObj != 0L && ((field != null && field.FieldType.IsValueType) || arrayIndex != null))
246 {
248 {
250 }
252 }
253 SetFlags();
254 }
255
257 {
258 _object = obj;
259 _id = objID;
260 _flags = 0;
263 _dependentObjects = null;
264 _next = null;
265 _serInfo = info;
268 if (idOfContainingObj != 0L && arrayIndex != null)
269 {
271 }
272 if (_valueFixup != null)
273 {
274 _flags |= 8;
275 }
276 }
277
279 {
281 }
282
291
292 internal void RemoveDependency(long id)
293 {
295 }
296
310
312 {
314 do
315 {
316 objectHolder = manager.FindOrCreateObjectHolder(objectHolder.ContainerID);
318 }
319 while (objectHolder.RequiresValueTypeFixup);
320 }
321
322 internal void AddDependency(long dependentObject)
323 {
324 if (_dependentObjects == null)
325 {
327 }
329 }
330
350
352 {
354 }
355
356 internal void SetFlags()
357 {
359 {
360 _flags |= 1;
361 }
362 _flags &= -7;
363 if (_surrogate != null)
364 {
365 _flags |= 4;
366 }
367 else if (_object is ISerializable)
368 {
369 _flags |= 2;
370 }
371 if (_valueFixup != null)
372 {
373 _flags |= 8;
374 }
375 }
376
378 {
379 _object = obj;
380 if (obj == manager.TopObject)
381 {
382 _reachable = true;
383 }
385 {
387 }
389 {
390 manager.CompleteObject(this, bObjectFullyComplete: true);
391 }
392 }
393}
void AddDependency(long dependentObject)
ObjectHolder(string obj, long objID, SerializationInfo info, ISerializationSurrogate surrogate, long idOfContainingObj, FieldInfo field, int[] arrayIndex)
void SetObjectValue(object obj, ObjectManager manager)
void AddFixup(FixupHolder fixup, ObjectManager manager)
void UpdateData(object obj, SerializationInfo info, ISerializationSurrogate surrogate, long idOfContainer, FieldInfo field, int[] arrayIndex, ObjectManager manager)
void DecrementFixupsRemaining(ObjectManager manager)
ObjectHolder(object obj, long objID, SerializationInfo info, ISerializationSurrogate surrogate, long idOfContainingObj, FieldInfo field, int[] arrayIndex)
void UpdateDescendentDependencyChain(int amount, ObjectManager manager)
static string Serialization_ParentChildIdentical
Definition SR.cs:66
Definition SR.cs:7