mozilla

Compare Revisions

Detailed XPCOM hashtable guide

Change Revisions

Revision 64413:

Revision 64413 by Bzbarsky on

Revision 64414:

Revision 64414 by Mrbkap on

Title:
Detailed XPCOM hashtable guide
Detailed XPCOM hashtable guide
Slug:
Detailed_XPCOM_hashtable_guide
Detailed_XPCOM_hashtable_guide
Tags:
XPCOM, NeedsMarkupWork
XPCOM, NeedsMarkupWork
Content:

Revision 64413
Revision 64414
t286      You must declare an <strong>entry struct</strong> type, dert286      You must declare an <strong>entry struct</strong> type, der
>iving from {{ Source("xpcom/glue/pldhash.h#81", "<code>PLDHashEnt>iving from &lt;code&gt;{{ Source("xpcom/glue/pldhash.h#81", "PLDH
>ryHdr</code>") }}. This entry struct should contain whatever data>ashEntryHdr") }}&lt;/code&gt;. This entry struct should contain w
> you wish to store in the hashtable (any pointer or fixed-length >hatever data you wish to store in the hashtable (any pointer or f
>data type). <strong>Note:</strong> because of the double-hashing >ixed-length data type). <strong>Note:</strong> because of the dou
>implementation, entries may move in memory when the hashtable is >ble-hashing implementation, entries may move in memory when the h
>altered. If you need entry pointers to remain constant, you may w>ashtable is altered. If you need entry pointers to remain constan
>ant to consider using <code><a href="#PLHashTable">PLHashTable</a>t, you may want to consider using <code><a href="#PLHashTable">PL
>></code> instead.>HashTable</a></code> instead.
287    </p>
288    <p>287    </p>
289      You must also initialize a {{ Source("xpcom/glue/pldhash.h#288    <p>
>312", "<code>PLDHashTableOps</code>") }} structure. This serves s 
>imilarly to a vtable in C++, with pointers to appropriate user-de 
>fined functions that initialize, compare, and match entries. Beca 
>use <code>PLDHash</code> does not know what datatype your key is, 
> all functions that work with keys are declared using <code>{{ So 
>urce("xpcom/glue/pldhash.h#354", "const void*") }}</code>, and yo 
>ur client code must cast these pointers to the appropriate type. 
289      You must also initialize a &lt;code&gt;{{ Source("xpcom/glu
 >e/pldhash.h#312", "PLDHashTableOps") }}&lt;/code&gt; structure. T
 >his serves similarly to a vtable in C++, with pointers to appropr
 >iate user-defined functions that initialize, compare, and match e
 >ntries. Because <code>PLDHash</code> does not know what datatype 
 >your key is, all functions that work with keys are declared using
 > <code>{{ Source("xpcom/glue/pldhash.h#354", "const void*") }}</c
 >ode>, and your client code must cast these pointers to the approp
 >riate type.

Back to History