diff options
author | tulin@dl145b.mysql.com <> | 2005-07-19 21:56:10 +0200 |
---|---|---|
committer | tulin@dl145b.mysql.com <> | 2005-07-19 21:56:10 +0200 |
commit | a6c21a079163d2d09163cb4084ada38f4ddac929 (patch) | |
tree | 91e9f17b6b183df5ad37be93a13365d7d0f0d7f8 /sql/sql_bitmap.h | |
parent | 519c5564b15cf4b88719eb0e4cb4dc5247891425 (diff) | |
parent | e3af1b6ec6ecd95b6f42192c75af08fcc7c3618a (diff) | |
download | mariadb-git-a6c21a079163d2d09163cb4084ada38f4ddac929.tar.gz |
merge
Diffstat (limited to 'sql/sql_bitmap.h')
-rw-r--r-- | sql/sql_bitmap.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h index 00f38895fd6..b2994da71f7 100644 --- a/sql/sql_bitmap.h +++ b/sql/sql_bitmap.h @@ -51,6 +51,14 @@ public: bitmap_init(&map2, (uint32 *)&map2buff, sizeof(ulonglong)*8, 0); bitmap_intersect(&map, &map2); } + /* Use highest bit for all bits above sizeof(ulonglong)*8. */ + void intersect_extended(ulonglong map2buff) + { + intersect(map2buff); + if (map.bitmap_size > sizeof(ulonglong)) + bitmap_set_above(&map, sizeof(ulonglong), + test(map2buff & (LL(1) << (sizeof(ulonglong) * 8 - 1)))); + } void subtract(Bitmap& map2) { bitmap_subtract(&map, &map2.map); } void merge(Bitmap& map2) { bitmap_union(&map, &map2.map); } my_bool is_set(uint n) const { return bitmap_is_set(&map, n); } @@ -116,6 +124,7 @@ public: void clear_all() { map=(ulonglong)0; } void intersect(Bitmap<64>& map2) { map&= map2.map; } void intersect(ulonglong map2) { map&= map2; } + void intersect_extended(ulonglong map2) { map&= map2; } void subtract(Bitmap<64>& map2) { map&= ~map2.map; } void merge(Bitmap<64>& map2) { map|= map2.map; } my_bool is_set(uint n) const { return test(map & (((ulonglong)1) << n)); } |