Annotation of GNUtools/emacs/oldXMenu/XCrAssoc.c, revision 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.