16#ifndef RANS_INTERNAL_ENCODE_ENCODERIMPL_H_
17#define RANS_INTERNAL_ENCODE_ENCODERIMPL_H_
21#include <fairlogger/Logger.h>
28template <
typename symbol_T,
typename derived_T>
40 return derived_T::getNstreams();
44 template <
typename Stream_IT>
45 [[nodiscard]]
inline Stream_IT
flush(Stream_IT outputIter)
47 return static_cast<derived_T*
>(
this)->
flush(outputIter);
50 template <
typename Stream_IT>
53 return static_cast<derived_T*
>(
this)->
putSymbols(outputIter, encodeSymbols);
56 template <
typename Stream_IT>
59 return static_cast<derived_T*
>(
this)->
putSymbols(outputIter, encodeSymbols, nActiveStreams);
64 return derived_T::getStreamingLowerBound();
70 return utils::toBits<stream_type>();
common helper classes and functions
Stream_IT putSymbols(Stream_IT outputIter, const symbol_type &encodeSymbols)
std::ptrdiff_t difference_type
static constexpr state_type getStreamingLowerBound() noexcept
Stream_IT putSymbols(Stream_IT outputIter, const symbol_type &encodeSymbols, size_type nActiveStreams)
static constexpr size_type getNstreams() noexcept
static constexpr state_type getStreamOutTypeBits() noexcept
Stream_IT flush(Stream_IT outputIter)
EncoderImpl(size_t symbolTablePrecision) noexcept
size_type mSymbolTablePrecision