32template <
typename CodeTag>
51 std::vector<CodeValueTy> codeValues_)
52 :
Base(std::move(codeValues_)),
symbols(std::move(symbols_)) {
59 assert(
s.code_len > 0 &&
s.code_len <= Traits::MaxCodeLenghtBits);
72 unsigned maxCodes = 2;
78 if (nCodes > maxCodes)
79 ThrowRDE(
"Too many codes of of length %lu.", codeLen);
88 if (std::adjacent_find(
91 return !std::less_equal<>()(lhs.code_len, rhs.code_len);
93 ThrowRDE(
"Code symbols are not globally ordered");
97 for (
auto sId = 0UL; sId <
symbols.size(); sId++) {
98 for (
auto pId = 0UL; pId < sId; pId++)
assert(dim.area() >=area)
CodeTraits< CodeTag > Traits
std::vector< CodeValueTy > codeValues
AbstractPrefixCode()=default
PrefixCode(std::vector< CodeSymbol > symbols_, std::vector< CodeValueTy > codeValues_)
typename Base::Traits Traits
AbstractPrefixCode< CodeTag > Base
std::vector< CodeSymbol > symbols
typename Traits::CodeValueTy CodeValueTy
typename Base::CodeSymbol CodeSymbol
std::vector< unsigned > nCodesPerLength