Skip to content

Commit

Permalink
Add virtual constructor to block codecs
Browse files Browse the repository at this point in the history
We construct codecs as a shared pointer to `BlockCodec` and without a
virtual destructor, only the destructor of the base class is called.
This has not caused any real issues because the codecs do not do any
memory management, but this is now for correctness and future-proofing.

Signed-off-by: Michal Siedlaczek <michal@siedlaczek.me>
  • Loading branch information
elshize committed Jan 7, 2025
1 parent efb53c2 commit 763be9f
Show file tree
Hide file tree
Showing 12 changed files with 25 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ Checks: |
-fuchsia-trailing-return,
-llvm-header-guard,
-google-runtime-references
CheckOptions:
- key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
value: true
2 changes: 2 additions & 0 deletions include/pisa/codec/block_codec.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ namespace pisa {
*/
class BlockCodec {
public:
virtual ~BlockCodec() = default;

/**
* Encodes a list of `n` unsigned integers and appends them to the output buffer.
*/
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/interpolative.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class InterpolativeBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_interpolative";

virtual ~InterpolativeBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/maskedvbyte.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class MaskedVByteBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_maskedvbyte";

virtual ~MaskedVByteBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/optpfor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class OptPForBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_optpfor";

virtual ~OptPForBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/qmx.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class QmxBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_qmx";

virtual ~QmxBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;

Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/simdbp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class SimdBpBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_simdbp";

virtual ~SimdBpBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/simple16.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ class Simple16BlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_simple16";

virtual ~Simple16BlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/simple8b.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ class Simple8bBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_simple8b";

virtual ~Simple8bBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/streamvbyte.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class StreamVByteBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_streamvbyte";

virtual ~StreamVByteBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/varint_g8iu.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ class VarintG8IUBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_varintg8iu";

virtual ~VarintG8IUBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down
2 changes: 2 additions & 0 deletions include/pisa/codec/varintgb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ class VarintGbBlockCodec: public BlockCodec {
public:
constexpr static std::string_view name = "block_varintgb";

virtual ~VarintGbBlockCodec() = default;

void encode(uint32_t const* in, uint32_t sum_of_values, size_t n, std::vector<uint8_t>& out)
const override;
uint8_t const*
Expand Down

0 comments on commit 763be9f

Please sign in to comment.