37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
#ifndef INCLUDED_C_HASHSET_H
|
||
#define INCLUDED_C_HASHSET_H
|
||
|
||
#ifndef INCLUDED_C_HASHMAP_H
|
||
#include <c_HashMap.h>
|
||
#endif /*INCLUDED_C_HASHMAP_H*/
|
||
|
||
|
||
/* ------------------------------------------------------------------------------------------------------------------ */
|
||
/* */
|
||
|
||
typedef struct {
|
||
c_HashMap_t map; // 底層由 HashMap 驅動
|
||
} c_HashSet_t;
|
||
|
||
// 集合迭代器(直接重定向至您的 HashMapKeyIter)
|
||
typedef c_HashMapKeyIter_t c_HashSetIter_t;
|
||
|
||
// 核心函數宣告
|
||
c_err_t c_HashSet_Init(c_HashSet_t* self, int obj_size, c_size_t initial_capacity,
|
||
c_HashMap_Hash_f hash, c_HashMap_Compare_f compare);
|
||
void c_HashSet_Destroy(c_HashSet_t* self);
|
||
|
||
c_err_t c_HashSet_Add(c_HashSet_t* self, const void* obj);
|
||
c_err_t c_HashSet_Remove(c_HashSet_t* self, const void* obj);
|
||
c_bool_t c_HashSet_Contains(c_HashSet_t* self, const void* obj);
|
||
c_size_t c_HashSet_GetSize(const c_HashSet_t* self);
|
||
|
||
// 集合迭代器巨集/函數重定向(完美保持一致性)
|
||
#define c_HashSetIter_Init(self, set) c_HashMapKeyIter_Init(self, &(set)->map)
|
||
#define c_HashSetIter_HasNext(self) c_HashMapKeyIter_HasNext(self)
|
||
#define c_HashSetIter_Get(self) c_HashMapKeyIter_Get(self)
|
||
#define c_HashSetIter_Next(self) c_HashMapKeyIter_Next(self)
|
||
#define c_HashSetIter_Remove(self) c_HashMapKeyIter_Remove(self)
|
||
|
||
#endif /*INCLUDED_C_HASHSET_H*/
|