24#include "rawspeedconfig.h"
48 :
code(std::move(code_)) {}
51 for (
const auto cValue :
code.Base::codeValues) {
52 if (cValue <= Traits::MaxDiffLength)
54 ThrowRDE(
"Corrupt Huffman code: difference length %u longer than %u",
55 cValue, Traits::MaxDiffLength);
57 assert(maxCodePlusDiffLength() <= 32U);
62 return code.nCodesPerLength.size() - 1;
66 maxCodePlusDiffLength()
const {
68 code.Base::codeValues.cend()));
71 void setup(
bool fullDecode_,
bool fixDNGBug16_) {
72 invariant(!fullDecode_ || Traits::SupportsFullDecode);
74 this->fullDecode = fullDecode_;
75 this->fixDNGBug16 = fixDNGBug16_;
95 return code.symbols == other.
code.symbols &&
96 code.Base::codeValues == other.
code.Base::codeValues;
assert(dim.area() >=area)
CodeTraits< CodeTag > Traits
bool RAWSPEED_READONLY isFullDecode() const
typename AbstractPrefixCode< CodeTag >::Traits Traits
bool RAWSPEED_READONLY handleDNGBug16() const
bool operator==(const AbstractPrefixCodeTranscoder &other) const
typename AbstractPrefixCode< CodeTag >::CodeSymbol CodeSymbol
size_t RAWSPEED_READONLY __attribute__((pure)) maxCodePlusDiffLength() const
AbstractPrefixCodeTranscoder(PrefixCode< CodeTag > code_)
size_t RAWSPEED_READONLY maxCodeLength() const
PrefixCode< CodeTag > code
void verifyCodeValuesAsDiffLengths() const
void setup(bool fullDecode_, bool fixDNGBug16_)
AbstractPrefixCode< CodeTag > Parent