25858
|
1 /* Copyright Massachusetts Institute of Technology 1985 */
|
76133
995b45abe69d
Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
diff
changeset
|
2 #include "copyright.h"
|
995b45abe69d
Remove license text in favour of including copyright.h, as was done in
Glenn Morris <rgm@gnu.org>
diff
changeset
|
3
|
25858
|
4
|
|
5 #include <config.h>
|
|
6 #include <X11/Xlib.h>
|
|
7 #include <errno.h>
|
|
8 #include "X10.h"
|
|
9
|
|
10 #ifndef NULL
|
|
11 #define NULL 0
|
|
12 #endif
|
|
13
|
|
14 extern int errno;
|
|
15
|
|
16 /*
|
|
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.
|
|
22 */
|
|
23 XAssocTable *XCreateAssocTable(size)
|
|
24 register int size; /* Desired size of the table. */
|
|
25 {
|
|
26 register XAssocTable *table; /* XAssocTable to be initialized. */
|
|
27 register XAssoc *buckets; /* Pointer to the first bucket in */
|
|
28 /* the bucket array. */
|
49600
|
29
|
25858
|
30 /* Malloc the XAssocTable. */
|
|
31 if ((table = (XAssocTable *)malloc(sizeof(XAssocTable))) == NULL) {
|
|
32 /* malloc call failed! */
|
|
33 errno = ENOMEM;
|
|
34 return(NULL);
|
|
35 }
|
49600
|
36
|
25858
|
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! */
|
|
41 errno = ENOMEM;
|
|
42 return(NULL);
|
|
43 }
|
|
44
|
|
45 /* Insert table data into the XAssocTable structure. */
|
|
46 table->buckets = buckets;
|
|
47 table->size = size;
|
|
48
|
|
49 while (--size >= 0) {
|
|
50 /* Initialize each bucket. */
|
|
51 buckets->prev = buckets;
|
|
52 buckets->next = buckets;
|
|
53 buckets++;
|
|
54 }
|
|
55
|
|
56 return(table);
|
|
57 }
|
52401
|
58
|
|
59 /* arch-tag: 5df3237d-ada0-4345-a3ab-282cafb397aa
|
|
60 (do not change this comment) */
|