12GX_CORE_NAMESPACE_BEGIN()
29 static constexpr u32 DEFAULT_SPLIT_COUNT = 32;
31 static constexpr u32 BUFFER_SIZE =
GxMath::VALUE_2M;
53 GxPair(
void) : _key(nullptr), _pObject(nullptr) {}
62 constexpr void set(GX_CSTR key,
void* pObject) { _key = key; _pObject = pObject; }
64 constexpr GX_CSTR
getKey(
void)
const {
return _key; }
66 constexpr void*
getObject(
void)
const {
return _pObject; }
89 GxHashMap(u32 splitCount, u32 keySize = 0,
b32 useKeyBuffer =
true, u32 keyBufferSize = BUFFER_SIZE);
94 void initialize(
b32 useKeyBuffer =
true, u32 keyBufferSize = BUFFER_SIZE);
103 void* find(GX_CSTR key)
const;
105 void* findFromAddress(
void* pKeyAddress)
const;
107 GX_CSTR findKey(
void* pObject)
const;
109 GX_CSTR findKeyFromString(GX_CSTR pText)
const;
111 void insert(GX_CSTR key,
void* pObject);
113 void insertFromAddress(
void* pKeyAddress,
void* pObject);
115 void setObject(GX_CSTR key,
void* pObject);
117 void setObjectFromAddress(
void* pKeyAddress,
void* pObject);
119 void erase(GX_CSTR key);
121 void eraseFromAddress(
void* pKeyAddress);
123 void erase(
const void* pObject);
131 GX_FORCE_INLINE u32 getHashValueFromAddress(
void* pKeyAddress)
const {
return GxMath::getHash32(pKeyAddress,
sizeof(
void*)) % _splitCount; }
133 GxPair* findPair(GX_CSTR key)
const;
135 GxPair* findPairFromAddress(
void* pKeyAddress)
const;
137 GxPair* allocatePair(GX_CSTR key,
void* pObject);
139 void freePair(GxPair* pPair);
148 void* operator[](GX_CSTR key);
150 void* operator[](u32 index);
152 u32 getCount(
void)
const;
214 GxPair(
void) : _key(
nullptr), _pObject(
nullptr){}
217 GxPair(GX_CWSTR key,
void* pObject) : _key(key), _pObject(pObject){}
251 void*
find(GX_CWSTR key)
const;
253 void insert(GX_CWSTR key,
void* pObject);
255 void erase(GX_CWSTR key);
257 void erase(
const void* pObject);
263 GX_FORCE_INLINE u32 getHashValue(GX_CWSTR key)
const {
return GxMath::getHash32(key) % _splitCount; }
274 void* operator[](GX_CWSTR key);
276 GX_FORCE_INLINE u32 getCount(
void)
const {
return _pPairList->
getCount(); }
278 constexpr u32 getSplitCount(
void)
const {
return _splitCount; }
293GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
配列クラス
Definition GxArrayClassBase.h:18
オブジェクト基底クラス
Definition GxBase.h:88
ペア情報
Definition GxHashMap.h:35
GxPair(void)
デフォルトコンストラクタ
Definition GxHashMap.h:53
constexpr GX_CSTR getKey(void) const
キーを取得
Definition GxHashMap.h:64
constexpr void * getObject(void) const
オブジェクトを取得
Definition GxHashMap.h:66
constexpr void set(GX_CSTR key, void *pObject)
設定
Definition GxHashMap.h:62
連想配列クラス
Definition GxHashMap.h:18
constexpr u32 getKeySize(void) const
キーのサイズを取得
Definition GxHashMap.h:156
constexpr u32 getSplitCount(void) const
分割数を取得
Definition GxHashMap.h:154
GX_FORCE_INLINE const GxArrayClassBase & getPairArray(void) const
ペア配列を取得
Definition GxHashMap.h:158
連想配列クラス(ワイド文字列用)
Definition GxHashMap.h:181
~GxHashMapW(void) override
デストラクタ
Definition GxHashMap.cpp:482
void insert(GX_CWSTR key, void *pObject)
挿入
Definition GxHashMap.cpp:508
void * find(GX_CWSTR key) const
検索
Definition GxHashMap.cpp:493
GxHashMapW(void)
デフォルトコンストラクタ
Definition GxHashMap.cpp:462
void erase(GX_CWSTR key)
削除
Definition GxHashMap.cpp:528
static constexpr u32 DEFAULT_SPLIT_COUNT
デフォルト分割数
Definition GxHashMap.h:192
void eraseAll(void)
全削除
Definition GxHashMap.cpp:572
GxClassBase用連結リストノードクラス
Definition GxListClassBase.h:132
GxClassBase用連結リストクラス
Definition GxListClassBase.h:18
constexpr u32 getCount(void) const
要素数を取得
Definition GxListClassBase.h:78
算術演算クラス
Definition GxMath.h:84
static u32 getHash32(void *pData, u32 size)
ハッシュ値取得(32bit、データ、サイズ指定版)
Definition GxMath.cpp:241
メモリストリームクラス
Definition GxStream.h:248
32bitブーリアン
Definition GxDefine.h:173