Skip to content

Commit a572ab7

Browse files
committed
Version v4.1.6
1 parent 8dd63e5 commit a572ab7

File tree

3 files changed

+34
-117
lines changed

3 files changed

+34
-117
lines changed

pyroaring/croaring_version.pxi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__croaring_version__ = "v4.2.0"
1+
__croaring_version__ = "v4.1.6"

pyroaring/roaring.c

Lines changed: 26 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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-
1122711218
size_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

1123711228
bool 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) {
2065420644
uint64_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) {
2133621319
roaring_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

2139821374
void 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
*/
2217322142
bool 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;

pyroaring/roaring.h

Lines changed: 7 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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).
@@ -59,11 +59,11 @@
5959
// /include/roaring/roaring_version.h automatically generated by release.py, do not change by hand
6060
#ifndef ROARING_INCLUDE_ROARING_VERSION
6161
#define ROARING_INCLUDE_ROARING_VERSION
62-
#define ROARING_VERSION "4.2.0"
62+
#define ROARING_VERSION "4.1.6"
6363
enum {
6464
ROARING_VERSION_MAJOR = 4,
65-
ROARING_VERSION_MINOR = 2,
66-
ROARING_VERSION_REVISION = 0
65+
ROARING_VERSION_MINOR = 1,
66+
ROARING_VERSION_REVISION = 6
6767
};
6868
#endif // ROARING_INCLUDE_ROARING_VERSION
6969
// clang-format on/* end file include/roaring/roaring_version.h */
@@ -967,10 +967,7 @@ inline bool bitset_get(const bitset_t *bitset, size_t i) {
967967
/* Count number of bits set. */
968968
size_t bitset_count(const bitset_t *bitset);
969969

970-
/* Returns true if no bit is set. */
971-
bool bitset_empty(const bitset_t *bitset);
972-
973-
/* Find the index of the first bit set. Or SIZE_MAX if the bitset is empty. */
970+
/* Find the index of the first bit set. Or zero if the bitset is empty. */
974971
size_t bitset_minimum(const bitset_t *bitset);
975972

976973
/* Find the index of the last bit set. Or zero if the bitset is empty. */
@@ -1517,9 +1514,7 @@ void roaring_bitmap_add_range_closed(roaring_bitmap_t *r, uint32_t min,
15171514
*/
15181515
inline void roaring_bitmap_add_range(roaring_bitmap_t *r, uint64_t min,
15191516
uint64_t max) {
1520-
if (max <= min || min > (uint64_t)UINT32_MAX + 1) {
1521-
return;
1522-
}
1517+
if (max <= min) return;
15231518
roaring_bitmap_add_range_closed(r, (uint32_t)min, (uint32_t)(max - 1));
15241519
}
15251520

@@ -1539,9 +1534,7 @@ void roaring_bitmap_remove_range_closed(roaring_bitmap_t *r, uint32_t min,
15391534
*/
15401535
inline void roaring_bitmap_remove_range(roaring_bitmap_t *r, uint64_t min,
15411536
uint64_t max) {
1542-
if (max <= min || min > (uint64_t)UINT32_MAX + 1) {
1543-
return;
1544-
}
1537+
if (max <= min) return;
15451538
roaring_bitmap_remove_range_closed(r, (uint32_t)min, (uint32_t)(max - 1));
15461539
}
15471540

@@ -1569,14 +1562,6 @@ bool roaring_bitmap_contains(const roaring_bitmap_t *r, uint32_t val);
15691562
bool roaring_bitmap_contains_range(const roaring_bitmap_t *r,
15701563
uint64_t range_start, uint64_t range_end);
15711564

1572-
/**
1573-
* Check whether a range of values from range_start (included)
1574-
* to range_end (included) is present
1575-
*/
1576-
bool roaring_bitmap_contains_range_closed(const roaring_bitmap_t *r,
1577-
uint32_t range_start,
1578-
uint32_t range_end);
1579-
15801565
/**
15811566
* Check if an items is present, using context from a previous insert or search
15821567
* for speed optimization.
@@ -1608,12 +1593,6 @@ uint64_t roaring_bitmap_range_cardinality(const roaring_bitmap_t *r,
16081593
uint64_t range_start,
16091594
uint64_t range_end);
16101595

1611-
/**
1612-
* Returns the number of elements in the range [range_start, range_end].
1613-
*/
1614-
uint64_t roaring_bitmap_range_cardinality_closed(const roaring_bitmap_t *r,
1615-
uint32_t range_start,
1616-
uint32_t range_end);
16171596
/**
16181597
* Returns true if the bitmap is empty (cardinality is zero).
16191598
*/
@@ -2015,14 +1994,6 @@ void roaring_bitmap_lazy_xor_inplace(roaring_bitmap_t *r1,
20151994
roaring_bitmap_t *roaring_bitmap_flip(const roaring_bitmap_t *r1,
20161995
uint64_t range_start, uint64_t range_end);
20171996

2018-
/**
2019-
* Compute the negation of the bitmap in the interval [range_start, range_end].
2020-
* The number of negated values is range_end - range_start + 1.
2021-
* Areas outside the range are passed through unchanged.
2022-
*/
2023-
roaring_bitmap_t *roaring_bitmap_flip_closed(const roaring_bitmap_t *x1,
2024-
uint32_t range_start,
2025-
uint32_t range_end);
20261997
/**
20271998
* compute (in place) the negation of the roaring bitmap within a specified
20281999
* interval: [range_start, range_end). The number of negated values is
@@ -2032,16 +2003,6 @@ roaring_bitmap_t *roaring_bitmap_flip_closed(const roaring_bitmap_t *x1,
20322003
void roaring_bitmap_flip_inplace(roaring_bitmap_t *r1, uint64_t range_start,
20332004
uint64_t range_end);
20342005

2035-
/**
2036-
* compute (in place) the negation of the roaring bitmap within a specified
2037-
* interval: [range_start, range_end]. The number of negated values is
2038-
* range_end - range_start + 1.
2039-
* Areas outside the range are passed through unchanged.
2040-
*/
2041-
void roaring_bitmap_flip_inplace_closed(roaring_bitmap_t *r1,
2042-
uint32_t range_start,
2043-
uint32_t range_end);
2044-
20452006
/**
20462007
* Selects the element at index 'rank' where the smallest element is at index 0.
20472008
* If the size of the roaring bitmap is strictly greater than rank, then this

0 commit comments

Comments
 (0)