4 * Time-stamp: <23.11.2004 13:23:46h liekweg>
6 * File name: ir/ana2/qset.h
7 * Purpose: yet another set implementation
10 * Created: Mon 18 Oct 2004
12 * Copyright: (c) 1999-2004 Universität Karlsruhe
13 * Licence: This file is protected by GPL - GNU GENERAL PUBLIC LICENSE.
22 # endif /* nof defined TRUE */
24 /* define this as needed */
25 # define COMPARE(A,B) (A<B)
26 # define EQUAL(A,B) (A==B)
27 /* typedef unsigned int sortable_t; */
28 typedef void* sortable_t;
30 struct obstack; /* forward decl */
32 typedef struct qset_str
39 int cursor; /* for qset_start/qset_next */
46 /* Allocate a new qset with initial space for up to n_elems.
47 If a non-NULL obstack is given, it is used for all allocations of this qset
48 and must be initialised and deleted by the user of the qset. */
49 qset_t *qset_new (const int, struct obstack*);
51 /* Sort the entries of the given qset. */
52 void qset_sort (qset_t*);
54 /* Compact a qset to take up no more space than required. */
55 void qset_compact (qset_t*);
57 /* Free the memory associated with the given qset */
58 void qset_delete (qset_t*);
60 /* Test whether the given qset contains the given value. */
61 int qset_contains (qset_t*, sortable_t);
63 /* Delete the given value from the given qset (if it exists) */
64 void qset_remove (qset_t*, sortable_t);
66 /* Insert the given elem into the given qset. */
67 void qset_insert (qset_t*, sortable_t);
69 /* Insert all elems of qset2 into qset1. qset2 is deleted. */
70 void qset_insert_all (qset_t*, qset_t*);
72 /* Compare two qsets. */
73 int qset_compare (qset_t*, qset_t*);
75 /* Returns the union of two qsets. */
76 qset_t *qset_union (qset_t *qset1, qset_t *qset2);
78 /* Report the size of the given qset. */
79 int qset_size (qset_t *qset);
81 /* Print the given qset to the given stream. */
82 void qset_print (qset_t*, FILE*);
84 /* Check wether the given qset is empty */
85 int qset_is_empty (qset_t*);
90 /* initialise the iteration, return the first element */
91 sortable_t *qset_start (qset_t*);
92 /* step to the next element, return NULL iff no more elems are available */
93 sortable_t *qset_next (qset_t*);
95 #endif /* def _QSET_H_ */
99 Revision 1.4 2004/11/24 14:53:56 liekweg
102 Revision 1.3 2004/11/18 16:35:46 liekweg
103 Added unique ids for debugging
105 Revision 1.2 2004/11/08 12:32:00 liekweg
106 Moved q_* methods into private section
108 Revision 1.1 2004/11/04 14:55:13 liekweg