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