OpenBarnyard
 
Loading...
Searching...
No Matches
THashTable.h
Go to the documentation of this file.
1#pragma once
2
4
6{
7public:
13
14 inline static constexpr TINT INVALID_BUCKET_ID = -1;
15
16 using t_ItemCompareFunc = TBOOL ( * )( const void* a_pMem1, const void* a_pMem2, TSIZE a_iSize );
17 using t_ItemHashFunc = TUINT32 ( * )( const void* a_pMem, TSIZE a_iSize, TUINT32 a_uiMaxValue );
18
19public:
20 THashTable();
22
23 TINT* GetHashToBucketIds() const { return m_pHashToBucketId; }
24 TINT GetItemCount() const { return m_iItemCount; }
25 void* GetItemArray() const { return m_pItems; }
26
27 void DeleteBucketMemory();
28 void Destroy();
29
30 Bucket* Find( void* a_pData );
31 Bucket* Insert( void* a_pData );
32 Bucket* Append( void* a_pData );
33
34 TBOOL Create( TINT a_iItemCountTotal, TINT a_iItemSize, TINT a_iBucketSize, TINT a_iHashNodeCount );
35 void SetItemCompareFunction( t_ItemCompareFunc a_HashCompareFunc ) { m_ItemCompareFunc = a_HashCompareFunc; }
36 void SetItemHashFunction( t_ItemHashFunc a_HashCompareFunc ) { m_ItemHashFunc = a_HashCompareFunc; }
37
38private:
39 static t_ItemCompareFunc DefaultItemCompareFunc;
40 static t_ItemHashFunc DefaultItemHashFunc;
41
42private:
43 TINT m_iBucketSize; // 0x0
44 TINT m_iItemSize; // 0x4
45 TINT m_iItemCount; // 0x8
46 TINT m_iItemCountTotal; // 0xC
47 TINT m_iHashNodeCount; // 0x10
48 TINT m_iHashNodeCountTotal; // 0x14
49 TINT* m_pHashToBucketId; // 0x18
50 Bucket* m_pBuckets; // 0x1C
51 TBYTE* m_pItems; // 0x20
52 t_ItemHashFunc m_ItemHashFunc; // 0x24
53 t_ItemCompareFunc m_ItemCompareFunc; // 0x28
54};
55
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
unsigned int TUINT
Definition Typedefs.h:8
size_t TSIZE
Definition Typedefs.h:9
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 SetItemHashFunction(t_ItemHashFunc a_HashCompareFunc)
Definition THashTable.h:36
void Destroy()
void * GetItemArray() const
Definition THashTable.h:25
Bucket * Find(void *a_pData)
TUINT32(*)(const void *a_pMem, TSIZE a_iSize, TUINT32 a_uiMaxValue) t_ItemHashFunc
Definition THashTable.h:17
void DeleteBucketMemory()
Bucket * Insert(void *a_pData)
TBOOL(*)(const void *a_pMem1, const void *a_pMem2, TSIZE a_iSize) t_ItemCompareFunc
Definition THashTable.h:16
Bucket * Append(void *a_pData)
void SetItemCompareFunction(t_ItemCompareFunc a_HashCompareFunc)
Definition THashTable.h:35
TINT * GetHashToBucketIds() const
Definition THashTable.h:23
static constexpr TINT INVALID_BUCKET_ID
Definition THashTable.h:14
TBOOL Create(TINT a_iItemCountTotal, TINT a_iItemSize, TINT a_iBucketSize, TINT a_iHashNodeCount)
TINT GetItemCount() const
Definition THashTable.h:24