Files
NetDataContractSerializer/Compat.Private.Serialization/Compat/Runtime/Serialization/ElementData.cs
2019-08-29 23:24:07 +03:00

54 lines
1.5 KiB
C#

using System;
namespace Compat.Runtime.Serialization
{
internal class AttributeData
{
public string prefix;
public string ns;
public string localName;
public string value;
}
internal class ElementData
{
public string localName;
public string ns;
public string prefix;
public int attributeCount;
public AttributeData[] attributes;
public IDataNode dataNode;
public int childElementIndex;
public void AddAttribute(string prefix, string ns, string name, string value)
{
GrowAttributesIfNeeded();
AttributeData attribute = attributes[attributeCount];
if (attribute == null)
{
attributes[attributeCount] = attribute = new AttributeData();
}
attribute.prefix = prefix;
attribute.ns = ns;
attribute.localName = name;
attribute.value = value;
attributeCount++;
}
private void GrowAttributesIfNeeded()
{
if (attributes == null)
{
attributes = new AttributeData[4];
}
else if (attributes.Length == attributeCount)
{
AttributeData[] newAttributes = new AttributeData[attributes.Length * 2];
Array.Copy(attributes, 0, newAttributes, 0, attributes.Length);
attributes = newAttributes;
}
}
}
}