sourcepawn/compiler/sp_symhash.h
author Asher Baker <asherkin@gmail.com>
Sun Jul 29 02:51:50 2012 +0100 (2012-07-29)
changeset 3590 6908e80a69af
parent 3075 a86a7061c44c
permissions -rw-r--r--
Added some useful IDA scripts (NPOTB).
dvander@3075
     1
/* vim: set ts=4 sw=4 tw=99 et: */
dvander@3075
     2
#ifndef _INCLUDE_SPCOMP_SYMHASH_H_
dvander@3075
     3
#define _INCLUDE_SPCOMP_SYMHASH_H_
dvander@3075
     4
dvander@3075
     5
SC_FUNC uint32_t NameHash(const char *str);
dvander@3075
     6
dvander@3075
     7
typedef struct HashEntry {
dvander@3075
     8
    symbol *sym;
dvander@3075
     9
    struct HashEntry *next;
dvander@3075
    10
} HashEntry;
dvander@3075
    11
dvander@3075
    12
struct HashTable {
dvander@3075
    13
    uint32_t nbuckets;
dvander@3075
    14
    uint32_t nused;
dvander@3075
    15
    uint32_t bucketmask;
dvander@3075
    16
    HashEntry **buckets;
dvander@3075
    17
};
dvander@3075
    18
dvander@3075
    19
SC_FUNC HashTable *NewHashTable();
dvander@3075
    20
SC_FUNC void DestroyHashTable(HashTable *ht);
dvander@3075
    21
SC_FUNC void AddToHashTable(HashTable *ht, symbol *sym);
dvander@3075
    22
SC_FUNC void RemoveFromHashTable(HashTable *ht, symbol *sym);
dvander@3075
    23
SC_FUNC symbol *FindInHashTable(HashTable *ht, const char *name, int fnumber);
dvander@3075
    24
SC_FUNC symbol *FindTaggedInHashTable(HashTable *ht, const char *name, int fnumber,
dvander@3075
    25
                                      int *cmptag);
dvander@3075
    26
dvander@3075
    27
#endif /* _INCLUDE_SPCOMP_SYMHASH_H_ */
dvander@3075
    28