RawSpeed
fast raw decoding library
Loading...
Searching...
No Matches
rawspeed::HuffmanCode< CodeTag > Class Template Referencefinal

#include "codes/HuffmanCode.h"

Inheritance diagram for rawspeed::HuffmanCode< CodeTag >:
[legend]
Collaboration diagram for rawspeed::HuffmanCode< CodeTag >:
[legend]

Public Types

using Parent = AbstractPrefixCode<CodeTag>
using CodeSymbol = typename AbstractPrefixCode<CodeTag>::CodeSymbol
using Traits = typename AbstractPrefixCode<CodeTag>::Traits
using CodeValueTy = typename Traits::CodeValueTy

Public Member Functions

 HuffmanCode ()=default
std::vector< CodeSymbolgenerateCodeSymbols () const
bool operator== (const HuffmanCode &other) const
uint32_t setNCodesPerLength (Buffer data)
void setCodeValues (Array1DRef< const typename Traits::CodeValueTy > data)
 operator PrefixCode< CodeTag > ()

Public Attributes

std::vector< CodeValueTycodeValues

Protected Member Functions

size_t RAWSPEED_READONLY maxCodeLength () const
unsigned int RAWSPEED_READONLY maxCodesCount () const

Protected Attributes

std::vector< unsigned int > nCodesPerLength

Detailed Description

template<typename CodeTag>
class rawspeed::HuffmanCode< CodeTag >

Definition at line 42 of file HuffmanCode.h.

Member Typedef Documentation

◆ CodeSymbol

template<typename CodeTag>
using rawspeed::HuffmanCode< CodeTag >::CodeSymbol = typename AbstractPrefixCode<CodeTag>::CodeSymbol

Definition at line 45 of file HuffmanCode.h.

◆ CodeValueTy

template<typename CodeTag>
using rawspeed::AbstractPrefixCode< CodeTag >::CodeValueTy = typename Traits::CodeValueTy
inherited

Definition at line 141 of file AbstractPrefixCode.h.

◆ Parent

template<typename CodeTag>
using rawspeed::HuffmanCode< CodeTag >::Parent = AbstractPrefixCode<CodeTag>

Definition at line 44 of file HuffmanCode.h.

◆ Traits

template<typename CodeTag>
using rawspeed::HuffmanCode< CodeTag >::Traits = typename AbstractPrefixCode<CodeTag>::Traits

Definition at line 46 of file HuffmanCode.h.

Constructor & Destructor Documentation

◆ HuffmanCode()

template<typename CodeTag>
rawspeed::HuffmanCode< CodeTag >::HuffmanCode ( )
default

Referenced by operator==().

Here is the caller graph for this function:

Member Function Documentation

◆ generateCodeSymbols()

template<typename CodeTag>
std::vector< CodeSymbol > rawspeed::HuffmanCode< CodeTag >::generateCodeSymbols ( ) const
inlinenodiscard

Definition at line 66 of file HuffmanCode.h.

References assert(), rawspeed::AbstractPrefixCode< CodeTag >::codeValues, maxCodeLength(), maxCodesCount(), and nCodesPerLength.

Referenced by rawspeed::HuffmanCode< BaselineCodeTag >::operator PrefixCode< BaselineCodeTag >(), and rawspeed_test::anonymous_namespace{HuffmanCodeTest.cpp}::TEST_P().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ maxCodeLength()

template<typename CodeTag>
size_t RAWSPEED_READONLY rawspeed::HuffmanCode< CodeTag >::maxCodeLength ( ) const
inlinenodiscardprotected

Definition at line 51 of file HuffmanCode.h.

References nCodesPerLength.

Referenced by generateCodeSymbols().

Here is the caller graph for this function:

◆ maxCodesCount()

template<typename CodeTag>
unsigned int RAWSPEED_READONLY rawspeed::HuffmanCode< CodeTag >::maxCodesCount ( ) const
inlinenodiscardprotected

Definition at line 61 of file HuffmanCode.h.

References nCodesPerLength.

Referenced by generateCodeSymbols(), setCodeValues(), and setNCodesPerLength().

Here is the caller graph for this function:

◆ operator PrefixCode< CodeTag >()

template<typename CodeTag>
rawspeed::HuffmanCode< CodeTag >::operator PrefixCode< CodeTag > ( )
inlineexplicit

Definition at line 168 of file HuffmanCode.h.

◆ operator==()

template<typename CodeTag>
bool rawspeed::HuffmanCode< CodeTag >::operator== ( const HuffmanCode< CodeTag > & other) const
inline

Definition at line 94 of file HuffmanCode.h.

References HuffmanCode(), rawspeed::AbstractPrefixCode< CodeTag >::codeValues, and nCodesPerLength.

Here is the call graph for this function:

◆ setCodeValues()

template<typename CodeTag>
void rawspeed::HuffmanCode< CodeTag >::setCodeValues ( Array1DRef< const typename Traits::CodeValueTy > data)
inline

Definition at line 151 of file HuffmanCode.h.

References assert(), rawspeed::Array1DRef< T >::begin(), rawspeed::AbstractPrefixCode< CodeTag >::codeValues, rawspeed::Array1DRef< T >::end(), invariant, maxCodesCount(), rawspeed::Array1DRef< T >::size(), and ThrowRDE.

Referenced by createHuffmanCode(), rawspeed::CrwDecompressor::makeDecoder(), rawspeed::AbstractLJpegDecoder::parseDHT(), rawspeed::PentaxDecompressor::SetupPrefixCodeDecoder_Legacy(), rawspeed::PentaxDecompressor::SetupPrefixCodeDecoder_Modern(), rawspeed_test::anonymous_namespace{HuffmanCodeTest.cpp}::TEST(), and rawspeed_test::anonymous_namespace{HuffmanCodeTest.cpp}::TEST_P().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setNCodesPerLength()

template<typename CodeTag>
uint32_t rawspeed::HuffmanCode< CodeTag >::setNCodesPerLength ( Buffer data)
inline

Member Data Documentation

◆ codeValues

◆ nCodesPerLength

template<typename CodeTag>
std::vector<unsigned int> rawspeed::HuffmanCode< CodeTag >::nCodesPerLength
protected

The documentation for this class was generated from the following file: