Konstantin Koch cb01231e7d implemented Intermediate.Serializer namespace in Content Pipeline.
removed the old .tfignore file.
2015-03-29 18:16:03 +02:00

255 lines
6.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace ANX.Framework.Content.Pipeline.Serialization.Intermediate
{
public class IntermediateXmlWriter : XmlWriter
{
XmlWriter internalWriter;
bool firstPart = true;
public IntermediateXmlWriter(XmlWriter internalWriter)
{
if (internalWriter == null)
throw new ArgumentNullException("internalWriter");
this.internalWriter = internalWriter;
}
public override void Close()
{
this.internalWriter.Close();
}
public override void Flush()
{
this.internalWriter.Flush();
}
public override string LookupPrefix(string ns)
{
return this.internalWriter.LookupPrefix(ns);
}
public override void WriteBase64(byte[] buffer, int index, int count)
{
this.internalWriter.WriteBase64(buffer, index, count);
StopPartWriting();
}
public override void WriteCData(string text)
{
this.internalWriter.WriteCData(text);
StopPartWriting();
}
public override void WriteCharEntity(char ch)
{
this.internalWriter.WriteCharEntity(ch);
}
public override void WriteChars(char[] buffer, int index, int count)
{
this.internalWriter.WriteChars(buffer, index, count);
}
public override void WriteComment(string text)
{
this.internalWriter.WriteComment(text);
StopPartWriting();
}
public override void WriteDocType(string name, string pubid, string sysid, string subset)
{
internalWriter.WriteDocType(name, pubid, sysid, subset);
StopPartWriting();
}
public override void WriteEndAttribute()
{
internalWriter.WriteEndAttribute();
StopPartWriting();
}
public override void WriteEndDocument()
{
internalWriter.WriteEndDocument();
StopPartWriting();
}
public override void WriteEndElement()
{
internalWriter.WriteEndElement();
StopPartWriting();
}
public override void WriteEntityRef(string name)
{
internalWriter.WriteEntityRef(name);
}
public override void WriteFullEndElement()
{
internalWriter.WriteFullEndElement();
StopPartWriting();
}
public override void WriteProcessingInstruction(string name, string text)
{
internalWriter.WriteProcessingInstruction(name, text);
}
public override void WriteRaw(string data)
{
internalWriter.WriteRaw(data);
StopPartWriting();
}
public override void WriteRaw(char[] buffer, int index, int count)
{
internalWriter.WriteRaw(buffer, index, count);
StopPartWriting();
}
public override void WriteStartAttribute(string prefix, string localName, string ns)
{
internalWriter.WriteStartAttribute(prefix, localName, ns);
}
public override void WriteStartDocument(bool standalone)
{
internalWriter.WriteStartDocument(standalone);
StopPartWriting();
}
public override void WriteStartDocument()
{
internalWriter.WriteStartDocument();
StopPartWriting();
}
public override void WriteStartElement(string prefix, string localName, string ns)
{
internalWriter.WriteStartElement(prefix, localName, ns);
StopPartWriting();
}
public override WriteState WriteState
{
get { return internalWriter.WriteState; }
}
public override void WriteString(string text)
{
internalWriter.WriteString(text);
}
public override void WriteSurrogateCharEntity(char lowChar, char highChar)
{
this.internalWriter.WriteSurrogateCharEntity(lowChar, highChar);
}
public override void WriteWhitespace(string ws)
{
this.internalWriter.WriteWhitespace(ws);
}
private void StopPartWriting()
{
firstPart = true;
}
public void WriteStringPart(string text)
{
foreach (var c in IntermediateXmlReader.listSeparators)
{
if (text.Contains(c))
throw new ArgumentException("text must not contain a whitespace or linebreak.");
}
if (firstPart)
firstPart = false;
else
this.internalWriter.WriteWhitespace(" ");
this.internalWriter.WriteString(text);
}
public void WritePart(int value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(uint value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(float value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(bool value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(byte value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(sbyte value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(double value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(char value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(short value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(ushort value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(long value)
{
WriteStringPart(XmlConvert.ToString(value));
}
public void WritePart(ulong value)
{
WriteStringPart(XmlConvert.ToString(value));
}
}
}