31 #ifndef _CPL_HASH_SET_H_INCLUDED
32 #define _CPL_HASH_SET_H_INCLUDED
51 typedef struct _CPLHashSet CPLHashSet;
53 typedef unsigned long (*CPLHashSetHashFunc)(
const void* elt);
55 typedef int (*CPLHashSetEqualFunc)(
const void* elt1,
const void* elt2);
57 typedef void (*CPLHashSetFreeEltFunc)(
void* elt);
59 typedef int (*CPLHashSetIterEltFunc)(
void* elt,
void* user_data);
63 CPLHashSet CPL_DLL * CPLHashSetNew(CPLHashSetHashFunc fnHashFunc,
64 CPLHashSetEqualFunc fnEqualFunc,
65 CPLHashSetFreeEltFunc fnFreeEltFunc);
67 void CPL_DLL CPLHashSetDestroy(CPLHashSet* set);
69 int CPL_DLL CPLHashSetSize(
const CPLHashSet* set);
71 void CPL_DLL CPLHashSetForeach(CPLHashSet* set,
72 CPLHashSetIterEltFunc fnIterFunc,
75 int CPL_DLL CPLHashSetInsert(CPLHashSet* set,
void* elt);
77 void CPL_DLL * CPLHashSetLookup(CPLHashSet* set,
const void* elt);
79 int CPL_DLL CPLHashSetRemove(CPLHashSet* set,
const void* elt);
81 unsigned long CPL_DLL CPLHashSetHashPointer(
const void* elt);
83 int CPL_DLL CPLHashSetEqualPointer(
const void* elt1,
const void* elt2);
85 unsigned long CPL_DLL CPLHashSetHashStr(
const void * pszStr);
87 int CPL_DLL CPLHashSetEqualStr(
const void* pszStr1,
const void* pszStr2);