4 using System.Runtime.InteropServices;
6 namespace SiliconStudio.Core.Serialization.Serializers
11 [DataSerializerGlobal(typeof(UriSerializer))]
19 var text = obj.ToString();
20 stream.Serialize(ref text);
25 stream.Serialize(ref text);
34 [DataSerializerGlobal(typeof(StringSerializer))]
40 stream.Serialize(ref obj);
47 [DataSerializerGlobal(typeof(BoolSerializer))]
53 stream.Serialize(ref obj);
60 [DataSerializerGlobal(typeof(SingleSerializer))]
64 public override bool IsBlittable {
get {
return true; } }
69 stream.Serialize(ref obj);
76 [DataSerializerGlobal(typeof(DoubleSerializer))]
80 public override bool IsBlittable {
get {
return true; } }
85 stream.Serialize(ref obj);
92 [DataSerializerGlobal(typeof(CharSerializer))]
98 stream.Serialize(ref obj);
105 [DataSerializerGlobal(typeof(ByteSerializer))]
109 public override bool IsBlittable {
get {
return true; } }
114 stream.Serialize(ref obj);
121 [DataSerializerGlobal(typeof(SByteSerializer))]
125 public override bool IsBlittable {
get {
return true; } }
130 stream.Serialize(ref obj);
137 [DataSerializerGlobal(typeof(Int16Serializer))]
141 public override bool IsBlittable {
get {
return true; } }
146 stream.Serialize(ref obj);
153 [DataSerializerGlobal(typeof(UInt16Serializer))]
157 public override bool IsBlittable {
get {
return true; } }
162 stream.Serialize(ref obj);
169 [DataSerializerGlobal(typeof(Int32Serializer))]
173 public override bool IsBlittable {
get {
return true; } }
178 stream.Serialize(ref obj);
185 [DataSerializerGlobal(typeof(UInt32Serializer))]
189 public override bool IsBlittable {
get {
return true; } }
194 stream.Serialize(ref obj);
201 [DataSerializerGlobal(typeof(Int64Serializer))]
205 public override bool IsBlittable {
get {
return true; } }
210 stream.Serialize(ref obj);
217 [DataSerializerGlobal(typeof(UInt64Serializer))]
221 public override bool IsBlittable {
get {
return true; } }
226 stream.Serialize(ref obj);
240 stream.Write(obj != null ? obj.GetType().AssemblyQualifiedName :
string.Empty);
241 stream.Write(Convert.ToInt32(obj));
245 var type = Type.GetType(stream.ReadString());
246 var value = stream.ReadInt32();
248 obj = (Enum)Enum.ToObject(type, value);
258 private int EnumSize;
263 EnumSize = Marshal.SizeOf(Enum.GetUnderlyingType(typeof(T)));
277 var objPtr = (byte*)Interop.Cast(ref obj);
278 uint value = *objPtr;
279 stream.Serialize(ref value);
280 *objPtr = (byte)value;
285 var objPtr = (ushort*)Interop.Cast(ref obj);
286 uint value = *objPtr;
287 stream.Serialize(ref value);
288 *objPtr = (ushort)value;
293 var objPtr = (uint*)Interop.Cast(ref obj);
294 stream.Serialize(ref *objPtr);
299 var objPtr = (ulong*)Interop.Cast(ref obj);
300 stream.Serialize(ref *objPtr);
304 throw new InvalidOperationException();
312 [DataSerializerGlobal(typeof(GuidSerializer))]
316 public override bool IsBlittable {
get {
return true; } }
323 var guidData = obj.ToByteArray();
324 stream.Serialize(guidData, 0, guidData.Length);
328 var guidData =
new byte[16];
329 stream.Serialize(guidData, 0, guidData.Length);
330 obj =
new Guid(guidData);
338 [DataSerializerGlobal(typeof(TimeSpanSerializer))]
345 stream.Write(timeSpan.Ticks);
349 timeSpan =
new TimeSpan(stream.ReadInt64());
354 [DataSerializerGlobal(typeof(DateTimeSerializer))]
361 stream.Write(dateTime.Ticks);
365 dateTime =
new DateTime(stream.ReadInt64());
Data serializer for float.
override void Serialize(ref ushort obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref float obj, ArchiveMode mode, SerializationStream stream)
void Initialize(SerializerSelector serializerSelector)
Initializes the specified serializer.
Data serializer for string.
Data serializer for string.
override void Serialize(ref byte obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref uint obj, ArchiveMode mode, SerializationStream stream)
Data serializer for double.
override void Serialize(ref long obj, ArchiveMode mode, SerializationStream stream)
Data serializer for byte.
override void Serialize(ref double obj, ArchiveMode mode, SerializationStream stream)
Data serializer for short.
override void Serialize(ref ulong obj, ArchiveMode mode, SerializationStream stream)
Base class for implementation of SerializationStream.
override void Serialize(ref bool obj, ArchiveMode mode, SerializationStream stream)
Data serializer for Guid.
override void Serialize(ref T obj, ArchiveMode mode, SerializationStream stream)
Data serializer for Enum.
Adds initialization feature to a DataSerializer.
override void Serialize(ref System.Uri obj, ArchiveMode mode, SerializationStream stream)
Data serializer for ushort.
Data serializer for long.
override void Serialize(ref sbyte obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref short obj, ArchiveMode mode, SerializationStream stream)
Serializer context. It holds DataSerializer{T} objects and their factories.
override void Serialize(ref string obj, ArchiveMode mode, SerializationStream stream)
Data serializer for TimeSpan.
Data serializer for uint.
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).
Data serializer for ulong.
override void Serialize(ref char obj, ArchiveMode mode, SerializationStream stream)
Data serializer for sbyte.
Data serializer for char.
override void Serialize(ref int obj, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref Enum obj, ArchiveMode mode, SerializationStream stream)
Data serializer for bool.
override void Serialize(ref DateTime dateTime, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref TimeSpan timeSpan, ArchiveMode mode, SerializationStream stream)
override void Serialize(ref Guid obj, ArchiveMode mode, SerializationStream stream)