fix rbitset_is_empty; put opening brace of functions on an own line
[libfirm] / include / libfirm / adt / raw_bitset.h
index f14bf85..f6fddd9 100644 (file)
@@ -88,7 +88,8 @@ do { \
  *
  * @return the new bitset
  */
-static inline unsigned *rbitset_obstack_alloc(struct obstack *obst, unsigned size) {
+static inline unsigned *rbitset_obstack_alloc(struct obstack *obst, unsigned size)
+{
        unsigned size_bytes = BITSET_SIZE_BYTES(size);
        unsigned *res = obstack_alloc(obst, size_bytes);
        memset(res, 0, size_bytes);
@@ -105,7 +106,8 @@ static inline unsigned *rbitset_obstack_alloc(struct obstack *obst, unsigned siz
  *
  * @return the new bitset
  */
-static inline unsigned *rbitset_w_size_obstack_alloc(struct obstack *obst, unsigned size) {
+static inline unsigned *rbitset_w_size_obstack_alloc(struct obstack *obst, unsigned size)
+{
        unsigned size_bytes = BITSET_SIZE_BYTES(size);
        unsigned *res = obstack_alloc(obst, size_bytes + sizeof(unsigned));
        *res = size;
@@ -142,10 +144,14 @@ unsigned *rbitset_duplicate_obstack_alloc(struct obstack *obst,
 /**
  * Check if a bitset is empty, ie all bits cleared.
  */
-static inline int rbitset_is_empty(unsigned *bitset, unsigned size) {
-       unsigned i, size_bytes = BITSET_SIZE_BYTES(size);
+static inline int rbitset_is_empty(unsigned *bitset, unsigned size)
+{
+       unsigned size_bytes = BITSET_SIZE_ELEMS(size);
+       unsigned i;
        for (i = 0; i < size_bytes; ++i)
-               if (bitset[i]) return 0;
+               if (bitset[i] != 0)
+                       return 0;
+
        return 1;
 }
 
@@ -155,17 +161,32 @@ static inline int rbitset_is_empty(unsigned *bitset, unsigned size) {
  * @param bitset  the bitset
  * @param pos     the position of the bit to be set
  */
-static inline void rbitset_set(unsigned *bitset, unsigned pos) {
+static inline void rbitset_set(unsigned *bitset, unsigned pos)
+{
        BITSET_ELEM(bitset,pos) |= 1 << (pos % BITS_PER_ELEM);
 }
 
+/**
+ * Set all bits in a given bitset.
+ *
+ * @param bitset  the bitset
+ * @param size    number of bits in the bitset
+ */
+static inline void rbitset_set_all(unsigned *bitset, unsigned size)
+{
+       unsigned size_bytes = BITSET_SIZE_BYTES(size);
+       memset(bitset, ~0, size_bytes);
+}
+
+
 /**
  * Clear a bit at position pos.
  *
  * @param bitset  the bitset
  * @param pos     the position of the bit to be clear
  */
-static inline void rbitset_clear(unsigned *bitset, unsigned pos) {
+static inline void rbitset_clear(unsigned *bitset, unsigned pos)
+{
        BITSET_ELEM(bitset, pos) &= ~(1 << (pos % BITS_PER_ELEM));
 }
 
@@ -175,7 +196,8 @@ static inline void rbitset_clear(unsigned *bitset, unsigned pos) {
  * @param bitset  the bitset
  * @param size    number of bits in the bitset
  */
-static inline void rbitset_clear_all(unsigned *bitset, unsigned size) {
+static inline void rbitset_clear_all(unsigned *bitset, unsigned size)
+{
        unsigned size_bytes = BITSET_SIZE_BYTES(size);
        memset(bitset, 0, size_bytes);
 }
@@ -186,7 +208,8 @@ static inline void rbitset_clear_all(unsigned *bitset, unsigned size) {
  * @param bitset  the bitset
  * @param pos     the position of the bit to check
  */
-static inline int rbitset_is_set(const unsigned *bitset, unsigned pos) {
+static inline int rbitset_is_set(const unsigned *bitset, unsigned pos)
+{
        return BITSET_ELEM(bitset, pos) & (1 << (pos % BITS_PER_ELEM));
 }
 
@@ -196,7 +219,8 @@ static inline int rbitset_is_set(const unsigned *bitset, unsigned pos) {
  * @param bitset  the bitset
  * @param size    size of the bitset
  */
-static inline unsigned rbitset_popcnt(const unsigned *bitset, unsigned size) {
+static inline unsigned rbitset_popcnt(const unsigned *bitset, unsigned size)
+{
        unsigned pos;
        unsigned n = BITSET_SIZE_ELEMS(size);
        unsigned res = 0;
@@ -223,7 +247,8 @@ static inline unsigned rbitset_popcnt(const unsigned *bitset, unsigned size) {
  * @note Does NOT check the size of the bitset, so ensure that a bit
  *       will be found or use a sentinel bit!
  */
-static inline unsigned rbitset_next(const unsigned *bitset, unsigned pos, int set) {
+static inline unsigned rbitset_next(const unsigned *bitset, unsigned pos, int set)
+{
        unsigned p;
        unsigned elem_pos = pos / BITS_PER_ELEM;
        unsigned bit_pos = pos % BITS_PER_ELEM;
@@ -336,6 +361,26 @@ static inline int rbitset_equal(const unsigned *bitset1,
        return memcmp(bitset1, bitset2, BITSET_SIZE_BYTES(size)) == 0;
 }
 
+/**
+ * Tests wether 2 bitsets wether at least 1 bit is set in both.
+ *
+ * @param bitset1  the first bitset
+ * @param bitset2  the second bitset
+ * @param size     size of both bitsets
+ */
+static inline int rbitsets_have_common(const unsigned *bitset1,
+                                       const unsigned *bitset2, size_t size)
+{
+       unsigned i;
+       unsigned n = BITSET_SIZE_ELEMS(size);
+
+       for (i = 0; i < n; ++i) {
+               if ((bitset1[i] & bitset2[i]) != 0)
+                       return 1;
+       }
+       return 0;
+}
+
 /**
  * Copy a raw bitset into another.
  *
@@ -343,7 +388,8 @@ static inline int rbitset_equal(const unsigned *bitset1,
  * @param src   the source set
  * @param size  size of both bitsets
  */
-static inline void rbitset_cpy(unsigned *dst, const unsigned *src, size_t size) {
+static inline void rbitset_copy(unsigned *dst, const unsigned *src, size_t size)
+{
        memcpy(dst, src, BITSET_SIZE_BYTES(size));
 }
 
@@ -352,7 +398,8 @@ static inline void rbitset_cpy(unsigned *dst, const unsigned *src, size_t size)
  *
  * @deprecated
  */
-static inline void rbitset_copy_to_bitset(const unsigned *rbitset, bitset_t *bitset) {
+static inline void rbitset_copy_to_bitset(const unsigned *rbitset, bitset_t *bitset)
+{
        // TODO optimize me (or remove me)
        unsigned i, n = bitset_size(bitset);
        for (i = 0; i < n; ++i) {