libUTL++
utl::ArithContext Class Reference

Statistical context for ArithmeticEncoder. More...

#include <ArithmeticEncoder.h>

Inheritance diagram for utl::ArithContext:

Public Member Functions

 ArithContext (uint_t numSymbols, uint_t inc, uint_t incLimit)
 Constructor. More...
 
virtual void copy (const Object &rhs)
 Copy another ArithContext. More...
 
uint_t freq (uint_t symbol) const
 Get the frequency count for the given symbol. More...
 
void interval (uint_t *low, uint_t *high, uint_t symbol) const
 Return the total frequency of all symbols before the given symbol.
 
uint_t numSymbols () const
 Return the number of symbols. More...
 
void set (uint_t numSymbols, uint_t inc, uint_t incLimit)
 Set a new configuration. More...
 
uint_t symbol (uint_t target)
 Return the symbol whose cumulative frequency count is the least that exceeds the given target.
 
uint_t totFreq () const
 Return the total frequency of all symbols. More...
 
void update (uint_t symbol)
 Add inc to the frequency count for the given symbol. More...
 
- Public Member Functions inherited from utl::Object
void clear ()
 Revert to initial state. More...
 
virtual int compare (const Object &rhs) const
 Compare with another object. More...
 
virtual void vclone (const Object &rhs)
 Make an exact copy of another instance. More...
 
virtual void steal (Object &rhs)
 "Steal" the internal representation from another instance. More...
 
virtual void dump (Stream &os, uint_t level=uint_t_max) const
 Dump a human-readable representation of self to the given output stream. More...
 
void dumpWithClassName (Stream &os, uint_t indent=4, uint_t level=uint_t_max) const
 Front-end for dump() that prints the object's class name. More...
 
virtual const Object & getKey () const
 Get the key for this object. More...
 
bool hasKey () const
 Determine whether or not the object has a key. More...
 
virtual const Object & getProxiedObject () const
 Get the proxied object (= self if none). More...
 
virtual Object & getProxiedObject ()
 Get the proxied object (= self if none). More...
 
virtual size_t hash (size_t size) const
 Get the hash code for the object. More...
 
bool _isA (const RunTimeClass *runTimeClass) const
 Determine whether self's class is a descendent of the given class. More...
 
virtual String toString () const
 Return a string representation of self. More...
 
 operator String () const
 Conversion to String. More...
 
size_t allocatedSize () const
 Get the total allocated size of this object. More...
 
virtual size_t innerAllocatedSize () const
 Get the "inner" allocated size. More...
 
virtual void addOwnedIt (const class FwdIt *it) const
 Notify self that it owns the given iterator. More...
 
virtual void removeOwnedIt (const class FwdIt *it) const
 Notify self that the given owned iterator has been destroyed. More...
 
bool operator< (const Object &rhs) const
 Less-than operator. More...
 
bool operator<= (const Object &rhs) const
 Less-than-or-equal-to operator. More...
 
bool operator> (const Object &rhs) const
 Greater-than operator. More...
 
bool operator>= (const Object &rhs) const
 Greater-than-or-equal-to operator. More...
 
bool operator== (const Object &rhs) const
 Equal-to operator. More...
 
bool operator!= (const Object &rhs) const
 Unequal-to operator. More...
 
void serializeIn (Stream &is, uint_t mode=ser_default)
 Serialize from an input stream. More...
 
void serializeOut (Stream &os, uint_t mode=ser_default) const
 Serialize to an output stream. More...
 
virtual void serialize (Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize to or from a stream. More...
 
void serializeOutBoxed (Stream &os, uint_t mode=ser_default) const
 Serialize a boxed object to an output stream. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from utl::Object
static Object * serializeInNullable (Stream &is, uint_t mode=ser_default)
 Serialize a nullptr-able object from an input stream. More...
 
static void serializeOutNullable (const Object *object, Stream &os, uint_t mode=ser_default)
 Serialize a nullptr-able object to an output stream. More...
 
static void serializeNullable (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a nullptr-able object to or from a stream. More...
 
static Object * serializeInBoxed (Stream &is, uint_t mode=ser_default)
 Serialize a boxed object from an input stream. More...
 
static void serializeBoxed (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a boxed object to or from a stream. More...
 

Detailed Description

Statistical context for ArithmeticEncoder.

freq(), interval() and update() are all O(log n), thanks to the use of a Fenwick tree. Thanks go to Alistair Moffat who clued me into this elegant technique.

See Alistair's home page at: http://people.eng.unimelb.edu.au/ammoffat/

Author
Adam McKee

Definition at line 30 of file ArithmeticEncoder.h.

Constructor & Destructor Documentation

◆ ArithContext()

utl::ArithContext::ArithContext ( uint_t  numSymbols,
uint_t  inc,
uint_t  incLimit 
)
inline

Constructor.

Parameters
numSymbolsalphabet size
incsymbol frequency increment
incLimithalve frequency counts when totFreq() exceeds incLimit

Definition at line 42 of file ArithmeticEncoder.h.

References utl::copy().

Member Function Documentation

◆ copy()

virtual void utl::ArithContext::copy ( const Object &  rhs)
virtual

Copy another ArithContext.

Reimplemented from utl::Object.

◆ freq()

uint_t utl::ArithContext::freq ( uint_t  symbol) const
inline

Get the frequency count for the given symbol.

Definition at line 53 of file ArithmeticEncoder.h.

◆ numSymbols()

uint_t utl::ArithContext::numSymbols ( ) const
inline

Return the number of symbols.

Definition at line 68 of file ArithmeticEncoder.h.

◆ set()

void utl::ArithContext::set ( uint_t  numSymbols,
uint_t  inc,
uint_t  incLimit 
)

Set a new configuration.

Parameters
numSymbolsnumber of distinct symbols
incsymbol frequency increment
incLimithalve frequency counts when totFreq() exceeds incLimit

◆ totFreq()

uint_t utl::ArithContext::totFreq ( ) const
inline

Return the total frequency of all symbols.

Definition at line 90 of file ArithmeticEncoder.h.

References utl::deInit(), and utl::init().

Referenced by utl::ArithmeticEncoder::decode(), and utl::ArithmeticEncoder::encode().

◆ update()

void utl::ArithContext::update ( uint_t  symbol)

Add inc to the frequency count for the given symbol.

If totFreq() exceeds incLimit, all frequency counts are halved.

Referenced by utl::ArithmeticEncoder::decode(), and utl::ArithmeticEncoder::encode().


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