语法

#include <plhash.h>

typedef struct PLHashAllocOps {
  void *(PR_CALLBACK *allocTable)(void *pool, PRSize size);
  void (PR_CALLBACK *freeTable)(void *pool, void *item);
  PLHashEntry *(PR_CALLBACK *allocEntry)(void *pool, const void *key);
  void (PR_CALLBACK *freeEntry)(void *pool, PLHashEntry *he, PRUintn flag);
} PLHashAllocOps;

#define HT_FREE_VALUE 0 /* just free the entry's value */
#define HT_FREE_ENTRY 1 /* free value and entire entry */

描述

哈希表函数的用户可以提供他们自己的内存分配函数。一对函数用于分配和释放表,另一对函数用于分配和释放表条目。

所有四个函数的第一个参数 pool 是一个 void * 指针,它是内存分配器的数据。通常,pool 指向内存分配器使用的内存池。

函数 freeEntry 不需要释放条目的值。如果 flag 是 HT_FREE_ENTRY,则该函数释放该条目。

备注

函数 allocEntry 的参数 key 似乎没有用。它在默认的 allocEntry 函数中未使用。