#include <huffman.h>
Public Member Functions | |
Huffman () | |
Huffman (const Huffman &original) | |
virtual | ~Huffman () |
virtual Huffman & | operator= (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 |
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.
Huffman::Huffman | ( | ) |
Erzeugt einen Huffman-Verwalter.
Huffman::Huffman | ( | const Huffman & | original | ) |
Kopiert einen Huffman-Verwalter.
original | zu kopierender Huffman-Verwalter |
Huffman::~Huffman | ( | ) | [virtual] |
Loescht einen Huffman-Verwalter.
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.
text | Dateiname/Text |
file | 0, wenn der Baum aus einem Text erzeugt werden soll, sonst aus einer Datei |
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
compr_bits_ar | Zeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen |
count | Zeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll |
text | zu komprimierender Text/Datei |
file | 0, wenn Text, sonst Datei |
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.
compr_bits_ar | Zeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen |
count | Zeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll |
text | zu komprimierender Text/Datei |
file | 0, wenn Text, sonst Datei |
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).
compr_bits_ar | Zeiger auf Array, in das die Kompressions-Bits geschrieben werden sollen |
count | Zeiger auf Zahl, in die die Anzahl der Kompressions-Bits geschrieben werden soll |
text | zu komprimierender Text/Datei |
file | 0, wenn Text, sonst Datei |
void Huffman::decompress | ( | string | filename, |
string | out_filename | ||
) | [virtual] |
Dekomprimiert eine komprimierte Datei.
filename | komprimierte Datei |
out_filename | Ausgabe-Datei |
string Huffman::decompress | ( | vector< bool > | compr_bits | ) | [virtual] |
Dekomprimiert einen uebergebenen Bit-Stream
compr_bits | Vektor mit Bits des Bit-Streams |
Zuweisungsoperator fuer einen Huffman-Verwalter.
original | zuzuweisender 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.
filename | Dateiname der Datei, in die der Baum gespeichert werden soll |