Add TXLIST reader
This commit is contained in:
parent
fe5d2fb12f
commit
d405a9b5db
|
@ -0,0 +1,54 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace KeepersCompound.LGS.Database.Chunks;
|
||||||
|
|
||||||
|
public class TxList : IChunk
|
||||||
|
{
|
||||||
|
public struct Item
|
||||||
|
{
|
||||||
|
public byte[] Tokens { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public Item(BinaryReader reader)
|
||||||
|
{
|
||||||
|
Tokens = reader.ReadBytes(4);
|
||||||
|
var tmpName = Encoding.UTF8.GetString(reader.ReadBytes(16)).Replace("\0", string.Empty);
|
||||||
|
Name = tmpName[..Math.Min(15, tmpName.Length)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ChunkHeader Header { get; set; }
|
||||||
|
|
||||||
|
public int BlockSize { get; set; }
|
||||||
|
public int ItemCount { get; set; }
|
||||||
|
public int TokenCount { get; set; }
|
||||||
|
public string[] Tokens { get; set; }
|
||||||
|
public Item[] Items { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void ReadData(BinaryReader reader, DbFile.TableOfContents.Entry entry)
|
||||||
|
{
|
||||||
|
BlockSize = reader.ReadInt32();
|
||||||
|
ItemCount = reader.ReadInt32();
|
||||||
|
TokenCount = reader.ReadInt32();
|
||||||
|
Tokens = new string[TokenCount];
|
||||||
|
for (var i = 0; i < TokenCount; i++)
|
||||||
|
{
|
||||||
|
var tmpToken = Encoding.UTF8.GetString(reader.ReadBytes(16)).Replace("\0", string.Empty);
|
||||||
|
Tokens[i] = tmpToken[..Math.Min(16, tmpToken.Length)];
|
||||||
|
}
|
||||||
|
Items = new Item[ItemCount];
|
||||||
|
for (var i = 0; i < ItemCount; i++)
|
||||||
|
{
|
||||||
|
Items[i] = new Item(reader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteData(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue