Definition
A Move-To-Front coder is used for preprocessing the input before it is
fed to the actual compressor.
Encoding works as follows: The coder maintains a list L containing all
the 256 characters that can appear in the input. Whenever it receives
an input character c it looks up the position i of c in L,
outputs i and moves c to the front of L.
Let us look at an example. Assume that the position of every character in
the initial list is equal to its ASCII-code. When we encode the sequence
aaabbbbaab we obtain the output
97, 0, 0, 98, 0, 0, 0, 1, 0, 1.
So a MTFCoder has the following properties:
#include < LEDA/coding/MTF.h >
Creation
MTFCoder | C(streambuf* src_stream = 0, streambuf* tgt_stream = 0, bool own_streams = false) | |
creates an instance C which uses the given source and target streams. If own_streams is set, then C is responsible for the destruction of the streams, otherwise the pointers src_stream and tgt_stream must be valid during the life-time of C. | ||
MTFCoder | C(const char* src_file_name, const char* tgt_file_name) | |
creates an instance C which uses file-streams for input and output. |
Operations
Standard Operations
void | C.encode() | encodes the source stream and writes the output to the target stream. |
void | C.decode() | decodes the source stream and writes the output to the target stream. |
uint32 | C.encode_memory_chunk(const char* in_buf, uint32 in_len, char* out_buf, uint32 out_len) | |
encodes the memory chunk starting at in_buf with size in_len into the buffer starting at out_buf with size out_len. The function returns actual length of the encoded chunk which may be smaller than out_len. If the output buffer is too small for the encoded data the failure flag will be set (see below). | ||
uint32 | C.decode_memory_chunk(const char* in_buf, uint32 in_len, char* out_buf, uint32 out_len) | |
decodes a memory chunk. The meaning of the parameters and the return value is the same as in the previous function. | ||
streambuf* | C.get_src_stream() | returns the current source stream. |
void | C.set_src_stream(streambuf* src_stream, bool own_stream = false) | |
sets the source stream (cf. constructor). | ||
void | C.set_src_file(const char* file_name) | |
sets a file as source stream. | ||
streambuf* | C.get_tgt_stream() | returns the current target stream. |
void | C.set_tgt_stream(streambuf* tgt_stream, bool own_Stream = false) | |
sets the target stream (cf. constructor). | ||
void | C.set_tgt_file(const char* file_name) | |
sets a file as target stream. | ||
void | C.reset() | puts C in exactly the same state as the default constructor. |
bool | C.failed() | returns true if an error occured. |
bool | C.finished() | returns true if the coding is finished. |
string | C.get_description() | provides a description for C. |