From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 04:57:58 +0200 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- web/server/h2o/libh2o/deps/golombset/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 web/server/h2o/libh2o/deps/golombset/README.md (limited to 'web/server/h2o/libh2o/deps/golombset/README.md') diff --git a/web/server/h2o/libh2o/deps/golombset/README.md b/web/server/h2o/libh2o/deps/golombset/README.md new file mode 100644 index 00000000..5bebfb77 --- /dev/null +++ b/web/server/h2o/libh2o/deps/golombset/README.md @@ -0,0 +1,26 @@ +golombset +=== + +Golombset is a pure-C, header-file-only implementation of Golomb coded set, which is an compressed form of [Bloom filter](https://en.wikipedia.org/Bloom_filter). + +It is compresses every zero-range of Bloom filter (e.g. `0000...1`) using [Golomb coding](https://en.wikipedia.org/wiki/Golomb_coding). +Please refer to [Golomb-coded sets: smaller than Bloom filters](http://giovanni.bajo.it/post/47119962313/golomb-coded-sets-smaller-than-bloom-filters) for more information about the algorithm. + +API +--- + +__`int golombset_encode(unsigned fixed_bits, const unsigned *keys, size_t num_keys, void *buf, size_t *bufsize);`__ + +The function encodes an pre-sorted array of keys into given buffer. + +The function returns zero if successful, or -1 if otherwise (e.g. the size of the buffer is not sufficient). +`bufsize` is an input-output parameter. +Upon calling the function the value of the pointer must specify the size of the buffer being supplied. +When the function returns successfully, the value is updated the length of the bytes actually used to store the encoded data. + +__`int golombset_decode(unsigned fixed_bits, const void *buf, size_t bufsize, unsigned *keys, size_t *num_keys);`__ + +The function decodes the compressed data into an array of keys. + +The function returns zero if successful, or -1 if the size of the `keys` buffer is too small (specified by `*num_keys` when the function is being called). +Upon successful return, the number of keys decoded will be stored in `*num_keys`. -- cgit v1.2.3