public static bool TestKeyNamesGeneration(TextWriter writer, PsbReader reader) { KeyNamesGenerator generator = new KeyNamesGenerator( new StandardKeyNamesEncoder() { OutputDebug = false }, false); var keyNames = reader.KeyNames; for (uint i = 0; i < keyNames.Count; ++i) { writer.WriteLine(keyNames[i]); generator.AddString(keyNames[i]); } generator.Generate(); writer.WriteLine("--------"); var keyNamesNew = new PsbReader.KeyNamesReader(generator.ValueOffsets, generator.Tree, generator.Tails); for (uint i = 0; i < keyNamesNew.Count; ++i) { writer.WriteLine(keyNamesNew[i]); } for (uint i = 0; i < keyNames.Count; ++i) { if (keyNamesNew[i] != keyNames[i]) { return(false); } } return(true); }
void Prepare() { // Reset build objects keyNamesGen = new KeyNamesGenerator(new StandardKeyNamesEncoder(), Version == 1); stringsCache.Clear(); streamsCache.Clear(); bStreamsCache.Clear(); PrepareNode(root); keyNamesGen.Generate(); // Sort strings stringsCache.Sort((x, y) => string.CompareOrdinal(x, y)); SortStreamNodes(false); if (Version >= 4) { SortStreamNodes(true); } }