aboutsummaryrefslogtreecommitdiff
path: root/pkg/classes/stringTables.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
commit9991801e4037d8dc530876584f21c1674c9e3bba (patch)
treeefa20cd6aa6556cfdea81f4c99251e0688847ca6 /pkg/classes/stringTables.go
parentorganize packets and classes (#9) (diff)
downloadsdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.gz
sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.bz2
sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.zip
init: will look at this laterverification
Diffstat (limited to 'pkg/classes/stringTables.go')
-rw-r--r--pkg/classes/stringTables.go100
1 files changed, 0 insertions, 100 deletions
diff --git a/pkg/classes/stringTables.go b/pkg/classes/stringTables.go
deleted file mode 100644
index 01939b2..0000000
--- a/pkg/classes/stringTables.go
+++ /dev/null
@@ -1,100 +0,0 @@
1package classes
2
3import (
4 "github.com/pektezol/bitreader"
5 "github.com/pektezol/demoparser/pkg/writer"
6)
7
8type StringTables struct {
9 Size int32
10 Data []StringTable
11}
12
13type StringTable struct {
14 Name string
15 TableEntries []StringTableEntry
16 Classes []StringTableClass
17}
18
19type StringTableEntry struct {
20 Name string
21 EntryData StringTableEntryData
22}
23
24type StringTableEntryData struct {
25 // TODO: Parse StringTableEntry
26}
27
28type StringTableClass struct {
29 Name string
30 Data string
31}
32
33func (stringTables *StringTables) ParseStringTables(reader *bitreader.Reader) {
34 stringTables.Size = reader.TryReadSInt32()
35 stringTableReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(stringTables.Size)), true)
36 tableCount := stringTableReader.TryReadBits(8)
37 tables := make([]StringTable, tableCount)
38 for i := 0; i < int(tableCount); i++ {
39 var table StringTable
40 table.ParseStream(stringTableReader)
41 tables[i] = table
42 }
43 stringTables.Data = tables
44}
45
46func (stringTable *StringTable) ParseStream(reader *bitreader.Reader) {
47 stringTable.Name = reader.TryReadString()
48 entryCount := reader.TryReadBits(16)
49 writer.AppendLine("\tTable Name: %s", stringTable.Name)
50 stringTable.TableEntries = make([]StringTableEntry, entryCount)
51
52 for i := 0; i < int(entryCount); i++ {
53 var entry StringTableEntry
54 entry.Parse(reader)
55 stringTable.TableEntries[i] = entry
56 }
57 if entryCount != 0 {
58 writer.AppendLine("\t\t%d Table Entries:", entryCount)
59 writer.AppendOutputFromTemp()
60 } else {
61 writer.AppendLine("\t\tNo Table Entries")
62 }
63 if reader.TryReadBool() {
64 classCount := reader.TryReadBits(16)
65 stringTable.Classes = make([]StringTableClass, classCount)
66
67 for i := 0; i < int(classCount); i++ {
68 var class StringTableClass
69 class.Parse(reader)
70 stringTable.Classes[i] = class
71 }
72 writer.AppendLine("\t\t%d Classes:", classCount)
73 writer.AppendOutputFromTemp()
74 } else {
75 writer.AppendLine("\t\tNo Class Entries")
76 }
77}
78
79func (stringTableEntry *StringTableEntry) Parse(reader *bitreader.Reader) {
80 stringTableEntry.Name = reader.TryReadString()
81 if reader.TryReadBool() {
82 byteLen, err := reader.ReadBits(16)
83 if err != nil {
84 return
85 }
86 dataBsr := reader.TryReadBytesToSlice(byteLen)
87 _ = bitreader.NewReaderFromBytes(dataBsr, true) // TODO: Parse StringTableEntry
88 // stringTableEntry.EntryData.ParseStream(entryReader)
89 }
90}
91
92func (stringTableClass *StringTableClass) Parse(reader *bitreader.Reader) {
93 stringTableClass.Name = reader.TryReadString()
94 writer.TempAppendLine("\t\t\tName: %s", stringTableClass.Name)
95 if reader.TryReadBool() {
96 dataLen := reader.TryReadBits(16)
97 stringTableClass.Data = reader.TryReadStringLength(dataLen)
98 writer.TempAppendLine("\t\t\tData: %s", stringTableClass.Data)
99 }
100}