35 #if SIZEOF_VOID_P >= 8
37 #define BITS_PER_BITMAPWORD 64
43 #define BITS_PER_BITMAPWORD 32
51 pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble)
77 #if BITS_PER_BITMAPWORD == 32
78 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w)
79 #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w)
80 #define bmw_popcount(w) pg_popcount32(w)
81 #elif BITS_PER_BITMAPWORD == 64
82 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w)
83 #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w)
84 #define bmw_popcount(w) pg_popcount64(w)
86 #error "invalid BITS_PER_BITMAPWORD"
118 #define bms_is_empty(a) ((a) == NULL)
int bms_prev_member(const Bitmapset *a, int prevbit)
uint32 bitmap_hash(const void *key, Size keysize)
Bitmapset * bms_join(Bitmapset *a, Bitmapset *b)
bool bms_equal(const Bitmapset *a, const Bitmapset *b)
BMS_Comparison bms_subset_compare(const Bitmapset *a, const Bitmapset *b)
int bms_next_member(const Bitmapset *a, int prevbit)
uint32 bms_hash_value(const Bitmapset *a)
bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
int bms_singleton_member(const Bitmapset *a)
void bms_free(Bitmapset *a)
int bms_num_members(const Bitmapset *a)
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_make_singleton(int x)
Bitmapset * bms_add_member(Bitmapset *a, int x)
Bitmapset * bms_union(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_difference(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_intersect(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_add_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_del_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_replace_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_int_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_del_member(Bitmapset *a, int x)
int bitmap_match(const void *key1, const void *key2, Size keysize)
BMS_Membership bms_membership(const Bitmapset *a)
int bms_member_index(Bitmapset *a, int x)
bool bms_overlap(const Bitmapset *a, const Bitmapset *b)
bool bms_overlap_list(const Bitmapset *a, const struct List *b)
int bms_compare(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_copy(const Bitmapset *a)
bool bms_get_singleton_member(const Bitmapset *a, int *member)
Bitmapset * bms_add_range(Bitmapset *a, int lower, int upper)
bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
struct Bitmapset Bitmapset
#define FLEXIBLE_ARRAY_MEMBER
Datum lower(PG_FUNCTION_ARGS)
Datum upper(PG_FUNCTION_ARGS)
pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble) NodeTag type
bitmapword words[FLEXIBLE_ARRAY_MEMBER]