# PL_NewHashTable Create a new hash table. ## Syntax ```{code} #include PLHashTable *PL_NewHashTable( PRUint32 numBuckets, PLHashFunction keyHash, PLHashComparator keyCompare, PLHashComparator valueCompare, const PLHashAllocOps *allocOps, void *allocPriv ); ``` ### Parameters The function has the following parameters: `numBuckets` : The number of buckets in the hash table. `keyHash` : Hash function. `keyCompare` : Function used to compare keys of entries. `valueCompare` : Function used to compare keys of entries. `allocOps` : A pointer to a `PLHashAllocOps` structure that must exist throughout the lifetime of the new hash table. `allocPriv` : Passed as the first argument (pool). ### Returns The new hash table. ## Description {ref}`PL_NewHashTable` creates a new hash table. The table has at least 16 buckets. You can pass a value of 0 as `numBuckets` to create the default number of buckets in the new table. The arguments `keyCompare` and `valueCompare` are functions of type {ref}`PLHashComparator` that the hash table library functions use to compare the keys and the values of entries. The argument `allocOps` points to a `PLHashAllocOps` structure that must exist throughout the lifetime of the new hash table. The hash table library functions do not make a copy of this structure. When the allocation functions in `allocOps` are invoked, the allocation private data allocPriv is passed as the first argument (pool). You can specify a `NULL` value for `allocOps` to use the default allocation functions. If `allocOps` is `NULL`, `allocPriv` is ignored. Note that the default `freeEntry` function does not free the value of the entry.