Removed bool.h, replaced by stdboo.h
[libfirm] / ir / adt / pmap.h
1 /* -------------------------------------------------------------------
2  * $Id$
3  * -------------------------------------------------------------------
4  * Datentyp: Vereinfachte Map (hash-map) zum Speichern von
5  * Zeigern/Adressen -> Zeigern/Adressen.
6  *
7  * Erstellt: Hubert Schmid, 09.06.2002
8  * ---------------------------------------------------------------- */
9
10
11 #ifndef _PMAP_H_
12 #define _PMAP_H_
13
14
15 #include <stdbool.h>
16
17
18 /* Map die Adressen auf Adressen abbildet. Der Vergleich und das
19  * Hashen findet über die Adresse statt. */
20
21 typedef struct pmap pmap;
22
23 typedef struct pmap_entry {
24   void * key;
25   void * value;
26 } pmap_entry;
27
28
29 /* Erzeugt eine neue leere Map. */
30 pmap * pmap_create(void);
31
32 /* Löscht eine Map. */
33 void pmap_destroy(pmap *);
34
35 /* Fügt ein Paar (key,value) in die Map ein. Gibt es bereits einen
36  * Eintrag mit "key" in er Map, so wird der entsprechende "value"
37  * überschrieben. */
38 void pmap_insert(pmap *, void * key, void * value);
39
40 /* Prüft ob ein Eintrag zu "key" exisitiert. */
41 bool pmap_contains(pmap *, void * key);
42
43 /* Gibt den Eintrag zu "key" zurück. */
44 pmap_entry * pmap_find(pmap *, void * key);
45
46 /* Gibt für den Eintrag zu "key" den "value" zurück. */
47 void * pmap_get(pmap *, void * key);
48
49 /* Mit den Funktionen "pmap_first" und "pmap_next" kann man durch die
50  * Map iterieren. Die Funktionen geben einen Zeiger auf einen Eintrag
51  * zurück (key,value). Die Funktionen geben "NULL" zurück, wenn kein
52  * weiterer Eintrag existiert. */
53 pmap_entry * pmap_first(pmap *);
54 pmap_entry * pmap_next(pmap *);
55
56
57 #endif /* _PMAP_H_ */