blob: 72ab1a79f8fce0b2eb88101f8ade1c7794b5b700 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package types
import (
"github.com/pektezol/bitreader"
)
type SvcCreateStringTable struct {
Name string
MaxEntries uint16
NumEntries uint8
UserDataFixedSize bool
UserDataSize uint16
UserDataSizeBits uint8
Flags uint8
StringData []byte
}
func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable {
svccreatestringtable := SvcCreateStringTable{
Name: reader.TryReadString(),
MaxEntries: reader.TryReadInt16(),
}
svccreatestringtable.NumEntries = uint8(reader.TryReadBits(HighestBitIndex(uint(svccreatestringtable.MaxEntries)) + 1))
length := reader.TryReadBits(20)
svccreatestringtable.UserDataFixedSize = reader.TryReadBool()
if svccreatestringtable.UserDataFixedSize {
svccreatestringtable.UserDataSize = uint16(reader.TryReadBits(12))
svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4))
}
svccreatestringtable.Flags = uint8(reader.TryReadBits(2))
svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length))
return svccreatestringtable
}
|