11// !!! DO NOT EDIT - THIS IS AN AUTO-GENERATED FILE !!!
2- // Created by amalgamation.sh on 2024-09-30T21:45:33Z
2+ // Created by amalgamation.sh on 2024-09-20T14:21:41Z
33
44/*
55 * The CRoaring project is under a dual license (Apache/MIT).
@@ -11215,23 +11215,14 @@ bool bitset_inplace_union(bitset_t *CROARING_CBITSET_RESTRICT b1,
1121511215 return true;
1121611216}
1121711217
11218- bool bitset_empty(const bitset_t *bitset) {
11219- for (size_t k = 0; k < bitset->arraysize; k++) {
11220- if (bitset->array[k] != 0) {
11221- return false;
11222- }
11223- }
11224- return true;
11225- }
11226-
1122711218size_t bitset_minimum(const bitset_t *bitset) {
1122811219 for (size_t k = 0; k < bitset->arraysize; k++) {
1122911220 uint64_t w = bitset->array[k];
1123011221 if (w != 0) {
1123111222 return roaring_trailing_zeroes(w) + k * 64;
1123211223 }
1123311224 }
11234- return SIZE_MAX ;
11225+ return 0 ;
1123511226}
1123611227
1123711228bool bitset_grow(bitset_t *bitset, size_t newarraysize) {
@@ -19328,7 +19319,6 @@ void roaring_aligned_free(void* p) { global_memory_hook.aligned_free(p); }
1932819319/* begin file src/roaring.c */
1932919320#include <assert.h>
1933019321#include <inttypes.h>
19331- #include <limits.h>
1933219322#include <stdarg.h>
1933319323#include <stdint.h>
1933419324#include <stdio.h>
@@ -20654,22 +20644,15 @@ uint64_t roaring_bitmap_get_cardinality(const roaring_bitmap_t *r) {
2065420644uint64_t roaring_bitmap_range_cardinality(const roaring_bitmap_t *r,
2065520645 uint64_t range_start,
2065620646 uint64_t range_end) {
20657- if (range_start >= range_end || range_start > (uint64_t)UINT32_MAX + 1) {
20658- return 0;
20659- }
20660- return roaring_bitmap_range_cardinality_closed(r, (uint32_t)range_start,
20661- (uint32_t)(range_end - 1));
20662- }
20663-
20664- uint64_t roaring_bitmap_range_cardinality_closed(const roaring_bitmap_t *r,
20665- uint32_t range_start,
20666- uint32_t range_end) {
2066720647 const roaring_array_t *ra = &r->high_low_container;
2066820648
20669- if (range_start > range_end) {
20649+ if (range_end > UINT32_MAX) {
20650+ range_end = UINT32_MAX + UINT64_C(1);
20651+ }
20652+ if (range_start >= range_end) {
2067020653 return 0;
2067120654 }
20672-
20655+ range_end--; // make range_end inclusive
2067320656 // now we have: 0 <= range_start <= range_end <= UINT32_MAX
2067420657
2067520658 uint16_t minhb = (uint16_t)(range_start >> 16);
@@ -21336,27 +21319,20 @@ static void inplace_fully_flip_container(roaring_array_t *x1_arr, uint16_t hb) {
2133621319roaring_bitmap_t *roaring_bitmap_flip(const roaring_bitmap_t *x1,
2133721320 uint64_t range_start,
2133821321 uint64_t range_end) {
21339- if (range_start >= range_end || range_start > (uint64_t)UINT32_MAX + 1 ) {
21322+ if (range_start >= range_end) {
2134021323 return roaring_bitmap_copy(x1);
2134121324 }
21342- return roaring_bitmap_flip_closed(x1, (uint32_t)range_start,
21343- (uint32_t)(range_end - 1));
21344- }
21345-
21346- roaring_bitmap_t *roaring_bitmap_flip_closed(const roaring_bitmap_t *x1,
21347- uint32_t range_start,
21348- uint32_t range_end) {
21349- if (range_start > range_end) {
21350- return roaring_bitmap_copy(x1);
21325+ if (range_end >= UINT64_C(0x100000000)) {
21326+ range_end = UINT64_C(0x100000000);
2135121327 }
2135221328
2135321329 roaring_bitmap_t *ans = roaring_bitmap_create();
2135421330 roaring_bitmap_set_copy_on_write(ans, is_cow(x1));
2135521331
2135621332 uint16_t hb_start = (uint16_t)(range_start >> 16);
2135721333 const uint16_t lb_start = (uint16_t)range_start; // & 0xFFFF;
21358- uint16_t hb_end = (uint16_t)(range_end >> 16);
21359- const uint16_t lb_end = (uint16_t)range_end; // & 0xFFFF;
21334+ uint16_t hb_end = (uint16_t)(( range_end - 1) >> 16);
21335+ const uint16_t lb_end = (uint16_t)( range_end - 1) ; // & 0xFFFF;
2136021336
2136121337 ra_append_copies_until(&ans->high_low_container, &x1->high_low_container,
2136221338 hb_start, is_cow(x1));
@@ -21397,24 +21373,17 @@ roaring_bitmap_t *roaring_bitmap_flip_closed(const roaring_bitmap_t *x1,
2139721373
2139821374void roaring_bitmap_flip_inplace(roaring_bitmap_t *x1, uint64_t range_start,
2139921375 uint64_t range_end) {
21400- if (range_start >= range_end || range_start > (uint64_t)UINT32_MAX + 1) {
21401- return;
21402- }
21403- roaring_bitmap_flip_inplace_closed(x1, (uint32_t)range_start,
21404- (uint32_t)(range_end - 1));
21405- }
21406-
21407- void roaring_bitmap_flip_inplace_closed(roaring_bitmap_t *x1,
21408- uint32_t range_start,
21409- uint32_t range_end) {
21410- if (range_start > range_end) {
21376+ if (range_start >= range_end) {
2141121377 return; // empty range
2141221378 }
21379+ if (range_end >= UINT64_C(0x100000000)) {
21380+ range_end = UINT64_C(0x100000000);
21381+ }
2141321382
2141421383 uint16_t hb_start = (uint16_t)(range_start >> 16);
2141521384 const uint16_t lb_start = (uint16_t)range_start;
21416- uint16_t hb_end = (uint16_t)(range_end >> 16);
21417- const uint16_t lb_end = (uint16_t)range_end;
21385+ uint16_t hb_end = (uint16_t)(( range_end - 1) >> 16);
21386+ const uint16_t lb_end = (uint16_t)( range_end - 1) ;
2141821387
2141921388 if (hb_start == hb_end) {
2142021389 inplace_flip_container(&x1->high_low_container, hb_start, lb_start,
@@ -22172,28 +22141,15 @@ bool roaring_bitmap_contains(const roaring_bitmap_t *r, uint32_t val) {
2217222141 */
2217322142bool roaring_bitmap_contains_range(const roaring_bitmap_t *r,
2217422143 uint64_t range_start, uint64_t range_end) {
22175- if (range_start >= range_end || range_start > (uint64_t)UINT32_MAX + 1 ) {
22176- return true ;
22144+ if (range_end >= UINT64_C(0x100000000) ) {
22145+ range_end = UINT64_C(0x100000000) ;
2217722146 }
22178- return roaring_bitmap_contains_range_closed(r, (uint32_t)range_start,
22179- (uint32_t)(range_end - 1));
22180- }
22181-
22182- /**
22183- * Check whether a range of values from range_start (included) to range_end
22184- * (included) is present
22185- */
22186- bool roaring_bitmap_contains_range_closed(const roaring_bitmap_t *r,
22187- uint32_t range_start,
22188- uint32_t range_end) {
22189- if (range_start > range_end) {
22190- return true;
22191- } // empty range are always contained!
22192- if (range_end == range_start) {
22147+ if (range_start >= range_end)
22148+ return true; // empty range are always contained!
22149+ if (range_end - range_start == 1)
2219322150 return roaring_bitmap_contains(r, (uint32_t)range_start);
22194- }
2219522151 uint16_t hb_rs = (uint16_t)(range_start >> 16);
22196- uint16_t hb_re = (uint16_t)(range_end >> 16);
22152+ uint16_t hb_re = (uint16_t)(( range_end - 1) >> 16);
2219722153 const int32_t span = hb_re - hb_rs;
2219822154 const int32_t hlc_sz = ra_get_size(&r->high_low_container);
2219922155 if (hlc_sz < span + 1) {
@@ -22205,7 +22161,7 @@ bool roaring_bitmap_contains_range_closed(const roaring_bitmap_t *r,
2220522161 return false;
2220622162 }
2220722163 const uint32_t lb_rs = range_start & 0xFFFF;
22208- const uint32_t lb_re = (range_end & 0xFFFF) + 1;
22164+ const uint32_t lb_re = (( range_end - 1) & 0xFFFF) + 1;
2220922165 uint8_t type;
2221022166 container_t *c =
2221122167 ra_get_container_at_index(&r->high_low_container, (uint16_t)is, &type);
@@ -25556,7 +25512,7 @@ size_t ra_portable_deserialize_size(const char *buf, const size_t maxbytes) {
2555625512 memcpy(&size, buf, sizeof(int32_t));
2555725513 buf += sizeof(uint32_t);
2555825514 }
25559- if (size > (1 << 16) || size < 0 ) {
25515+ if (size > (1 << 16)) {
2556025516 return 0;
2556125517 }
2556225518 char *bitmapOfRunContainers = NULL;
0 commit comments