Annotation of GNUtools/cctools/as/hash.h, revision 1.1

1.1     ! root        1: /* hash.h - for hash.c
        !             2:    Copyright (C) 1987 Free Software Foundation, Inc.
        !             3: 
        !             4: This file is part of GAS, the GNU Assembler.
        !             5: 
        !             6: GAS is free software; you can redistribute it and/or modify
        !             7: it under the terms of the GNU General Public License as published by
        !             8: the Free Software Foundation; either version 1, or (at your option)
        !             9: any later version.
        !            10: 
        !            11: GAS is distributed in the hope that it will be useful,
        !            12: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            14: GNU General Public License for more details.
        !            15: 
        !            16: You should have received a copy of the GNU General Public License
        !            17: along with GAS; see the file COPYING.  If not, write to
        !            18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !            19: 
        !            20: struct hash_entry
        !            21: {
        !            22:   char *      hash_string;     /* points to where the symbol string is */
        !            23:                                /* NULL means slot is not used */
        !            24:                                /* DELETED means slot was deleted */
        !            25:   char *      hash_value;      /* user's datum, associated with symbol */
        !            26: };
        !            27: 
        !            28: 
        !            29: #define HASH_STATLENGTH        (6)
        !            30: struct hash_control
        !            31: {
        !            32:   struct hash_entry * hash_where; /* address of hash table */
        !            33:   int         hash_sizelog;    /* Log of ( hash_mask + 1 ) */
        !            34:   int         hash_mask;       /* masks a hash into index into table */
        !            35:   int         hash_full;       /* when hash_stat[STAT_USED] exceeds this, */
        !            36:                                /* grow table */
        !            37:   struct hash_entry * hash_wall; /* point just after last (usable) entry */
        !            38:                                /* here we have some statistics */
        !            39:   int hash_stat[HASH_STATLENGTH]; /* lies & statistics */
        !            40:                                /* we need STAT_USED & STAT_SIZE */
        !            41: };
        !            42: 
        !            43: 
        !            44: /*                                             returns           */
        !            45: extern struct hash_control *hash_new(  /* [control block]        */
        !            46:     void);                     
        !            47: extern char *hash_insert(              /* error string           */
        !            48:     struct hash_control *handle,
        !            49:     char *string,
        !            50:     char *value);
        !            51: extern char *hash_apply(               /* 0 means OK             */
        !            52:     struct hash_control *handle,
        !            53:     char *(*function)(char *hash_string, char *hash_value));
        !            54: extern char *hash_find(                        /* value                  */
        !            55:     struct hash_control *handle,
        !            56:     char *string);
        !            57: extern char *hash_jam(                 /* error text (internal)  */
        !            58:     struct hash_control *handle,
        !            59:     char *string,
        !            60:     char *value);

unix.superglobalmegacorp.com

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