4 using System.Collections.Generic;
6 using System.Reflection;
7 using System.Runtime.InteropServices;
9 using System.Collections;
10 using SiliconStudio.Core.Reflection;
12 namespace SiliconStudio.Core.Serialization.Serializers
45 int count = stream.ReadInt32();
47 for (
int i = 0; i <
count; ++i)
50 itemDataSerializer.Serialize(ref value, mode, stream);
56 stream.Write(obj.Count);
57 foreach (T item
in obj)
59 itemDataSerializer.Serialize(item, stream);
66 genericInstantiations.Add(typeof(T));
76 private bool isInterface = typeof(TList).GetTypeInfo().IsInterface;
90 obj = isInterface ? (TList)(
object)
new List<T>() : Activator.CreateInstance<TList>();
101 int count = stream.ReadInt32();
102 for (
int i = 0; i <
count; ++i)
104 T value =
default(T);
105 itemDataSerializer.Serialize(ref value, mode, stream);
111 stream.Write(obj.Count);
112 foreach (T item
in obj)
114 itemDataSerializer.Serialize(item, stream);
121 genericInstantiations.Add(typeof(T));
131 [DataSerializerGlobal(typeof(SortedListSerializer<,>), typeof(SiliconStudio.Core.Collections.SortedList<,>),
DataSerializerGenericMode.GenericArguments)]
151 obj =
new SiliconStudio.Core.Collections.SortedList<TKey, TValue>();
163 int count = stream.ReadInt32();
164 for (
int i = 0; i <
count; ++i)
166 TKey key =
default(TKey);
167 TValue value =
default(TValue);
168 keySerializer.Serialize(ref key, mode, stream);
169 valueSerializer.Serialize(ref value, mode, stream);
175 stream.Write(obj.Count);
176 foreach (var item
in obj)
178 keySerializer.Serialize(item.Key, stream);
179 valueSerializer.Serialize(item.Value, stream);
186 genericInstantiations.Add(typeof(TKey));
187 genericInstantiations.Add(typeof(TValue));
223 int count = stream.ReadInt32();
224 for (
int i = 0; i <
count; ++i)
226 T value =
default(T);
227 itemDataSerializer.Serialize(ref value, mode, stream);
233 stream.Write(obj.Count);
234 foreach (T item
in obj)
236 itemDataSerializer.Serialize(item, stream);
243 genericInstantiations.Add(typeof(T));
246 genericInstantiations.Add(typeof(List<T>));
268 stream.Write(obj.Length);
272 int length = stream.ReadInt32();
282 int count = obj.Length;
283 for (
int i = 0; i <
count; ++i)
285 itemDataSerializer.Serialize(ref obj[i], mode, stream);
290 int count = obj.Length;
291 for (
int i = 0; i <
count; ++i)
293 itemDataSerializer.Serialize(ref obj[i], mode, stream);
300 genericInstantiations.Add(typeof(T));
308 public class BlittableArraySerializer<T> : ArraySerializer<T>
310 private int elementSize;
315 elementSize = Marshal.SizeOf(typeof(T));
321 int size = obj.Length * elementSize;
322 var objPinned = Interop.Fixed(obj);
325 stream.NativeStream.Read((IntPtr)objPinned, size);
329 stream.NativeStream.Write((IntPtr)objPinned, size);
339 [DataSerializerGlobal(typeof(KeyValuePairSerializer<,>), typeof(KeyValuePair<,>),
DataSerializerGenericMode.GenericArguments)]
358 TKey key =
default(TKey);
359 TValue value =
default(TValue);
360 keySerializer.Serialize(ref key, mode, stream);
361 valueSerializer.Serialize(ref value, mode, stream);
362 obj =
new KeyValuePair<TKey, TValue>(key, value);
366 keySerializer.Serialize(obj.Key, stream);
367 valueSerializer.Serialize(obj.Value, stream);
373 genericInstantiations.Add(typeof(TKey));
374 genericInstantiations.Add(typeof(TValue));
403 obj =
new Dictionary<TKey, TValue>();
415 int count = stream.ReadInt32();
416 for (
int i = 0; i <
count; ++i)
418 TKey key =
default(TKey);
419 TValue value =
default(TValue);
420 keySerializer.Serialize(ref key, mode, stream);
421 valueSerializer.Serialize(ref value, mode, stream);
427 stream.Write(obj.Count);
428 foreach (var item
in obj)
430 keySerializer.Serialize(item.Key, stream);
431 valueSerializer.Serialize(item.Value, stream);
438 genericInstantiations.Add(typeof(TKey));
439 genericInstantiations.Add(typeof(TValue));
445 private bool isInterface = typeof(TDictionary).GetTypeInfo().IsInterface;
463 obj = isInterface ? (TDictionary)(
object)
new Dictionary<TKey, TValue>() : Activator.CreateInstance<TDictionary>();
475 int count = stream.ReadInt32();
476 for (
int i = 0; i <
count; ++i)
478 TKey key =
default(TKey);
479 TValue value =
default(TValue);
480 keySerializer.Serialize(ref key, mode, stream);
481 valueSerializer.Serialize(ref value, mode, stream);
487 stream.Write(obj.Count);
488 foreach (var item
in obj)
490 keySerializer.Serialize(item.Key, stream);
491 valueSerializer.Serialize(item.Value, stream);
498 genericInstantiations.Add(typeof(TKey));
499 genericInstantiations.Add(typeof(TValue));
528 obj =
new Dictionary<TKey, TValue>();
540 int count = stream.ReadInt32();
541 for (
int i = 0; i <
count; ++i)
543 TKey key =
default(TKey);
544 TValue value =
default(TValue);
545 keySerializer.Serialize(ref key, mode, stream);
546 valueSerializer.Serialize(ref value, mode, stream);
552 stream.Write(obj.Count);
553 foreach (var item
in obj)
555 keySerializer.Serialize(item.Key, stream);
556 valueSerializer.Serialize(item.Value, stream);
563 genericInstantiations.Add(typeof(TKey));
564 genericInstantiations.Add(typeof(TValue));
567 genericInstantiations.Add(typeof(Dictionary<TKey, TValue>));
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
override void Serialize(ref Dictionary< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
virtual void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void PreSerialize(ref IList< T > obj, ArchiveMode mode, SerializationStream stream)
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
override void PreSerialize(ref SiliconStudio.Core.Collections.SortedList< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
DataSerializerGenericMode
Defines what generic parameters to pass to the serializer.
override void Serialize(ref T[] obj, ArchiveMode mode, SerializationStream stream)
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void Serialize(ref IDictionary< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void PreSerialize(ref TDictionary obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref TList obj, ArchiveMode mode, SerializationStream stream)
Base class for implementation of SerializationStream.
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
Adds initialization feature to a DataSerializer.
Helper for serializing members of a class.
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
override void Serialize(ref SiliconStudio.Core.Collections.SortedList< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
override void Serialize(ref List< T > obj, ArchiveMode mode, SerializationStream stream)
override void PreSerialize(ref IDictionary< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
Serializer context. It holds DataSerializer{T} objects and their factories.
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void Serialize(ref TDictionary obj, ArchiveMode mode, SerializationStream stream)
override void PreSerialize(ref TList obj, ArchiveMode mode, SerializationStream stream)
override void PreSerialize(ref List< T > obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref IList< T > obj, ArchiveMode mode, SerializationStream stream)
Describes how to serialize and deserialize an object without knowing its type. Used as a common base ...
ArchiveMode
Enumerates the different mode of serialization (either serialization or deserialization).
Allows enumeration of required data serializers.
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.
override void Serialize(ref KeyValuePair< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
Describes how to serialize and deserialize an object of a given type.
void EnumerateGenericInstantiations(SerializerSelector serializerSelector, IList< Type > genericInstantiations)
Enumerates required DataSerializer required by this instance of DataSerializer. Null is authorized in...
override void PreSerialize(ref T[] obj, ArchiveMode mode, SerializationStream stream)
_In_ size_t _In_ size_t size
unsafe override void Serialize(ref T[] obj, ArchiveMode mode, SerializationStream stream)
override void PreSerialize(ref Dictionary< TKey, TValue > obj, ArchiveMode mode, SerializationStream stream)
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer. The serializer.