|
JASSv2
|
Pack 32-bit integers into 512-bit SIMD words using elias gamma with vbyte for short lists. More...
#include <compress_integer_elias_gamma_simd_vb.h>


Public Member Functions | |
| virtual size_t | encode (void *encoded, size_t encoded_buffer_length, const integer *source, size_t source_integers) |
| Encode a sequence of integers returning the number of bytes used for the encoding, or 0 if the encoded sequence doesn't fit in the buffer. More... | |
| virtual void | decode (integer *decoded, size_t integers_to_decode, const void *source, size_t source_length) |
| Decode a sequence of integers encoded with this codex. More... | |
| virtual long long | compress (unsigned char *destination, long long destination_length, uint32_t *source, long long source_integers) |
| Decode a sequence of integers encoded with this codex, calling add_rsv for each SIMD register. More... | |
| virtual void | decompress (uint32_t *destination, unsigned char *source, long long destination_integers) |
Public Member Functions inherited from compress_integer_variable_byte | |
| compress_integer_variable_byte () | |
| Constructor. | |
| virtual | ~compress_integer_variable_byte () |
| Constructor. | |
Static Protected Member Functions | |
| static uint32_t | compute_selector (const uint8_t *encodings) |
| Computer the selector to use for this encoding. More... | |
| static forceinline uint64_t | find_first_set_bit (uint64_t value) |
| return the position of the least significant set bit (using a single machine code instruction) More... | |
Static Protected Attributes | |
| static const uint32_t | mask_set [33][16] |
Additional Inherited Members | |
Public Types inherited from compress_integer_variable_byte | |
| typedef uint32_t | integer |
Static Public Member Functions inherited from compress_integer_variable_byte | |
| static void | static_decode (integer *decoded, size_t integers_to_decode, const void *source_as_void, size_t source_length) |
| Decode a sequence of integers encoded with this codex. More... | |
| static size_t | bytes_needed_for (integer value) |
| Decode a sequence of integers encoded with this codex, calling add_rsv for each SIMD register. More... | |
| template<typename DESTINATION > | |
| static forceinline void | compress_into (DESTINATION &destination, integer value) |
| Encode the given integer placing the encoding into destination (whose size is not validated). More... | |
| template<typename SOURCE > | |
| static forceinline void | decompress_into (integer *decoded, SOURCE &source) |
| Decode the given integer placing the encoding into destination (whose size is not validated). More... | |
Pack 32-bit integers into 512-bit SIMD words using elias gamma with vbyte for short lists.
see: A. Trotman, K. Lilly (2018), Elias Revisited: Group Elias SIMD Coding, Proceedings of The 23rd Australasian Document Computing Symposium (ADCS 2018)
|
inlinevirtual |
Decode a sequence of integers encoded with this codex, calling add_rsv for each SIMD register.
| integers_to_decode | [in] The minimum number of integers to decode (it may decode more). |
| source | [in] The encoded integers. |
| source_length | [in] The length (in bytes) of the source buffer. |
Reimplemented from compress_integer_variable_byte.
|
staticprotected |
Computer the selector to use for this encoding.
| encodings | [in] The width (in bits) of the (at most) 32 integers. The first integer is at encodngs[0]. leading 0s are used to mark fewer than 32 integers. |
|
virtual |
Decode a sequence of integers encoded with this codex.
| decoded | [out] The sequence of decoded integers. |
| integers_to_decode | [in] The minimum number of integers to decode (it may decode more). |
| source | [in] The encoded integers. |
| source_length | [in] The length (in bytes) of the source buffer. |
Reimplemented from compress_integer_variable_byte.
|
virtual |
Encode a sequence of integers returning the number of bytes used for the encoding, or 0 if the encoded sequence doesn't fit in the buffer.
| encoded | [out] The sequence of bytes that is the encoded sequence. |
| encoded_buffer_length | [in] The length (in bytes) of the output buffer, encoded. |
| source | [in] The sequence of integers to encode. |
| source_integers | [in] The length (in integers) of the source buffer. |
Reimplemented from compress_integer_variable_byte.
|
inlinestaticprotected |
return the position of the least significant set bit (using a single machine code instruction)
| [in] | value | the integer to check. |
1.8.13