//===----------------------------------------------------------------------===// // DuckDB // // duckdb/common/patas/patas.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/storage/compression/patas/algorithm/patas.hpp" #include "duckdb/common/assert.hpp" #include "duckdb/common/exception.hpp" #include "duckdb/common/helper.hpp" #include "duckdb/common/limits.hpp" #include "duckdb/function/compression_function.hpp" namespace duckdb { using byte_index_t = uint32_t; //! FIXME: replace ChimpType with this template struct FloatingToExact {}; template <> struct FloatingToExact { typedef uint64_t type; }; template <> struct FloatingToExact { typedef uint32_t type; }; template struct PatasState { public: using EXACT_TYPE = typename FloatingToExact::type; PatasState(void *state_p = nullptr) : data_ptr(state_p), patas_state() { } //! The Compress/Analyze State void *data_ptr; patas::PatasCompressionState patas_state; public: void AssignDataBuffer(uint8_t *data_out) { patas_state.SetOutputBuffer(data_out); } template bool Update(T uncompressed_value, bool is_valid) { OP::template Operation(uncompressed_value, is_valid, data_ptr); return true; } }; } // namespace duckdb