pkix_pl_primhash.h (2229B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* 5 * pkix_pl_primhash.h 6 * 7 * Primitive Hashtable Definition 8 * 9 */ 10 11 #ifndef _PKIX_PL_PRIMHASH_H 12 #define _PKIX_PL_PRIMHASH_H 13 14 #include "pkix_pl_common.h" 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 typedef struct pkix_pl_HT_Elem pkix_pl_HT_Elem; 21 22 typedef struct pkix_pl_PrimHashTable pkix_pl_PrimHashTable; 23 24 typedef struct pkix_pl_Integer pkix_pl_Integer; 25 26 struct pkix_pl_Integer{ 27 PKIX_UInt32 ht_int; 28 }; 29 30 struct pkix_pl_HT_Elem { 31 void *key; 32 void *value; 33 PKIX_UInt32 hashCode; 34 pkix_pl_HT_Elem *next; 35 }; 36 37 struct pkix_pl_PrimHashTable { 38 pkix_pl_HT_Elem **buckets; 39 PKIX_UInt32 size; 40 }; 41 42 /* see source file for function documentation */ 43 44 PKIX_Error * 45 pkix_pl_PrimHashTable_Create( 46 PKIX_UInt32 numBuckets, 47 pkix_pl_PrimHashTable **pResult, 48 void *plContext); 49 50 PKIX_Error * 51 pkix_pl_PrimHashTable_Add( 52 pkix_pl_PrimHashTable *ht, 53 void *key, 54 void *value, 55 PKIX_UInt32 hashCode, 56 PKIX_PL_EqualsCallback keyComp, 57 void *plContext); 58 59 PKIX_Error * 60 pkix_pl_PrimHashTable_Remove( 61 pkix_pl_PrimHashTable *ht, 62 void *key, 63 PKIX_UInt32 hashCode, 64 PKIX_PL_EqualsCallback keyComp, 65 void **pKey, 66 void **pValue, 67 void *plContext); 68 69 PKIX_Error * 70 pkix_pl_PrimHashTable_Lookup( 71 pkix_pl_PrimHashTable *ht, 72 void *key, 73 PKIX_UInt32 hashCode, 74 PKIX_PL_EqualsCallback keyComp, 75 void **pResult, 76 void *plContext); 77 78 PKIX_Error* 79 pkix_pl_PrimHashTable_Destroy( 80 pkix_pl_PrimHashTable *ht, 81 void *plContext); 82 83 PKIX_Error * 84 pkix_pl_PrimHashTable_GetBucketSize( 85 pkix_pl_PrimHashTable *ht, 86 PKIX_UInt32 hashCode, 87 PKIX_UInt32 *pBucketSize, 88 void *plContext); 89 90 PKIX_Error * 91 pkix_pl_PrimHashTable_RemoveFIFO( 92 pkix_pl_PrimHashTable *ht, 93 PKIX_UInt32 hashCode, 94 void **pKey, 95 void **pValue, 96 void *plContext); 97 98 #ifdef __cplusplus 99 } 100 #endif 101 102 #endif /* _PKIX_PL_PRIMHASH_H */