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)
Bitmapset * bms_replace_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_difference(const Bitmapset *a, const Bitmapset *b)
int bms_prev_member(const Bitmapset *a, int prevbit)
Bitmapset * bms_make_singleton(int x)
Bitmapset * bms_int_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_intersect(const Bitmapset *a, const Bitmapset *b)
uint32 bitmap_hash(const void *key, Size keysize)
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)
Bitmapset * bms_del_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_add_range(Bitmapset *a, int lower, int upper)
Bitmapset * bms_del_member(Bitmapset *a, int x)
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_add_member(Bitmapset *a, int x)
Bitmapset * bms_add_members(Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_union(const Bitmapset *a, const Bitmapset *b)
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)
bool bms_get_singleton_member(const Bitmapset *a, int *member)
Bitmapset * bms_join(Bitmapset *a, Bitmapset *b)
bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
struct Bitmapset Bitmapset
Bitmapset * bms_copy(const Bitmapset *a)
#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]