root/trunk/oldXMenu/XCrAssoc.c

Revision 4196, 1.5 kB (checked in by miyoshi, 2 years ago)

Sync up with Emacs CVS HEAD.

  • Property svn:eol-style set to native
Line 
1 /* Copyright    Massachusetts Institute of Technology    1985   */
2 #include "copyright.h"
3
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. */
29
30         /* Malloc the XAssocTable. */
31         if ((table = (XAssocTable *)malloc(sizeof(XAssocTable))) == NULL) {
32                 /* malloc call failed! */
33                 errno = ENOMEM;
34                 return(NULL);
35         }
36
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 }
58
59 /* arch-tag: 5df3237d-ada0-4345-a3ab-282cafb397aa
60    (do not change this comment) */
Note: See TracBrowser for help on using the browser.