Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
BinarySerializationWriter.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System;
4 using System.IO;
5 using SiliconStudio.Core.IO;
6 
7 namespace SiliconStudio.Core.Serialization
8 {
9  /// <summary>
10  /// Implements <see cref="SerializationStream"/> as a binary writer.
11  /// </summary>
13  {
14  /// <summary>
15  /// Initializes a new instance of the <see cref="BinarySerializationWriter"/> class.
16  /// </summary>
17  /// <param name="outputStream">The output stream.</param>
18  /// <param name="streamTags">The stream streamTags.</param>
19  public BinarySerializationWriter(Stream outputStream)
20  {
21  Writer = new BinaryWriter(outputStream);
22  NativeStream = outputStream.ToNativeStream();
23  }
24 
25  private BinaryWriter Writer { get; set; }
26 
27  /// <inheritdoc />
28  public override void Serialize(ref bool value)
29  {
30  NativeStream.WriteByte(value ? (byte)1 : (byte)0);
31  }
32 
33  /// <inheritdoc />
34  public unsafe override void Serialize(ref float value)
35  {
36  fixed (float* valuePtr = &value)
37  NativeStream.Write(*(uint*)valuePtr);
38  }
39 
40  /// <inheritdoc />
41  public unsafe override void Serialize(ref double value)
42  {
43  fixed (double* valuePtr = &value)
44  NativeStream.Write(*(ulong*)valuePtr);
45  }
46 
47  /// <inheritdoc />
48  public override void Serialize(ref short value)
49  {
50  NativeStream.Write((ushort)value);
51  }
52 
53  /// <inheritdoc />
54  public override void Serialize(ref int value)
55  {
56  NativeStream.Write((uint)value);
57  }
58 
59  /// <inheritdoc />
60  public override void Serialize(ref long value)
61  {
62  NativeStream.Write((ulong)value);
63  }
64 
65  /// <inheritdoc />
66  public override void Serialize(ref ushort value)
67  {
68  NativeStream.Write(value);
69  }
70 
71  /// <inheritdoc />
72  public override void Serialize(ref uint value)
73  {
74  NativeStream.Write(value);
75  }
76 
77  /// <inheritdoc />
78  public override void Serialize(ref ulong value)
79  {
80  NativeStream.Write(value);
81  }
82 
83  /// <inheritdoc />
84  public override void Serialize(ref string value)
85  {
86  Writer.Write(value);
87  }
88 
89  /// <inheritdoc />
90  public override void Serialize(ref char value)
91  {
92  Writer.Write(value);
93  }
94 
95  /// <inheritdoc />
96  public override void Serialize(ref byte value)
97  {
98  NativeStream.WriteByte(value);
99  }
100 
101  /// <inheritdoc />
102  public override void Serialize(ref sbyte value)
103  {
104  NativeStream.WriteByte((byte)value);
105  }
106 
107  /// <inheritdoc />
108  public override void Serialize(byte[] values, int offset, int count)
109  {
110  NativeStream.Write(values, offset, count);
111  }
112 
113  /// <inheritdoc/>
114  public override void Serialize(IntPtr memory, int count)
115  {
116  NativeStream.Write(memory, count);
117  }
118 
119  /// <inheritdoc />
120  public override void Flush()
121  {
122  NativeStream.Flush();
123  }
124  }
125 }
override void Serialize(IntPtr memory, int count)
Serializes the specified memory area. The memory area to serialize.The size, in bytes, to serialize.
override void Serialize(ref string value)
Serializes the specified string value. The value to serialize
override void Serialize(ref short value)
Serializes the specified short value. The value to serialize
override void Serialize(ref bool value)
Serializes the specified boolean value. The value to serialize
Implements SerializationStream as a binary writer.
override void Serialize(ref int value)
Serializes the specified integer value. The value to serialize
_In_ size_t count
Definition: DirectXTexP.h:174
override void Serialize(byte[] values, int offset, int count)
Serializes the specified byte array. The buffer to serialize.The starting offset in the buffer to beg...
override void Serialize(ref long value)
Serializes the specified long value. The value to serialize
Base class for implementation of SerializationStream.
override void Serialize(ref ulong value)
Serializes the specified unsigned long value. The value to serialize
unsafe override void Serialize(ref double value)
Serializes the specified double value. The value to serialize
override void Serialize(ref sbyte value)
Serializes the specified signed byte value. The value to serialize
override void Serialize(ref byte value)
Serializes the specified byte value. The value to serialize
override void Flush()
Flushes all recent writes (for better batching). Please note that if only Serialize has been used (no...
A Stream with additional methods for native read and write operations using IntPtr.
Definition: NativeStream.cs:11
BinarySerializationWriter(Stream outputStream)
Initializes a new instance of the BinarySerializationWriter class.
override void Serialize(ref uint value)
Serializes the specified unsigned integer value. The value to serialize
override void Serialize(ref ushort value)
Serializes the specified ushort value. The value to serialize
override void Serialize(ref char value)
Serializes the specified char value. The value to serialize
unsafe override void Serialize(ref float value)
Serializes the specified float value. The value to serialize