private void ReadNodes(Stream s, bool longNodes)
{
#if DEBUG_LSF_SERIALIZATION
Console.WriteLine(" ----- DUMP OF NODE TABLE -----");
#endif
Nodes = new List<NodeInfo>();
using (var reader = new BinaryReader(s))
{
Int32 index = 0;
while (s.Position < s.Length)
{
var resolved = new NodeInfo();
if (longNodes)
{
var item = BinUtils.ReadStruct<NodeEntryV3>(reader);
resolved.ParentIndex = item.ParentIndex;
resolved.NameIndex = item.NameIndex;
resolved.NameOffset = item.NameOffset;
resolved.FirstAttributeIndex = item.FirstAttributeIndex;
}
else
{
var item = BinUtils.ReadStruct<NodeEntryV2>(reader);
resolved.ParentIndex = item.ParentIndex;
resolved.NameIndex = item.NameIndex;
resolved.NameOffset = item.NameOffset;
resolved.FirstAttributeIndex = item.FirstAttributeIndex;
}
#if DEBUG_LSF_SERIALIZATION
Console.WriteLine(String.Format(
"{0}: {1} (parent {2}, firstAttribute {3})",
Nodes.Count, Names[resolved.NameIndex][resolved.NameOffset], resolved.ParentIndex,
resolved.FirstAttributeIndex
));
#endif
Nodes.Add(resolved);
index++;
}
}
}