Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
ParadoxXmlObjectSerializer.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 System.Runtime.Serialization;
6 using System.Xml;
7 using SiliconStudio.Core.Serialization;
8 
9 namespace SiliconStudio.BuildEngine
10 {
12  {
13  public override void WriteObject(XmlDictionaryWriter writer, object graph)
14  {
15  var data = EncodeObject(graph);
16  writer.WriteStartElement("Data");
17  writer.WriteBase64(data, 0, data.Length);
18  writer.WriteEndElement();
19  }
20 
21  public override void WriteStartObject(XmlDictionaryWriter writer, object graph)
22  {
23  throw new NotImplementedException();
24  }
25 
26  public override void WriteObjectContent(XmlDictionaryWriter writer, object graph)
27  {
28  throw new NotImplementedException();
29  }
30 
31  public override void WriteEndObject(XmlDictionaryWriter writer)
32  {
33  throw new NotImplementedException();
34  }
35 
36  public override object ReadObject(XmlDictionaryReader reader, bool verifyObjectName)
37  {
38  reader.ReadStartElement("Data");
39  var data = reader.ReadContentAsBase64();
40  reader.ReadEndElement();
41  return DecodeObject(data);
42  }
43 
44  public override bool IsStartObject(XmlDictionaryReader reader)
45  {
46  return reader.IsStartElement("Data");
47  }
48 
49  private static byte[] EncodeObject(object obj)
50  {
51  var memoryStream = new MemoryStream();
52  var writer = new BinarySerializationWriter(memoryStream);
53  writer.SerializeExtended(ref obj, ArchiveMode.Serialize);
54 
55  return memoryStream.ToArray();
56  }
57 
58  private static object DecodeObject(byte[] serializedObject)
59  {
60  var reader = new BinarySerializationReader(new MemoryStream(serializedObject));
61  object command = null;
62  reader.SerializeExtended(ref command, ArchiveMode.Deserialize, null);
63  return command;
64  }
65  }
66 }
Implements SerializationStream as a binary writer.
override void WriteStartObject(XmlDictionaryWriter writer, object graph)
override object ReadObject(XmlDictionaryReader reader, bool verifyObjectName)
override void WriteObjectContent(XmlDictionaryWriter writer, object graph)
Implements SerializationStream as a binary reader.
override void WriteEndObject(XmlDictionaryWriter writer)
override void WriteObject(XmlDictionaryWriter writer, object graph)
override bool IsStartObject(XmlDictionaryReader reader)