|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* $Header: XCreateAssoc.c,v 10.5 86/02/01 15:31:04 tony Rel $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985 */ ! 5: ! 6: #include "XlibInternal.h" ! 7: ! 8: char *malloc(); ! 9: char *calloc(); ! 10: /* ! 11: * XCreateAssocTable - Create an XAssocTable. The size argument should be ! 12: * a power of two for efficiency reasons. Some size suggestions: use 32 ! 13: * buckets per 100 objects; a reasonable maximum number of object per ! 14: * buckets is 8. If there is an error creating the XAssocTable, a NULL ! 15: * pointer is returned. ! 16: */ ! 17: XAssocTable *XCreateAssocTable(size) ! 18: register int size; /* Desired size of the table. */ ! 19: { ! 20: register XAssocTable *table; /* XAssocTable to be initialized. */ ! 21: register XAssoc *bucket; /* Pointer to a bucket in the table. */ ! 22: ! 23: /* Malloc the XAssocTable. */ ! 24: if ((table = (XAssocTable *)malloc(sizeof(XAssocTable))) == NULL) { ! 25: /* Malloc call failed! */ ! 26: errno = ENOMEM; ! 27: return(NULL); ! 28: } ! 29: ! 30: /* Malloc the bucket headers. */ ! 31: bucket = (XAssoc *)calloc(size, sizeof(XAssoc)); ! 32: if (bucket == NULL) { ! 33: /* Calloc call failed! */ ! 34: errno = ENOMEM; ! 35: return(NULL); ! 36: } ! 37: ! 38: /* Insert table data into the XAssocTable structure. */ ! 39: table->table = (XAssoc (*)[])bucket; ! 40: table->size = size; ! 41: ! 42: while (--size >= 0) { ! 43: /* Initialize each bucket. */ ! 44: bucket->prev = bucket; ! 45: bucket->next = bucket; ! 46: bucket++; ! 47: } ! 48: ! 49: return(table); ! 50: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.