Typo fixed.
[libfirm] / ir / adt / eset.h
1 /* -------------------------------------------------------------------
2  * $Id$
3  * -------------------------------------------------------------------
4  * Datentyp: Vereinfachte Menge (hash-set) zum Speichern von
5  * Zeigern/Adressen.
6  *
7  * Erstellt: Hubert Schmid, 09.06.2002
8  * ---------------------------------------------------------------- */
9
10
11 #ifndef _ESET_H_
12 #define _ESET_H_
13
14
15 #include <stdbool.h>
16
17
18 /* "eset" ist eine Menge von Adressen. Der Vergleich und das Hashen
19  * wird über die Adresse gemacht. "NULL" sollte nicht gespeichert
20  * werden. */
21
22 typedef struct eset eset;
23
24
25 /* Erzeugt eine neue leere Menge. */
26 eset * eset_create(void);
27
28 /* Erzeugt eine Kopie der übergebenen Menge. Das Kopieren funktioniert
29  * nur, wenn in der übergebenen Menge "NULL" nicht enthalten ist. */
30 eset * eset_copy(eset *);
31
32 /* Löscht die Menge. */
33 void eset_destroy(eset *);
34
35 /* Fügt ein Adresse in die Menge ein, wenn es nicht bereits in der
36  * Menge enthalten ist. */
37 void eset_insert(eset *, void *);
38
39 /* Prüft ob eine Adresse in der Menge enthalten ist. */
40 bool eset_contains(eset *, void *);
41
42 /* Mit den Funktionen "eset_first" und "eset_next" kann man durch die
43  * Menge iterieren. Die Funktion gibt jeweils die Adresse zurück. Wenn
44  * keine weiteren Adressen in der Menge sind, geben die Funktionen
45  * "NULL" zurück. Warnung: Man sollte deshalb "NULL" nicht in der
46  * Menge speichern, weil man sonst nicht durch die Menge iterieren
47  * kann.
48  * ACHTUNG: Waehrend dem iterieren darf man keine neuen Elemente
49  * einfuergen!! */
50 void * eset_first(eset *);
51 void * eset_next(eset *);
52
53 /* Fügt alle Elemente der Menge "source" der Menge "target"
54  * hinzu. Diese Funktion funktioniert nur, wenn in der Menge "source"
55  * die "NULL"-Adresse nicht enthalten ist. */
56 void eset_insert_all(eset * target, eset * source);
57
58
59 #endif /* _ESET_H_ */