forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 
 | |
| Syntax
 | |
| ------
 | |
| 
 | |
| .. code::
 | |
| 
 | |
|    #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 */
 | |
| 
 | |
| 
 | |
| Description
 | |
| -----------
 | |
| 
 | |
| Users of the hash table functions can provide their own memory
 | |
| allocation functions. A pair of functions is used to allocate and tree
 | |
| the table, and another pair of functions is used to allocate and free
 | |
| the table entries.
 | |
| 
 | |
| The first argument, pool, for all four functions is a void \* pointer
 | |
| that is a piece of data for the memory allocator. Typically pool points
 | |
| to a memory pool used by the memory allocator.
 | |
| 
 | |
| The ``freeEntry`` function does not need to free the value of the entry.
 | |
| If flag is ``HT_FREE_ENTRY``, the function frees the entry.
 | |
| 
 | |
| 
 | |
| Remark
 | |
| ------
 | |
| 
 | |
| The ``key`` argument for the ``allocEntry`` function does not seem to be
 | |
| useful. It is unused in the default ``allocEntry`` function.
 | 
