Public Member Functions
Huffman Class Reference

#include <huffman.h>

List of all members.

Public Member Functions

 Huffman ()
 Huffman (const Huffman &original)
virtual ~Huffman ()
virtual Huffmanoperator= (const Huffman &original)
virtual void build_tree (string text, bool file)
virtual bool * compress (bool *compr_bits_ar, int *count, string text, bool file)
virtual bool * compress_table (bool *compr_bits_ar, int *count, string text, bool file)
virtual bool * compress_lookup (bool *compr_bits_ar, int *count, string text, bool file)
virtual void decompress (string filename, string out_filename)
virtual string decompress (vector< bool > compr_bits)
virtual void save_tree (string filename) const

Detailed Description

Ermoeglicht das Erstellen eines Huffman-Binaer-Baums, deren Speicherung und Loeschung. Ausserdem die Kompression auf 3 verschiedene Arten und die Dekompression. Jeweils von Strings oder von ganzen Dateien.


Constructor & Destructor Documentation

Huffman::Huffman ( )

Erzeugt einen Huffman-Verwalter.

Huffman::Huffman ( const Huffman original)

Kopiert einen Huffman-Verwalter.

Parameters:
originalzu kopierender Huffman-Verwalter
Huffman::~Huffman ( ) [virtual]

Loescht einen Huffman-Verwalter.


Member Function Documentation

void Huffman::build_tree ( string  text,
bool  file 
) [virtual]

Erzeugt einen Huffman-Binaer-Baum anhand einer Datei oder eines uebergebenen Textes. Der Baum ist fuer die Komprimierung optimal.

Parameters:
textDateiname/Text
file0, wenn der Baum aus einem Text erzeugt werden soll, sonst aus einer Datei

Here is the call graph for this function:

bool * Huffman::compress ( bool *  compr_bits_ar,
int *  count,
string  text,
bool  file 
) [virtual]

Komprimiert einen Text/Datei mit einem intuitiven Algorithmus. Er geht den Text Zeichen fuer Zeichen durch, sucht das Zeichen per Tiefensuche im Binaerbaum und notiert dabei, den entstehenden Bitstream. Gesamtlaufzeit: n^2 * log n

Parameters:
compr_bits_arZeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen
countZeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll
textzu komprimierender Text/Datei
file0, wenn Text, sonst Datei
Returns:
Zeiger auf neuen Speicherbereich, in den die Kompressions-Bits geschrieben wurden
bool * Huffman::compress_lookup ( bool *  compr_bits_ar,
int *  count,
string  text,
bool  file 
) [virtual]

Komprimiert einen Text/Datei mit einer Tabelle und einer weiteren Lookup-Tabelle Er geht den Text Zeichen fuer Zeichen durch, sucht das Zeichen in einer Tabelle (Laufzeit O(n)). In diesem Zeichen ist der korrekte Bit-Stream gespeichert, der nur noch an den kompletten Bitstream angefuegt werden muss. Gesamtlaufzeit O(n) -> linear.

Parameters:
compr_bits_arZeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen
countZeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll
textzu komprimierender Text/Datei
file0, wenn Text, sonst Datei
Returns:
Zeiger auf neuen Speicherbereich, in den die Kompressions-Bits geschrieben wurden

Here is the call graph for this function:

bool * Huffman::compress_table ( bool *  compr_bits_ar,
int *  count,
string  text,
bool  file 
) [virtual]

Komprimiert einen Text/Datei mit Hilfe einer Tabelle. Er geht den Text Zeichen fuer Zeichen durch, sucht das Zeichen in einer Tabelle (Laufzeit O(n)) und geht von diesem gefundenen Element so lange zum Vorgaenger, bis er beim obersten Element (root) angekommen ist. Dabei wird jeweils das aktuelle Bit notiert. Gesamtlaufzeit O(n * log n).

Parameters:
compr_bits_arZeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen
countZeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll
textzu komprimierender Text/Datei
file0, wenn Text, sonst Datei
Returns:
Zeiger auf neuen Speicherbereich, in den die Kompressions-Bits geschrieben wurden
void Huffman::decompress ( string  filename,
string  out_filename 
) [virtual]

Dekomprimiert eine komprimierte Datei.

Parameters:
filenamekomprimierte Datei
out_filenameAusgabe-Datei
string Huffman::decompress ( vector< bool >  compr_bits) [virtual]

Dekomprimiert einen uebergebenen Bit-Stream

Parameters:
compr_bitsVektor mit Bits des Bit-Streams
Returns:
dekomprimierter Text

Here is the call graph for this function:

Huffman & Huffman::operator= ( const Huffman original) [virtual]

Zuweisungsoperator fuer einen Huffman-Verwalter.

Parameters:
originalzuzuweisender Huffman-Verwalter
Returns:
Referenz auf zugewiesenen Huffman-Verwalter
void Huffman::save_tree ( string  filename) const [virtual]

Speichert den aktuellen Binaerbaum formatiert in einer Datei. Das Format entspricht dem von Graphviz, um eine Grafik zu erzeugen.

Parameters:
filenameDateiname der Datei, in die der Baum gespeichert werden soll

The documentation for this class was generated from the following files:
 All Classes Files Functions