public PssgNode(PssgNode nodeToCopy)
{
this.file = nodeToCopy.file;
ParentNode = nodeToCopy.ParentNode;
id = nodeToCopy.id;
size = nodeToCopy.size;
attributeSize = nodeToCopy.attributeSize;
attributes = new Dictionary<string, PssgAttribute>();
PssgAttribute attr;
foreach (KeyValuePair<string, PssgAttribute> attrToCopy in nodeToCopy.attributes)
{
attr = new PssgAttribute(attrToCopy.Value);
attributes.Add(attr.Name, attr);
}
isDataNode = nodeToCopy.isDataNode;
if (isDataNode)
{
data = nodeToCopy.data;
}
else
{
// Each node at least 12 bytes (id + size + arg size)
subNodes = new PssgNode[nodeToCopy.subNodes.Length];
int nodeCount = 0;
foreach (PssgNode subNodeToCopy in nodeToCopy.subNodes)
{
subNodes[nodeCount] = new PssgNode(subNodeToCopy);
nodeCount++;
}
Array.Resize(ref subNodes, nodeCount);
}
}