mirror of
https://github.com/thunderbrewhq/binana.git
synced 2025-12-12 09:52:28 +00:00
48 lines
No EOL
930 B
C
48 lines
No EOL
930 B
C
#ifndef STORM_HASH_H
|
|
#define STORM_HASH_H
|
|
|
|
#include "system/types.h"
|
|
|
|
#include "storm/array.h"
|
|
#include "storm/list.h"
|
|
|
|
#define STORM_TS_HASH(T, K) \
|
|
STORM_TS_LIST(T) \
|
|
STORM_TS_GROWABLE_ARRAY(TSList_##T) \
|
|
typedef struct TSHashTable_##T##_##K TSHashTable_##T##_##K; \
|
|
typedef struct TSHashObject_##T##_##K TSHashObject_##T##_##K; \
|
|
struct TSHashTable_##T##_##K { \
|
|
TSList_##T m_fulllist; \
|
|
uint32_t m_fullnessIndicator; \
|
|
TSGrowableArray_TSList_##T m_slotlistarray; \
|
|
uint32_t m_slotmask; \
|
|
}; \
|
|
struct TSHashObject_##T##_##K { \
|
|
uint32_t m_hashval; \
|
|
TSLink_##T m_linktoslot; \
|
|
TSLink_##T m_linktofull; \
|
|
K m_key; \
|
|
};
|
|
|
|
DECLARE_STRUCT(HASHKEY_PTR);
|
|
DECLARE_STRUCT(HASHKEY_STR);
|
|
DECLARE_STRUCT(HASHKEY_STRI);
|
|
DECLARE_STRUCT(HASHKEY_NONE);
|
|
|
|
struct HASHKEY_PTR {
|
|
void* m_key;
|
|
};
|
|
|
|
struct HASHKEY_STR {
|
|
char* m_str;
|
|
};
|
|
|
|
struct HASHKEY_STRI {
|
|
char* m_str;
|
|
};
|
|
|
|
struct HASHKEY_NONE {
|
|
int32_t m_unused;
|
|
};
|
|
|
|
#endif |