CRoaring 4.3.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
57 const uint64_t *vals);
58
59#ifdef __cplusplus
66// Use an immediately invoked closure, capturing by reference
67// (in case __VA_ARGS__ refers to context outside the closure)
68// Include a 0 at the beginning of the array to make the array length > 0
69// (zero sized arrays are not valid in standard c/c++)
70#define roaring64_bitmap_from(...) \
71 [&]() { \
72 const uint64_t roaring64_bitmap_from_array[] = {0, __VA_ARGS__}; \
73 return roaring64_bitmap_of_ptr( \
74 (sizeof(roaring64_bitmap_from_array) / \
75 sizeof(roaring64_bitmap_from_array[0])) - \
76 1, \
77 &roaring64_bitmap_from_array[1]); \
78 }()
79#else
86// While __VA_ARGS__ occurs twice in expansion, one of the times is in a sizeof
87// expression, which is an unevaluated context, so it's even safe in the case
88// where expressions passed have side effects (roaring64_bitmap_from(my_func(),
89// ++i))
90// Include a 0 at the beginning of the array to make the array length > 0
91// (zero sized arrays are not valid in standard c/c++)
92#define roaring64_bitmap_from(...) \
93 roaring64_bitmap_of_ptr( \
94 (sizeof((const uint64_t[]){0, __VA_ARGS__}) / sizeof(uint64_t)) - 1, \
95 &((const uint64_t[]){0, __VA_ARGS__})[1])
96#endif
97
105
112 uint64_t step);
113
118
124
140 roaring64_bulk_context_t *context, uint64_t val);
141
151 const uint64_t *vals);
152
157 uint64_t max);
158
163 uint64_t max);
164
169
175
192 uint64_t val);
193
203 const uint64_t *vals);
204
209 uint64_t max);
210
215 uint64_t max);
216
221
226
231 uint64_t max);
232
250 uint64_t val);
251
258bool roaring64_bitmap_select(const roaring64_bitmap_t *r, uint64_t rank,
259 uint64_t *element);
260
271uint64_t roaring64_bitmap_rank(const roaring64_bitmap_t *r, uint64_t val);
272
279 uint64_t *out_index);
280
285
290 uint64_t min, uint64_t max);
291
296 uint64_t min, uint64_t max);
297
302
307
312
317
323
329 roaring64_statistics_t *stat);
330
343 const char **reason);
344
349 const roaring64_bitmap_t *r2);
350
355 const roaring64_bitmap_t *r2);
356
362 const roaring64_bitmap_t *r2);
363
376 const roaring64_bitmap_t *r2);
377
382 const roaring64_bitmap_t *r2);
383
392 const roaring64_bitmap_t *r2);
393
398 const roaring64_bitmap_t *r2);
399
404 uint64_t min, uint64_t max);
405
413 const roaring64_bitmap_t *r2);
414
421 const roaring64_bitmap_t *r2);
422
427 const roaring64_bitmap_t *r2);
428
433 const roaring64_bitmap_t *r2);
434
441 const roaring64_bitmap_t *r2);
442
447 const roaring64_bitmap_t *r2);
448
454 const roaring64_bitmap_t *r2);
455
462 const roaring64_bitmap_t *r2);
463
468 const roaring64_bitmap_t *r2);
469
475 const roaring64_bitmap_t *r2);
476
484 uint64_t min, uint64_t max);
485
493 uint64_t min, uint64_t max);
494
501 uint64_t max);
508 uint64_t max);
516
536 char *buf);
545 size_t maxbytes);
546
581 size_t maxbytes);
582
590
610 char *buf);
611
628 size_t maxbytes);
629
644 roaring_iterator64 iterator, void *ptr);
645
655 uint64_t *out);
656
666
676 const roaring64_bitmap_t *r);
677
684
691
697
702
708
714
725
736
745 uint64_t val);
746
755 uint64_t count);
756
757#ifdef __cplusplus
758} // extern "C"
759} // namespace roaring
760} // namespace api
761#endif
762
763#endif /* ROARING64_H */
size_t roaring64_bitmap_frozen_size_in_bytes(const roaring64_bitmap_t *r)
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_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)
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)
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)
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