コード例 #1
0
        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);
        }
コード例 #2
0
 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);
     }
 }