CRoaring 4.6.1
Roaring bitmaps in C (and C++)
Loading...
Searching...
No Matches
roaring64.h
Go to the documentation of this file.
1#ifndef ROARING64_H
2#define ROARING64_H
3
4#include <stdbool.h>
5#include <stddef.h>
6#include <stdint.h>
7
8#include <roaring/memory.h>
9#include <roaring/portability.h>
10#include <roaring/roaring.h>
11#include <roaring/roaring_types.h>
12
13#ifdef __cplusplus
14extern "C" {
15namespace roaring {
16namespace api {
17#endif
18
19typedef struct roaring64_bitmap_s roaring64_bitmap_t;
20typedef uint64_t roaring64_leaf_t;
21typedef struct roaring64_iterator_s roaring64_iterator_t;
22
38
46
52
63 const roaring64_bitmap_t *src);
64
69 const uint64_t *vals);
70
71#ifdef __cplusplus
78// Use an immediately invoked closure, capturing by reference
79// (in case __VA_ARGS__ refers to context outside the closure)
80// Include a 0 at the beginning of the array to make the array length > 0
81// (zero sized arrays are not valid in standard c/c++)
82#define roaring64_bitmap_from(...) \
83 [&]() { \
84 const uint64_t roaring64_bitmap_from_array[] = {0, __VA_ARGS__}; \
85 return roaring64_bitmap_of_ptr( \
86 (sizeof(roaring64_bitmap_from_array) / \
87 sizeof(roaring64_bitmap_from_array[0])) - \
88 1, \
89 &roaring64_bitmap_from_array[1]); \
90 }()
91#else
98// While __VA_ARGS__ occurs twice in expansion, one of the times is in a sizeof
99// expression, which is an unevaluated context, so it's even safe in the case
100// where expressions passed have side effects (roaring64_bitmap_from(my_func(),
101// ++i))
102// Include a 0 at the beginning of the array to make the array length > 0
103// (zero sized arrays are not valid in standard c/c++)
104#define roaring64_bitmap_from(...) \
105 roaring64_bitmap_of_ptr( \
106 (sizeof((const uint64_t[]){0, __VA_ARGS__}) / sizeof(uint64_t)) - 1, \
107 &((const uint64_t[]){0, __VA_ARGS__})[1])
108#endif
109
117
124 uint64_t step);
125
130
136
152 roaring64_bulk_context_t *context, uint64_t val);
153
163 const uint64_t *vals);
164
169 uint64_t max);
170
175 uint64_t max);
176
181
187
204 uint64_t val);
205
215 const uint64_t *vals);
216
221 uint64_t max);
222
227 uint64_t max);
228
233
238
243 uint64_t max);
244
262 uint64_t val);
263
270bool roaring64_bitmap_select(const roaring64_bitmap_t *r, uint64_t rank,
271 uint64_t *element);
272
283uint64_t roaring64_bitmap_rank(const roaring64_bitmap_t *r, uint64_t val);
284
291 uint64_t *out_index);
292
297
302 uint64_t min, uint64_t max);
303
308 uint64_t min, uint64_t max);
309
314
319
324
330
335
341
347 roaring64_statistics_t *stat);
348
361 const char **reason);
362
367 const roaring64_bitmap_t *r2);
368
373 const roaring64_bitmap_t *r2);
374
380 const roaring64_bitmap_t *r2);
381
394 const roaring64_bitmap_t *r2);
395
400 const roaring64_bitmap_t *r2);
401
410 const roaring64_bitmap_t *r2);
411
416 const roaring64_bitmap_t *r2);
417
422 uint64_t min, uint64_t max);
423
431 const roaring64_bitmap_t *r2);
432
439 const roaring64_bitmap_t *r2);
440
445 const roaring64_bitmap_t *r2);
446
451 const roaring64_bitmap_t *r2);
452
459 const roaring64_bitmap_t *r2);
460
465 const roaring64_bitmap_t *r2);
466
472 const roaring64_bitmap_t *r2);
473
480 const roaring64_bitmap_t *r2);
481
486 const roaring64_bitmap_t *r2);
487
493 const roaring64_bitmap_t *r2);
494
502 uint64_t min, uint64_t max);
503
511 uint64_t min, uint64_t max);
512
519 uint64_t max);
526 uint64_t max);
535 const roaring64_bitmap_t *r, bool positive, uint64_t offset);
536
544 const roaring64_bitmap_t *r, uint64_t offset) {
545 return roaring64_bitmap_add_offset_signed(r, true, offset);
546}
547
555 const roaring64_bitmap_t *r, uint64_t offset) {
556 return roaring64_bitmap_add_offset_signed(r, false, offset);
557}
558
566
586 char *buf);
595 size_t maxbytes);
596
631 size_t maxbytes);
632
640
660 char *buf);
661
678 size_t maxbytes);
679
694 roaring_iterator64 iterator, void *ptr);
695
705 uint64_t *out);
706
716
726 const roaring64_bitmap_t *r);
727
734
741
747
752
758
764
775
786
795 uint64_t val);
796
805 uint64_t count);
806
807#ifdef __cplusplus
808} // extern "C"
809} // namespace roaring
810} // namespace api
811#endif
812
813#endif /* ROARING64_H */
size_t roaring64_bitmap_frozen_size_in_bytes(const roaring64_bitmap_t *r)
void roaring64_bitmap_overwrite(roaring64_bitmap_t *dest, const roaring64_bitmap_t *src)
uint64_t roaring64_bitmap_or_cardinality(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_xor(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
void roaring64_bitmap_add_many(roaring64_bitmap_t *r, size_t n_args, const uint64_t *vals)
roaring64_bitmap_t * roaring64_bitmap_move_from_roaring32(roaring_bitmap_t *r)
bool roaring64_bitmap_intersect(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_of_ptr(size_t n_args, const uint64_t *vals)
void roaring64_bitmap_remove(roaring64_bitmap_t *r, uint64_t val)
roaring64_bitmap_t * roaring64_bitmap_portable_deserialize_safe(const char *buf, size_t maxbytes)
void roaring64_bitmap_xor_inplace(roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_flip_closed(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
void roaring64_bitmap_remove_many(roaring64_bitmap_t *r, size_t n_args, const uint64_t *vals)
roaring64_bitmap_t * roaring64_bitmap_add_offset_signed(const roaring64_bitmap_t *r, bool positive, uint64_t offset)
roaring64_iterator_t * roaring64_iterator_copy(const roaring64_iterator_t *it)
uint64_t roaring64_iterator_value(const roaring64_iterator_t *it)
void roaring64_bitmap_add_range_closed(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
uint64_t roaring64_bitmap_andnot_cardinality(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
void roaring64_iterator_reinit_last(const roaring64_bitmap_t *r, roaring64_iterator_t *it)
void roaring64_bitmap_flip_closed_inplace(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
bool roaring64_bitmap_equals(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
bool roaring64_bitmap_get_index(const roaring64_bitmap_t *r, uint64_t val, uint64_t *out_index)
size_t roaring64_bitmap_portable_size_in_bytes(const roaring64_bitmap_t *r)
bool roaring64_bitmap_run_optimize(roaring64_bitmap_t *r)
bool roaring64_bitmap_add_checked(roaring64_bitmap_t *r, uint64_t val)
void roaring64_bitmap_add(roaring64_bitmap_t *r, uint64_t val)
bool roaring64_bitmap_intersect_with_range(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
roaring64_bitmap_t * roaring64_bitmap_andnot(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
uint64_t roaring64_bitmap_range_cardinality(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
bool roaring64_iterator_advance(roaring64_iterator_t *it)
roaring64_bitmap_t * roaring64_bitmap_or(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_copy(const roaring64_bitmap_t *r)
bool roaring64_bitmap_iterate(const roaring64_bitmap_t *r, roaring_iterator64 iterator, void *ptr)
roaring64_bitmap_t * roaring64_bitmap_frozen_view(const char *buf, size_t maxbytes)
bool roaring64_bitmap_contains_bulk(const roaring64_bitmap_t *r, roaring64_bulk_context_t *context, uint64_t val)
struct roaring64_iterator_s roaring64_iterator_t
Definition roaring64.h:21
void roaring64_bitmap_flip_inplace(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
roaring64_bitmap_t * roaring64_bitmap_and(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
void roaring64_bitmap_statistics(const roaring64_bitmap_t *r, roaring64_statistics_t *stat)
void roaring64_bitmap_andnot_inplace(roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
bool roaring64_bitmap_internal_validate(const roaring64_bitmap_t *r, const char **reason)
void roaring64_bitmap_remove_range_closed(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
uint64_t roaring64_bitmap_range_closed_cardinality(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
uint64_t roaring64_bitmap_and_cardinality(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
static roaring64_bitmap_t * roaring64_bitmap_add_offset(const roaring64_bitmap_t *r, uint64_t offset)
Definition roaring64.h:543
struct roaring64_bitmap_s roaring64_bitmap_t
Definition roaring64.h:19
void roaring64_bitmap_remove_range(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
void roaring64_bitmap_add_bulk(roaring64_bitmap_t *r, roaring64_bulk_context_t *context, uint64_t val)
bool roaring64_bitmap_is_strict_subset(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
void roaring64_bitmap_remove_bulk(roaring64_bitmap_t *r, roaring64_bulk_context_t *context, uint64_t val)
roaring64_iterator_t * roaring64_iterator_create_last(const roaring64_bitmap_t *r)
size_t roaring64_bitmap_portable_serialize(const roaring64_bitmap_t *r, char *buf)
bool roaring64_bitmap_contains(const roaring64_bitmap_t *r, uint64_t val)
void roaring64_bitmap_add_range(roaring64_bitmap_t *r, uint64_t min, uint64_t max)
size_t roaring64_bitmap_portable_deserialize_size(const char *buf, size_t maxbytes)
size_t roaring64_bitmap_frozen_serialize(const roaring64_bitmap_t *r, char *buf)
bool roaring64_iterator_move_equalorlarger(roaring64_iterator_t *it, uint64_t val)
bool roaring64_iterator_has_value(const roaring64_iterator_t *it)
bool roaring64_iterator_previous(roaring64_iterator_t *it)
uint64_t roaring64_bitmap_rank(const roaring64_bitmap_t *r, uint64_t val)
void roaring64_bitmap_to_uint64_array(const roaring64_bitmap_t *r, uint64_t *out)
uint64_t roaring64_bitmap_maximum(const roaring64_bitmap_t *r)
void roaring64_iterator_reinit(const roaring64_bitmap_t *r, roaring64_iterator_t *it)
bool roaring64_bitmap_remove_run_compression(roaring64_bitmap_t *r)
size_t roaring64_bitmap_shrink_to_fit(roaring64_bitmap_t *r)
void roaring64_iterator_free(roaring64_iterator_t *it)
void roaring64_bitmap_and_inplace(roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_create(void)
bool roaring64_bitmap_contains_range(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
uint64_t roaring64_iterator_read(roaring64_iterator_t *it, uint64_t *buf, uint64_t count)
bool roaring64_bitmap_select(const roaring64_bitmap_t *r, uint64_t rank, uint64_t *element)
bool roaring64_bitmap_is_subset(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_from_range(uint64_t min, uint64_t max, uint64_t step)
uint64_t roaring64_bitmap_xor_cardinality(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
roaring64_bitmap_t * roaring64_bitmap_flip(const roaring64_bitmap_t *r, uint64_t min, uint64_t max)
static roaring64_bitmap_t * roaring64_bitmap_sub_offset(const roaring64_bitmap_t *r, uint64_t offset)
Definition roaring64.h:554
uint64_t roaring64_leaf_t
Definition roaring64.h:20
uint64_t roaring64_bitmap_minimum(const roaring64_bitmap_t *r)
void roaring64_bitmap_free(roaring64_bitmap_t *r)
double roaring64_bitmap_jaccard_index(const roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
uint64_t roaring64_bitmap_get_cardinality(const roaring64_bitmap_t *r)
struct roaring64_bulk_context_s roaring64_bulk_context_t
void roaring64_bitmap_or_inplace(roaring64_bitmap_t *r1, const roaring64_bitmap_t *r2)
bool roaring64_bitmap_is_empty(const roaring64_bitmap_t *r)
bool roaring64_bitmap_remove_checked(roaring64_bitmap_t *r, uint64_t val)
void roaring64_bitmap_clear(roaring64_bitmap_t *r)
roaring64_iterator_t * roaring64_iterator_create(const roaring64_bitmap_t *r)
roaring64_leaf_t * leaf
Definition roaring64.h:36