OGR
Typedefs | Functions
cpl_hash_set.h File Reference
#include "cpl_port.h"

Go to the source code of this file.

Typedefs

typedef struct _CPLHashSet CPLHashSet
 
typedef unsigned long(* CPLHashSetHashFunc )(const void *elt)
 
typedef int(* CPLHashSetEqualFunc )(const void *elt1, const void *elt2)
 
typedef void(* CPLHashSetFreeEltFunc )(void *elt)
 
typedef int(* CPLHashSetIterEltFunc )(void *elt, void *user_data)
 

Functions

CPLHashSetCPLHashSetNew (CPLHashSetHashFunc fnHashFunc, CPLHashSetEqualFunc fnEqualFunc, CPLHashSetFreeEltFunc fnFreeEltFunc)
 
void CPLHashSetDestroy (CPLHashSet *set)
 
void CPLHashSetClear (CPLHashSet *set)
 
int CPLHashSetSize (const CPLHashSet *set)
 
void CPLHashSetForeach (CPLHashSet *set, CPLHashSetIterEltFunc fnIterFunc, void *user_data)
 
int CPLHashSetInsert (CPLHashSet *set, void *elt)
 
void * CPLHashSetLookup (CPLHashSet *set, const void *elt)
 
int CPLHashSetRemove (CPLHashSet *set, const void *elt)
 
int CPLHashSetRemoveDeferRehash (CPLHashSet *set, const void *elt)
 
unsigned long CPLHashSetHashPointer (const void *elt)
 
int CPLHashSetEqualPointer (const void *elt1, const void *elt2)
 
unsigned long CPLHashSetHashStr (const void *pszStr)
 
int CPLHashSetEqualStr (const void *pszStr1, const void *pszStr2)
 

Detailed Description

Hash set implementation.

An hash set is a data structure that holds elements that are unique according to a comparison function. Operations on the hash set, such as insertion, removal or lookup, are supposed to be fast if an efficient "hash" function is provided.

Typedef Documentation

typedef struct _CPLHashSet CPLHashSet

Opaque type for a hash set

typedef int(* CPLHashSetEqualFunc)(const void *elt1, const void *elt2)

CPLHashSetEqualFunc

typedef void(* CPLHashSetFreeEltFunc)(void *elt)

CPLHashSetFreeEltFunc

typedef unsigned long(* CPLHashSetHashFunc)(const void *elt)

CPLHashSetHashFunc

typedef int(* CPLHashSetIterEltFunc)(void *elt, void *user_data)

CPLHashSetIterEltFunc

Function Documentation

void CPLHashSetClear ( CPLHashSet set)

Clear all elements from a hash set.

This function also frees the elements if a free function was provided at the creation of the hash set.

Parameters
setthe hash set
Since
GDAL 2.1

References CPLRealloc().

void CPLHashSetDestroy ( CPLHashSet set)

Destroys an allocated hash set.

This function also frees the elements if a free function was provided at the creation of the hash set.

Parameters
setthe hash set

References CPLFree, and CPLListDestroy().

int CPLHashSetEqualPointer ( const void *  elt1,
const void *  elt2 
)

Equality function for arbitrary pointers

Parameters
elt1the first arbitrary pointer to compare
elt2the second arbitrary pointer to compare
Returns
TRUE if the pointers are equal

Referenced by CPLHashSetNew().

int CPLHashSetEqualStr ( const void *  elt1,
const void *  elt2 
)

Equality function for strings

Parameters
elt1the first string to compare. May be NULL.
elt2the second string to compare. May be NULL.
Returns
TRUE if the strings are equal
void CPLHashSetForeach ( CPLHashSet set,
CPLHashSetIterEltFunc  fnIterFunc,
void *  user_data 
)

Walk through the hash set and runs the provided function on all the elements

This function is provided the user_data argument of CPLHashSetForeach. It must return TRUE to go on the walk through the hash set, or FALSE to make it stop.

Note : the structure of the hash set must NOT be modified during the walk.

Parameters
setthe hash set.
fnIterFuncthe function called on each element.
user_datathe user data provided to the function.

References CPLAssert, _CPLList::pData, and _CPLList::psNext.

unsigned long CPLHashSetHashPointer ( const void *  elt)

Hash function for an arbitrary pointer

Parameters
eltthe arbitrary pointer to hash
Returns
the hash value of the pointer

Referenced by CPLHashSetNew().

unsigned long CPLHashSetHashStr ( const void *  elt)

Hash function for a zero-terminated string

Parameters
eltthe string to hash. May be NULL.
Returns
the hash value of the string
int CPLHashSetInsert ( CPLHashSet set,
void *  elt 
)

Inserts an element into a hash set.

If the element was already inserted in the hash set, the previous element is replaced by the new element. If a free function was provided, it is used to free the previously inserted element

Parameters
setthe hash set
eltthe new element to insert in the hash set
Returns
TRUE if the element was not already in the hash set

References CPLAssert, _CPLList::pData, and _CPLList::psNext.

void* CPLHashSetLookup ( CPLHashSet set,
const void *  elt 
)

Returns the element found in the hash set corresponding to the element to look up The element must not be modified.

Parameters
setthe hash set
eltthe element to look up in the hash set
Returns
the element found in the hash set or NULL

References CPLAssert.

CPLHashSet* CPLHashSetNew ( CPLHashSetHashFunc  fnHashFunc,
CPLHashSetEqualFunc  fnEqualFunc,
CPLHashSetFreeEltFunc  fnFreeEltFunc 
)

Creates a new hash set

The hash function must return a hash value for the elements to insert. If fnHashFunc is NULL, CPLHashSetHashPointer will be used.

The equal function must return if two elements are equal. If fnEqualFunc is NULL, CPLHashSetEqualPointer will be used.

The free function is used to free elements inserted in the hash set, when the hash set is destroyed, when elements are removed or replaced. If fnFreeEltFunc is NULL, elements inserted into the hash set will not be freed.

Parameters
fnHashFunchash function. May be NULL.
fnEqualFuncequal function. May be NULL.
fnFreeEltFuncelement free function. May be NULL.
Returns
a new hash set

References CPLCalloc(), CPLHashSetEqualPointer(), CPLHashSetHashPointer(), and CPLMalloc().

int CPLHashSetRemove ( CPLHashSet set,
const void *  elt 
)

Removes an element from a hash set

Parameters
setthe hash set
eltthe new element to remove from the hash set
Returns
TRUE if the element was in the hash set
int CPLHashSetRemoveDeferRehash ( CPLHashSet set,
const void *  elt 
)

Removes an element from a hash set.

This will defer potential rehashing of the set to later calls to CPLHashSetInsert() or CPLHashSetRemove().

Parameters
setthe hash set
eltthe new element to remove from the hash set
Returns
TRUE if the element was in the hash set
Since
GDAL 2.1
int CPLHashSetSize ( const CPLHashSet set)

Returns the number of elements inserted in the hash set

Note: this is not the internal size of the hash set

Parameters
setthe hash set
Returns
the number of elements in the hash set

References CPLAssert.


Generated for GDAL by doxygen 1.8.5.