~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/poppler/goo/GooHash.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//========================================================================
 
2
//
 
3
// GooHash.h
 
4
//
 
5
// Copyright 2001-2003 Glyph & Cog, LLC
 
6
//
 
7
//========================================================================
 
8
 
 
9
#ifndef GHASH_H
 
10
#define GHASH_H
 
11
 
 
12
#ifdef USE_GCC_PRAGMAS
 
13
#pragma interface
 
14
#endif
 
15
 
 
16
#include "gtypes.h"
 
17
 
 
18
class GooString;
 
19
struct GooHashBucket;
 
20
struct GooHashIter;
 
21
 
 
22
//------------------------------------------------------------------------
 
23
 
 
24
class GooHash {
 
25
public:
 
26
 
 
27
  GooHash(GBool deleteKeysA = gFalse);
 
28
  ~GooHash();
 
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);
 
46
 
 
47
private:
 
48
 
 
49
  void expand();
 
50
  GooHashBucket *find(GooString *key, int *h);
 
51
  GooHashBucket *find(char *key, int *h);
 
52
  int hash(GooString *key);
 
53
  int hash(char *key);
 
54
 
 
55
  GBool deleteKeys;             // set if key strings should be deleted
 
56
  int size;                     // number of buckets
 
57
  int len;                      // number of entries
 
58
  GooHashBucket **tab;
 
59
};
 
60
 
 
61
#define deleteGooHash(hash, T)                       \
 
62
  do {                                             \
 
63
    GooHash *_hash = (hash);                         \
 
64
    {                                              \
 
65
      GooHashIter *_iter;                            \
 
66
      GooString *_key;                               \
 
67
      void *_p;                                    \
 
68
      _hash->startIter(&_iter);                    \
 
69
      while (_hash->getNext(&_iter, &_key, &_p)) { \
 
70
        delete (T*)_p;                             \
 
71
      }                                            \
 
72
      delete _hash;                                \
 
73
    }                                              \
 
74
  } while(0)
 
75
 
 
76
#endif