]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - src/statichuff/statichuff.h
Fclose fix
[z.facultad/75.06/jacu.git] / src / statichuff / statichuff.h
index eac6505e582c55f551de5058cabacc9cb50a70bf..97e8f4cc2026c2488397066201c6649c66993ed5 100644 (file)
@@ -1,5 +1,10 @@
 
 
+#ifndef _STATICHUFF_H_
+#define _STATICHUFF_H_
+
 #include <stdio.h>
 #include <stdio.h>
+#include <unistd.h>
+#include "../vfile/vfile.h"
 
 typedef unsigned long int t_freq;
 
 
 typedef unsigned long int t_freq;
 
@@ -14,3 +19,34 @@ typedef struct t_code {
        unsigned long int code;
        unsigned char codelength;
 } SHUFFCODE;
        unsigned long int code;
        unsigned char codelength;
 } SHUFFCODE;
+
+typedef struct t_huff {
+       FILE *coderfp; /* fpointer usado en el coder de bychunk para el temp */
+       VFILE *decoderfp; /* fpointer al archivo a descomrimir */
+       char *sourcefile; /* Nombre del archivo a comprimir */
+       char *targetfile; /* Nombre del archivo comprimido */
+       long volsize; /* Tamanio de volumen para multivol */
+       char bychunk; /* 0 works byfile, 1 works bychunk */
+       char canonic; /* 1 Huffman Canonico con preloaded freqtable */
+       t_freq *freqtable; /* Tabla de frecuencias */
+       t_freq sumfreq; /* Frecuencia total acumulada */
+       SHUFFNODE *codetree; /* Puntero al arbol de codigos prefijos */         
+       unsigned long int bytesleft; /* Cuanto falta descomprimir en un bychunk */      
+       unsigned long int codebuffer; /* Buffer de descompresion para bychunk */
+       int bitsleft; /* Posicion en el buffer de descompresion para bychunk */
+} HUFF_STATE;
+
+
+HUFF_STATE *shuff_init_encoder_byfile(char *inputfile, char *outputfile, long volsize);
+HUFF_STATE *shuff_init_encoder_bychunk(char *outputfile, long volsize);
+HUFF_STATE *shuff_init_decoder(char *inputfile, char *outputfile);
+void shuff_deinit_encoder(HUFF_STATE *shuff);
+void shuff_deinit_decoder(HUFF_STATE *shuff);
+int shuff_encode_file(HUFF_STATE *shuff);
+int shuff_decode_file(HUFF_STATE *shuff);
+int shuff_scanfreq_chunk(HUFF_STATE *chunkshuff, char* chunk, int chunksize);
+int shuff_decode_chunk(HUFF_STATE *shuff, char *chunk, int chunksize, int *decodedbytes);
+int shuff_savemodel(HUFF_STATE *shuff);
+int shuff_loadmodel(HUFF_STATE *shuff, char *modelfile);
+
+#endif /* _STATICHUFF_H_ */