tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 */