OpenBarnyard
 
Loading...
Searching...
No Matches
BTECCompressor.h
Go to the documentation of this file.
1#pragma once
2
4
6{
7public:
8 class Node
9 {
10 public:
12
13 public:
14 Node() = default;
15 /*{
16 m_Ptr1 = this;
17 m_Ptr2 = this;
18 }*/
19
20 void Reset()
21 {
22 m_Ptr1 = this;
23 m_Ptr2 = this;
24 }
25
26 private:
27 Node* m_Ptr1;
28 Node* m_Ptr2;
29 Node* m_Unk1;
30 Node* m_Unk2;
31 TBYTE* m_Unk3;
32 void* m_Unk4;
33 };
34
35 using Bucket = Node**;
36
37public:
40
41 void Initialize( TBYTE* buffer, size_t bufferSize, TINT maxoffset, TINT unk );
42 void FUN_0068ae40( size_t dataSize );
43 TBOOL FUN_0068af10( TBYTE* buffer, size_t bufferSize, TBYTE*& offset, size_t& dataSize );
44 void AllocSubstring( TBYTE* buffer );
45
46 static TBOOL FUN_0068b300( TBYTE* buffer, Bucket nodeBucket, size_t bufferSize, Node*& out1, Node*& out2 );
47
48 static TUINT32 HashData( TBYTE* data, size_t size )
49 {
50 TUINT32 hash = 0;
51 while ( size != 0 )
52 {
53 hash = (TUINT32)*data ^ hash >> 0x1B ^ hash << 5;
54 size -= 1;
55 data += 1;
56 }
57
58 return hash;
59 }
60
61private:
62 TBYTE* m_Buffer1;
63 TUINT32 m_MaxOffset;
64 TBYTE* m_DataEnd;
65 TBYTE* m_Buffer2;
66 TBYTE* m_Buffer3;
67 Node* m_SomeArray1;
68 Node m_Root1;
69 Node m_Root2;
70 TBYTE* m_Offsets[ 256 ];
71 Bucket* m_Buckets;
72 TUINT32 m_BucketCount;
73};
74
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
uint8_t TBYTE
Definition Typedefs.h:19
void AllocSubstring(TBYTE *buffer)
static TBOOL FUN_0068b300(TBYTE *buffer, Bucket nodeBucket, size_t bufferSize, Node *&out1, Node *&out2)
void FUN_0068ae40(size_t dataSize)
TBOOL FUN_0068af10(TBYTE *buffer, size_t bufferSize, TBYTE *&offset, size_t &dataSize)
static TUINT32 HashData(TBYTE *data, size_t size)
void Initialize(TBYTE *buffer, size_t bufferSize, TINT maxoffset, TINT unk)