1 /* -------------------------------------------------------------------
3 * -------------------------------------------------------------------
4 * Datentyp: Vereinfachte Menge (hash-set) zum Speichern von
7 * Erstellt: Hubert Schmid, 09.06.2002
8 * ---------------------------------------------------------------- */
18 /* "eset" ist eine Menge von Adressen. Der Vergleich und das Hashen
19 * wird über die Adresse gemacht. "NULL" sollte nicht gespeichert
22 typedef struct eset eset;
25 /* Erzeugt eine neue leere Menge. */
26 eset * eset_create(void);
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 *);
32 /* Löscht die Menge. */
33 void eset_destroy(eset *);
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 *);
39 /* Prüft ob eine Adresse in der Menge enthalten ist. */
40 bool eset_contains(eset *, void *);
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
48 * ACHTUNG: Waehrend dem iterieren darf man keine neuen Elemente
50 void * eset_first(eset *);
51 void * eset_next(eset *);
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);