1 /* Copyright Massachusetts Institute of Technology 1985 */
17 * XCreateAssocTable - Create an XAssocTable. The size argument should be
18 * a power of two for efficiency reasons. Some size suggestions: use 32
19 * buckets per 100 objects; a reasonable maximum number of object per
20 * buckets is 8. If there is an error creating the XAssocTable, a NULL
21 * pointer is returned.
23 XAssocTable
*XCreateAssocTable(size
)
24 register int size
; /* Desired size of the table. */
26 register XAssocTable
*table
; /* XAssocTable to be initialized. */
27 register XAssoc
*buckets
; /* Pointer to the first bucket in */
28 /* the bucket array. */
30 /* Malloc the XAssocTable. */
31 if ((table
= (XAssocTable
*)malloc(sizeof(XAssocTable
))) == NULL
) {
32 /* malloc call failed! */
37 /* calloc the buckets (actually just their headers). */
38 buckets
= (XAssoc
*)calloc((unsigned)size
, (unsigned)sizeof(XAssoc
));
39 if (buckets
== NULL
) {
40 /* calloc call failed! */
45 /* Insert table data into the XAssocTable structure. */
46 table
->buckets
= buckets
;
50 /* Initialize each bucket. */
51 buckets
->prev
= buckets
;
52 buckets
->next
= buckets
;
59 /* arch-tag: 5df3237d-ada0-4345-a3ab-282cafb397aa
60 (do not change this comment) */