Annotation of GNUtools/emacs/oldXMenu/XCrAssoc.c, revision 1.1.1.1

1.1       root        1: /* $XConsortium: XCrAssoc.c,v 10.17 91/01/06 12:04:57 rws Exp $ */
                      2: /* Copyright    Massachusetts Institute of Technology    1985  */
                      3: 
                      4: /*
                      5: Permission to use, copy, modify, distribute, and sell this software and its
                      6: documentation for any purpose is hereby granted without fee, provided that
                      7: the above copyright notice appear in all copies and that both that
                      8: copyright notice and this permission notice appear in supporting
                      9: documentation, and that the name of M.I.T. not be used in advertising or
                     10: publicity pertaining to distribution of the software without specific,
                     11: written prior permission.  M.I.T. makes no representations about the
                     12: suitability of this software for any purpose.  It is provided "as is"
                     13: without express or implied warranty.
                     14: */
                     15: 
                     16: #include "X11/Xlib.h"
                     17: #include "X10.h"
                     18: #include "errno.h"
                     19: 
                     20: #ifndef NULL
                     21: #define NULL 0
                     22: #endif
                     23: 
                     24: extern int errno;
                     25: 
                     26: /*
                     27:  * XCreateAssocTable - Create an XAssocTable.  The size argument should be
                     28:  * a power of two for efficiency reasons.  Some size suggestions: use 32
                     29:  * buckets per 100 objects;  a reasonable maximum number of object per
                     30:  * buckets is 8.  If there is an error creating the XAssocTable, a NULL
                     31:  * pointer is returned.
                     32:  */
                     33: XAssocTable *XCreateAssocTable(size)
                     34:        register int size;              /* Desired size of the table. */
                     35: {
                     36:        register XAssocTable *table;    /* XAssocTable to be initialized. */
                     37:        register XAssoc *buckets;       /* Pointer to the first bucket in */
                     38:                                        /* the bucket array. */
                     39:        
                     40:        /* Malloc the XAssocTable. */
                     41:        if ((table = (XAssocTable *)malloc(sizeof(XAssocTable))) == NULL) {
                     42:                /* malloc call failed! */
                     43:                errno = ENOMEM;
                     44:                return(NULL);
                     45:        }
                     46:        
                     47:        /* malloc the buckets (actually just their headers). */
                     48:        buckets = (XAssoc *)calloc((unsigned)size, (unsigned)sizeof(XAssoc));
                     49:        if (buckets == NULL) {
                     50:                /* calloc call failed! */
                     51:                errno = ENOMEM;
                     52:                return(NULL);
                     53:        }
                     54: 
                     55:        /* Insert table data into the XAssocTable structure. */
                     56:        table->buckets = buckets;
                     57:        table->size = size;
                     58: 
                     59:        while (--size >= 0) {
                     60:                /* Initialize each bucket. */
                     61:                buckets->prev = buckets;
                     62:                buckets->next = buckets;
                     63:                buckets++;
                     64:        }
                     65: 
                     66:        return(table);
                     67: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.