blob: b889e2e91eae8bcbc9a6108cee8eb192a0f3581b [file] [log] [blame]
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* pkix_pl_primhash.h
*
* Primitive Hashtable Definition
*
*/
#ifndef _PKIX_PL_PRIMHASH_H
#define _PKIX_PL_PRIMHASH_H
#include "pkix_pl_common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct pkix_pl_HT_Elem pkix_pl_HT_Elem;
typedef struct pkix_pl_PrimHashTable pkix_pl_PrimHashTable;
typedef struct pkix_pl_Integer pkix_pl_Integer;
struct pkix_pl_Integer{
PKIX_UInt32 ht_int;
};
struct pkix_pl_HT_Elem {
void *key;
void *value;
PKIX_UInt32 hashCode;
pkix_pl_HT_Elem *next;
};
struct pkix_pl_PrimHashTable {
pkix_pl_HT_Elem **buckets;
PKIX_UInt32 size;
};
/* see source file for function documentation */
PKIX_Error *
pkix_pl_PrimHashTable_Create(
PKIX_UInt32 numBuckets,
pkix_pl_PrimHashTable **pResult,
void *plContext);
PKIX_Error *
pkix_pl_PrimHashTable_Add(
pkix_pl_PrimHashTable *ht,
void *key,
void *value,
PKIX_UInt32 hashCode,
PKIX_PL_EqualsCallback keyComp,
void *plContext);
PKIX_Error *
pkix_pl_PrimHashTable_Remove(
pkix_pl_PrimHashTable *ht,
void *key,
PKIX_UInt32 hashCode,
PKIX_PL_EqualsCallback keyComp,
void **pKey,
void **pValue,
void *plContext);
PKIX_Error *
pkix_pl_PrimHashTable_Lookup(
pkix_pl_PrimHashTable *ht,
void *key,
PKIX_UInt32 hashCode,
PKIX_PL_EqualsCallback keyComp,
void **pResult,
void *plContext);
PKIX_Error*
pkix_pl_PrimHashTable_Destroy(
pkix_pl_PrimHashTable *ht,
void *plContext);
PKIX_Error *
pkix_pl_PrimHashTable_GetBucketSize(
pkix_pl_PrimHashTable *ht,
PKIX_UInt32 hashCode,
PKIX_UInt32 *pBucketSize,
void *plContext);
PKIX_Error *
pkix_pl_PrimHashTable_RemoveFIFO(
pkix_pl_PrimHashTable *ht,
PKIX_UInt32 hashCode,
void **pKey,
void **pValue,
void *plContext);
#ifdef __cplusplus
}
#endif
#endif /* _PKIX_PL_PRIMHASH_H */