+2001-06-16 Daniel Berlin <dan@cgsoftware.com>
+
+ * bitmap.h: Add dump_bitmap, bitmap_zero, bitmap_union_of_diffs,
+ bitmap_a_or_b, bitmap_a_and_b, bitmap_first_set_bit,
+ bitmap_last_set_bit. All for compatibility with sbitmap's.
+
+ *bitmap.c (bitmap_zero): New function.
+ (bitmap_union_of_diffs): New function.
+ (bitmap_first_set_bit): New function.
+ (bitmap_last_set_bit): New function.
+
2001-06-16 Neil Booth <neil@daikokuya.demon.co.uk>
* cpp.texi, invoke.texi: Update.
case BITMAP_IOR:
DOIT (|);
break;
-
+ case BITMAP_IOR_COMPL:
+ DOIT (|~);
+ break;
case BITMAP_XOR:
DOIT (^);
break;
obstack_free (&bitmap_obstack, NULL);
}
}
+
+int
+bitmap_union_of_diff (dst, a, b, c)
+ bitmap dst;
+ bitmap a;
+ bitmap b;
+ bitmap c;
+{
+ int changed = 0;
+ bitmap temp = BITMAP_ALLOCA ();
+ bitmap_operation (temp, b, c, BITMAP_AND_COMPL);
+ changed = bitmap_operation (dst, temp, a, BITMAP_IOR);
+ return changed;
+}
+
+int
+bitmap_first_set_bit (a)
+ bitmap a;
+{
+ int i;
+ EXECUTE_IF_SET_IN_BITMAP (a, 0, i, return i;);
+ return -1;
+}
+
+int
+bitmap_last_set_bit (a)
+ bitmap a;
+{
+ int i;
+ EXECUTE_IF_SET_IN_BITMAP (a, 0, i, );
+ if (bitmap_bit_p (a, i))
+ return i;
+ return -1;
+}
bitmap_element *first; /* First element in linked list. */
bitmap_element *current; /* Last element looked at. */
unsigned int indx; /* Index of last element looked at. */
+
} bitmap_head, *bitmap;
/* Enumeration giving the various operations we support. */
BITMAP_AND, /* TO = FROM1 & FROM2 */
BITMAP_AND_COMPL, /* TO = FROM1 & ~ FROM2 */
BITMAP_IOR, /* TO = FROM1 | FROM2 */
- BITMAP_XOR /* TO = FROM1 ^ FROM2 */
+ BITMAP_XOR, /* TO = FROM1 ^ FROM2 */
+ BITMAP_IOR_COMPL /* TO = FROM1 | ~FROM2 */
};
/* Global data */
/* Release all memory held by bitmaps. */
extern void bitmap_release_memory PARAMS ((void));
+/* A few compatibility/functions macros for compatibility with sbitmaps */
+#define dump_bitmap(file, bitmap) bitmap_print (file, bitmap, "", "\n")
+#define bitmap_zero(a) bitmap_clear (a)
+#define bitmap_a_or_b(a,b,c) bitmap_operation (a, b, c, BITMAP_IOR)
+#define bitmap_a_and_b(a,b,c) bitmap_operation (a, b, c, BITMAP_AND)
+extern int bitmap_union_of_diff PARAMS((bitmap, bitmap, bitmap, bitmap));
+extern int bitmap_first_set_bit PARAMS((bitmap));
+extern int bitmap_last_set_bit PARAMS((bitmap));
+
/* Allocate a bitmap with oballoc. */
#define BITMAP_OBSTACK_ALLOC(OBSTACK) \
bitmap_initialize ((bitmap) obstack_alloc (OBSTACK, sizeof (bitmap_head)))