used new new_type_frame() to generate frame types
[libfirm] / ir / ana2 / qset.h
index e43c6c5..30ebde0 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- c -*- */
 
 /*
- * Time-stamp: <08.11.2004 13:29:19h liekweg>
+ * Time-stamp: <30.11.2004 14:16:04h liekweg>
  * Project:     libFIRM
  * File name:   ir/ana2/qset.h
  * Purpose:     yet another set implementation
 /* typedef unsigned int sortable_t; */
 typedef void* sortable_t;
 
+struct obstack;                 /* forward decl */
+
 typedef struct qset_str
 {
+  struct obstack *obst;
   sortable_t *values;
   int n_slots;
   int n_elems;
   int is_sorted;
   int cursor;                   /* for qset_start/qset_next */
+  int id;
 } qset_t;
 
 
 /* QSET INTERFACE */
 
-/* Allocate a new qset with initial space for up to n_elems. */
-qset_t *qset_new (const int);
+/* Allocate a new qset with initial space for up to n_elems.
+   If a non-NULL obstack is given, it is used for all allocations of this qset
+   and must be initialised and deleted by the user of the qset. */
+qset_t *qset_new (const int, struct obstack*);
 
 /* Sort the entries of the given qset. */
 void qset_sort (qset_t*);
@@ -57,11 +63,12 @@ int qset_contains (qset_t*, sortable_t);
 /* Delete the given value from the given qset (if it exists) */
 void qset_remove (qset_t*, sortable_t);
 
-/* Insert the given elem into the given qset. */
-void qset_insert (qset_t*, sortable_t);
+/* Insert the given elem into the given qset; return nonzero iff any involved values change. */
+int qset_insert (qset_t*, sortable_t);
 
-/* Insert all elems of qset2 into qset1. qset2 is deleted. */
-void qset_insert_all (qset_t*, qset_t*);
+/* Insert all elems of qset2 into qset1. qset2 is deleted; return
+   nonzero iff any involved values change. */
+int qset_insert_all (qset_t*, qset_t*);
 
 /* Compare two qsets. */
 int qset_compare (qset_t*, qset_t*);
@@ -90,6 +97,15 @@ sortable_t *qset_next (qset_t*);
 
 /*
  $Log$
+ Revision 1.5  2004/11/30 14:47:11  liekweg
+ insert report changes
+
+ Revision 1.4  2004/11/24 14:53:56  liekweg
+ Bugfixes
+
+ Revision 1.3  2004/11/18 16:35:46  liekweg
+ Added unique ids for debugging
+
  Revision 1.2  2004/11/08 12:32:00  liekweg
  Moved q_* methods into private section