#include <Huffman.H>
Public Member Functions | |
| Huffman_Encoder_Engine () | |
| Constructor de codificador. | |
| void | save_tree (ostream &output) |
| void | save_tree_in_array_of_chars (const string &array_name, ostream &output) |
| BinNode< string > *& | get_root () |
| Retorna la raÃz del árbol decodificador de Huffman. | |
| BinNode< string > * | generate_huffman_tree (const bool &with_freqs=false) |
| void | load_tree (ifstream &input) |
| Freq_Node *& | get_freq_root () |
| Retorna la raÃz de un árbol de frecuencias. | |
| void | set_freq (const string &str, const size_t &freq) |
| void | read_input (char *input, const bool &with_freqs=false) |
| void | read_input (ifstream &input, const bool &with_freqs=false) |
| void | set_end_of_stream (const string &str) |
| Define el sÃmbolo fin de entrada. | |
| size_t | encode (char *input, BitArray &bit_stream) |
| size_t | encode (ifstream &input, BitArray &bit_stream) |
Codificador de Huffman.
|
inline |
Codifica el texto input.
encode(input,bit_stream) lee la entrada input, la codifica y escribe el texto codificado en el arreglo de bits bit_stream.
| [in] | input | cadena de caracteres contentiva del texto a codificar. |
| [out] | bit_stream | el arreglo de bits donde escribir el texto codificado. |
| domain_error | si el árbol de prefijos no ha sido generado mediante el método generate_huffman_tree() |
Here is the call graph for this function:
|
inline |
Codifica el texto input.
encode(input,bit_stream) lee la entrada input, la codifica y escribe el texto codificado en el arreglo de bits bit_stream.
| [in] | input | archivo con los caracteres del texto a codificar. |
| [out] | bit_stream | el arreglo de bits donde escribir el texto codificado. |
| domain_error | si el árbol de prefijos no ha sido generado mediante el método generate_huffman_tree() |
Here is the call graph for this function:
|
inline |
Genera el árbol de prefijos de Huffman.
generate_huffman_tree(with_freqs) ejecuta el algoritmo de Huffman para generar el árbol de prefijos en función del texto leÃdo. Si with_freqs es true, entonces los nodos del árbol generado contienen las frecuencias de aparición de los sÃmbolos.
| [in] | with_freqs | si el valor es true, entonces los nodos del árbol generado contendrán las frecuencias de aparición de los sÃmbolos. De lo contrario, el árbol sólo contiene los sÃmbolos. |
| bad_alloc | si no hay suficiente memoria. |
Here is the call graph for this function:
|
inline |
Carga y construye un árbol binario desde un archivo.
load_tree(input) lee el archivo referenciado por input, el cual contiene un árbol de Huffman previamente guardado con Huffman_Encoder_Engine::save_tree() y lo restaura en memoria.
| [in] | input | referencia al archivo donde se encuentra guardado el árbol bina1rio. |
| std::bad_alloc | sin no hay suficiente para construir arreglo de bits intermedio o para construir el árbol binario. |
Here is the call graph for this function:
|
inline |
Lee una cadena caracteres, contabiliza las frecuencias de sus distintos sÃmbolos y genera el árbol binario de prefijos.
read_input(input, with_freqs) lee la cadena de caracteres input, contabiliza las frecuencias de aparición de cada sÃmbolo y finalmente genera el árbol binario de prefijos.
| [in] | input | cadena de caracteres a codificar. |
| [in] | with_freqs | si el valor es true, entonces también se genera el árbol de prefijos con las frecuencias en cada sÃmbolo. |
| bad_alloc | si no hay suficiente memoria. |
|
inline |
Lee un archivo, contabiliza las frecuencias de sus distintos sÃmbolos y genera el árbol binario de prefijos.
read_input(input, with_freqs) lee el archivo de entrada input, contabiliza las frecuencias de aparición de cada sÃmbolo y finalmente genera el árbol binario de prefijos.
| [in] | input | archivo contentivo de los caracteres a codificar. |
| [in] | with_freqs | si el valor es true, entonces también se genera el árbol de prefijos con las frecuencias en cada sÃmbolo. |
| bad_alloc | si no hay suficiente memoria. |
|
inline |
Guarda un árbol de Huffman en un archivo.
Guarda el árbol de Huffman correspondiente al texto codificado en un archivo.
El método utilizado es a través del código prefijo en bits del árbol y luego la secuencia prefija de las hojas del árbol correspondientes a los sÃmbolos del texto.
| [out] | output | un stream correctamente abierto donde se guarda el árbol. |
| std::domain_error | si el árbol aún no ha sido generado. |
|
inline |
Genera declaraciones de arreglos de bits y de claves para un árbol de Huffman.
save_tree_in_array_of_chars(array_name, output) genera declaraciones para dos arreglos con los que se puede definir un árbol binario. Las declaraciones son escritas en un archivo texto, ya abierto, direccionado por el stream output. La declaración resultante tiene la forma genérica siguiente:
const unsigned char array_name_cdp[n] = { lista de unsigned char };
const char * array_name_k[] = { lista de claves en prefijo };
El primer arreglo es de bits y guarda la topologÃa del árbol bajo un código prefijo de bits (una palabra de Lukasiewicz). El segundo arreglo, guarda los contenidos de los nodos y está ordenado en la secuencia prefija. Los valores de las claves son dados por la clase Get_Key()(root, str) el cual debe retornar una constante char* que represente el contenido del nodo.
La clase Get_Key()(), observadora del contenido del nodo, debe ser muy cuidadosamente programada. Su estructura general es la siguiente:
string operator() (Node * p) const;
Donde p es el nodo actual dentro del recorrido prefijo del árbol binario. El resultado de esta llamada es colocado como valor constante del arreglo array_name.
| [in] | array_name | El nombre del arreglo de contenidos de los nodos del árbol |
| [out] | output | stream abierto donde se escriben las declaraciones de los arreglos, asà como sus valores. |
| [out] | output | un stream correctamente abierto donde se guarda el árbol. |
| std::domain_error | si el árbol aún no ha sido generado. |
|
inline |
Define la frecuencia de aparición de un sÃmbolo.
set_freq(str, freq) instruye al codificador que al sÃmbolo str se le asocia una frecuencia de aparición freq.
| [in] | str | sÃmbolo. |
| [in] | freq | frecuencia del sÃmbolo |
| bad_alloc | si no hay suficiente memoria. |
Here is the call graph for this function: