summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <aelkin@dl145j.mysql.com>2007-12-12 11:21:54 +0100
committerunknown <aelkin@dl145j.mysql.com>2007-12-12 11:21:54 +0100
commit230f589f51ae1696443fffddd24f481d201fdef2 (patch)
tree26a6be0967fa78ae52464242a4192ad14e512830 /include
parentd27196b43bfad852175774bd8291a4c89b1ef6c9 (diff)
parent96a51b7f39be9bd664a8d242670ad1d6522c2b83 (diff)
downloadmariadb-git-230f589f51ae1696443fffddd24f481d201fdef2.tar.gz
Merge elkin@aelkin2.mysql.internal:MySQL/TEAM/FIXES/5.1/bug31609-conflict_detection
into dl145j.mysql.com:/tmp/andrei/bug31552 mysql-test/extra/rpl_tests/rpl_row_basic.test: Auto merged mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result: Auto merged mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result: Auto merged mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result: Auto merged mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result: Auto merged mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/set_var.h: Auto merged sql/share/errmsg.txt: Auto merged sql/sql_class.h: Auto merged sql/log_event.cc: manual merge
Diffstat (limited to 'include')
-rw-r--r--include/my_bitmap.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/my_bitmap.h b/include/my_bitmap.h
index ab69b2d671d..78642df3362 100644
--- a/include/my_bitmap.h
+++ b/include/my_bitmap.h
@@ -159,6 +159,22 @@ static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2)
#define bitmap_set_all(MAP) \
(memset((MAP)->bitmap, 0xFF, 4*no_words_in_map((MAP))))
+/**
+ check, set and clear a bit of interest of an integer.
+
+ If the bit is out of range @retval -1. Otherwise
+ bit_is_set @return 0 or 1 reflecting the bit is set or not;
+ bit_do_set @return 1 (bit is set 1)
+ bit_do_clear @return 0 (bit is cleared to 0)
+*/
+
+#define bit_is_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
+ (((I) & (ULL(1) << (B))) == 0 ? 0 : 1) : -1)
+#define bit_do_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
+ ((I) |= (ULL(1) << (B)), 1) : -1)
+#define bit_do_clear(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
+ ((I) &= ~(ULL(1) << (B)), 0) : -1)
+
#ifdef __cplusplus
}
#endif