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: }

Defined functions

XCreateAssocTable defined in line 17; used 1 times
Last modified: 1986-02-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 870
Valid CSS Valid XHTML 1.0 Strict