/* Huffman.h Cabecalho para rotinas relativas ao codigo de Huffman. Rotinas: mede frequencia de chars num arquivo desenha codigo de Huffman baseado em frequencias salva arquivo-codigo le arquivo-codigo compacta arquivo baseado em arquivo-codigo descompacta arquivo baseado em arquivo-codigo Arquivo-codigo e' um arquivo num formato especial, onde cada linha contem um byte em hexadecimal e seu codigo em bits. (porem e' um arquivo texto). Exemplo: 23 101 A4 01 5B 11 Serve para guardar codigos de Huffman em arquivos. */ #include "heap.h" #define CHARS 256 typedef char * string; typedef char * filename; /*----------------------------------- todas as rotinas abaixo retornam 1 para sucesso 0 para fracasso alem disso, input e output sempre se referem aos filenames, que devem ser abertos e fechados pela rotina -----------------------------------*/ /* freq e' um vetor indexado por CHARS os chars que nao aparecem no arquivo input terao frequencia zero */ int MedeFreq (filename input, int *freq); /* recebe frequencias e monta o codigo de Huffman */ int Huffman (int *freq, string *codigo); /* salva codigo em arquivo-codigo */ int SalvaCodigo (string *codigo, filename arqcod); /* le codigo de arquivo-codigo */ int LeCodigo (filename arqcod, string *codigo); /* compacta arquivo baseado em arquivo-codigo */ int Compacta (filename arqcod, filename input, filename output); /* descompacta arquivo baseado em arquivo-codigo */ int Descompacta (filename arqcod, filename input, filename output);