Signet Forge 0.1.0
C++20 Parquet library with AI-native extensions
DEMO
Loading...
Searching...
No Matches
rle.hpp File Reference

RLE/Bit-Packing Hybrid encoding and decoding (Parquet spec). More...

#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstring>
#include <vector>

Go to the source code of this file.

Classes

class  signet::forge::RleEncoder
 Streaming encoder for the Parquet RLE/Bit-Packing Hybrid scheme. More...
 
class  signet::forge::RleDecoder
 Streaming decoder for the Parquet RLE/Bit-Packing Hybrid scheme. More...
 

Namespaces

namespace  signet
 
namespace  signet::forge
 

Functions

size_t signet::forge::encode_varint (std::vector< uint8_t > &buf, uint64_t value)
 Encode an unsigned varint (LEB128) into a byte buffer.
 
uint64_t signet::forge::decode_varint (const uint8_t *data, size_t &pos, size_t size)
 Decode an unsigned varint (LEB128) from a byte buffer.
 
void signet::forge::bit_pack_8 (std::vector< uint8_t > &out, const uint64_t *values, int bit_width)
 Pack exactly 8 values at the given bit width into a byte buffer.
 
void signet::forge::bit_unpack_8 (const uint8_t *src, uint64_t *values, int bit_width)
 Unpack exactly 8 values at the given bit width from a byte buffer.
 

Detailed Description

RLE/Bit-Packing Hybrid encoding and decoding (Parquet spec).

Implements the RLE/Bit-Packing Hybrid encoding used throughout Parquet for definition levels, repetition levels, boolean columns, and dictionary indices (RLE_DICTIONARY encoding). Provides both streaming (RleEncoder/RleDecoder) and static convenience APIs.

See also
https://parquet.apache.org/documentation/latest/ (Hybrid RLE section)

Definition in file rle.hpp.