mod codecs;
mod wrappers;
pub use codecs::*;
#[cxx::bridge(namespace = "FastPForLib")]
mod ffi {
unsafe extern "C++" {
include!("fastpfor_bridge.h");
type IntegerCODEC;
fn fastbinarypacking8_codec() -> UniquePtr<IntegerCODEC>;
fn fastbinarypacking16_codec() -> UniquePtr<IntegerCODEC>;
fn fastbinarypacking32_codec() -> UniquePtr<IntegerCODEC>;
fn BP32_codec() -> UniquePtr<IntegerCODEC>;
fn fastpfor128_codec() -> UniquePtr<IntegerCODEC>;
fn fastpfor256_codec() -> UniquePtr<IntegerCODEC>;
fn simdfastpfor128_codec() -> UniquePtr<IntegerCODEC>;
fn simdfastpfor256_codec() -> UniquePtr<IntegerCODEC>;
fn simplepfor_codec() -> UniquePtr<IntegerCODEC>;
fn simdsimplepfor_codec() -> UniquePtr<IntegerCODEC>;
fn pfor_codec() -> UniquePtr<IntegerCODEC>;
fn simdpfor_codec() -> UniquePtr<IntegerCODEC>;
fn pfor2008_codec() -> UniquePtr<IntegerCODEC>;
fn simdnewpfor_codec() -> UniquePtr<IntegerCODEC>;
fn newpfor_codec() -> UniquePtr<IntegerCODEC>;
fn optpfor_codec() -> UniquePtr<IntegerCODEC>;
fn simdoptpfor_codec() -> UniquePtr<IntegerCODEC>;
fn varint_codec() -> UniquePtr<IntegerCODEC>;
fn vbyte_codec() -> UniquePtr<IntegerCODEC>;
fn maskedvbyte_codec() -> UniquePtr<IntegerCODEC>;
fn streamvbyte_codec() -> UniquePtr<IntegerCODEC>;
fn varintgb_codec() -> UniquePtr<IntegerCODEC>;
fn simple16_codec() -> UniquePtr<IntegerCODEC>;
fn simple9_codec() -> UniquePtr<IntegerCODEC>;
fn simple9_rle_codec() -> UniquePtr<IntegerCODEC>;
fn simple8b_codec() -> UniquePtr<IntegerCODEC>;
fn simple8b_rle_codec() -> UniquePtr<IntegerCODEC>;
fn simdbinarypacking_codec() -> UniquePtr<IntegerCODEC>;
fn simdgroupsimple_codec() -> UniquePtr<IntegerCODEC>;
fn simdgroupsimple_ringbuf_codec() -> UniquePtr<IntegerCODEC>;
fn copy_codec() -> UniquePtr<IntegerCODEC>;
fn codec_encode32(
codec: &UniquePtr<IntegerCODEC>,
input: &[u32],
output: &mut [u32],
) -> Result<usize>;
fn codec_encode64(
codec: &UniquePtr<IntegerCODEC>,
input: &[u64],
output: &mut [u32],
) -> Result<usize>;
fn codec_decode32(
codec: &UniquePtr<IntegerCODEC>,
input: &[u32],
output: &mut [u32],
) -> Result<usize>;
fn codec_decode64(
codec: &UniquePtr<IntegerCODEC>,
input: &[u32],
output: &mut [u64],
) -> Result<usize>;
}
}