1 /* Copyright Massachusetts Institute of Technology 1985 */
15 * XCreateAssocTable - Create an XAssocTable. The size argument should be
16 * a power of two for efficiency reasons. Some size suggestions: use 32
17 * buckets per 100 objects; a reasonable maximum number of object per
18 * buckets is 8. If there is an error creating the XAssocTable, a NULL
19 * pointer is returned.
21 XAssocTable
*XCreateAssocTable(register int size
)
22 /* Desired size of the table. */
24 register XAssocTable
*table
; /* XAssocTable to be initialized. */
25 register XAssoc
*buckets
; /* Pointer to the first bucket in */
26 /* the bucket array. */
28 /* Malloc the XAssocTable. */
29 if ((table
= (XAssocTable
*)malloc(sizeof(XAssocTable
))) == NULL
) {
30 /* malloc call failed! */
35 /* calloc the buckets (actually just their headers). */
36 buckets
= (XAssoc
*)calloc((unsigned)size
, (unsigned)sizeof(XAssoc
));
37 if (buckets
== NULL
) {
38 /* calloc call failed! */
43 /* Insert table data into the XAssocTable structure. */
44 table
->buckets
= buckets
;
48 /* Initialize each bucket. */
49 buckets
->prev
= buckets
;
50 buckets
->next
= buckets
;