1 //========================================================================
5 // Copyright 2001-2003 Glyph & Cog, LLC
7 //========================================================================
12 #ifdef USE_GCC_PRAGMAS
22 //------------------------------------------------------------------------
27 GooHash(GBool deleteKeysA
= gFalse
);
29 void add(GooString
*key
, void *val
);
30 void add(GooString
*key
, int val
);
31 void replace(GooString
*key
, void *val
);
32 void replace(GooString
*key
, int val
);
33 void *lookup(GooString
*key
);
34 int lookupInt(GooString
*key
);
35 void *lookup(char *key
);
36 int lookupInt(char *key
);
37 void *remove(GooString
*key
);
38 int removeInt(GooString
*key
);
39 void *remove(char *key
);
40 int removeInt(char *key
);
41 int getLength() { return len
; }
42 void startIter(GooHashIter
**iter
);
43 GBool
getNext(GooHashIter
**iter
, GooString
**key
, void **val
);
44 GBool
getNext(GooHashIter
**iter
, GooString
**key
, int *val
);
45 void killIter(GooHashIter
**iter
);
50 GooHashBucket
*find(GooString
*key
, int *h
);
51 GooHashBucket
*find(char *key
, int *h
);
52 int hash(GooString
*key
);
55 GBool deleteKeys
; // set if key strings should be deleted
56 int size
; // number of buckets
57 int len
; // number of entries
61 #define deleteGooHash(hash, T) \
63 GooHash *_hash = (hash); \
68 _hash->startIter(&_iter); \
69 while (_hash->getNext(&_iter, &_key, &_p)) { \