private static Dictionary <string, int> WriteCompressedHeader(DataNode mainNode, BinaryWriter writer) { int totalCount = mainNode.TotalCount; Dictionary <string, int> dictionary = new Dictionary <string, int>(totalCount); List <string> list = new List <string>(totalCount); DataNodeBinary.m_HeaderIndex = 1; DataNodeBinary.AddToHeader(dictionary, list, mainNode); writer.Write(dictionary.Count); foreach (string current in list) { writer.Write(current); } writer.Write((byte)4); return(dictionary); }
private static void AddToHeader(Dictionary <string, int> header, List <string> keys, DataNode node) { if (!string.IsNullOrEmpty(node.Name) && !header.ContainsKey(node.Name)) { header.Add(node.Name, DataNodeBinary.m_HeaderIndex); keys.Add(node.Name); DataNodeBinary.m_HeaderIndex++; } if (!string.IsNullOrEmpty(node.Content) && !header.ContainsKey(node.Content)) { header.Add(node.Content, DataNodeBinary.m_HeaderIndex); keys.Add(node.Content); DataNodeBinary.m_HeaderIndex++; } foreach (DataNode current in node.Nodes) { DataNodeBinary.AddToHeader(header, keys, current); } }