next up previous contents index
Next: Burrows-Wheeler Transform ( BWTCoder Up: Lossless Compression Previous: Adaptive Huffman Coder (   Contents   Index


Run-Length Coder ( RLECoder )

Definition

A Run-Length coder is used for compressing inputs which contain many long sequences of repeating characters. The basic idea is as follows: A sequence aaaaaaa of 7 consecutive a's is replaced by something like a#7.
We provide two schemes for the actual encoding of the compressed sequence, which allows the user to select between fast or high compression.

#include < LEDA/coding/RLE.h >

Creation

RLECoder C(streambuf* src_stream = 0, streambuf* tgt_stream = 0, bool own_streams = false, bool fast_mode = true)
    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. The parameter fast_mode allows to select fast or high compression mode.

RLECoder C(const char* src_file_name, const char* tgt_file_name, bool fast_mode = true)
    creates an instance C which uses file-streams for input and output. The parameter fast_mode allows to select fast or high compression mode.

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(bool keep_mode = true)
    puts C in the same state as the default constructor. If keep_mode is false the compression mode is set to the default value.

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.

Additional Operations

bool C.is_in_fast_mode() returns true if the coder is in fast mode, and false if it is in high compression mode.

void C.set_fast_compression_mode()
    selects fast compression mode.

void C.set_high_compression_mode()
    selects high compression mode.


next up previous contents index
Next: Burrows-Wheeler Transform ( BWTCoder Up: Lossless Compression Previous: Adaptive Huffman Coder (   Contents   Index