60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
|
|
/************************************/
|
||
|
|
/** Codage de Huffman: Compression **/
|
||
|
|
/************************************/
|
||
|
|
|
||
|
|
#include "huffcomp.h"
|
||
|
|
|
||
|
|
/**********************************/
|
||
|
|
/* Fonctions manipulant les codes */
|
||
|
|
/**********************************/
|
||
|
|
|
||
|
|
/* Construction du tableau des codes à partir de l'arbre de Huffman */
|
||
|
|
huffcode **create_huffdict(huffnode *tree) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Suppression du tableau de code */
|
||
|
|
void delete_huffdict(huffcode **dict) {
|
||
|
|
// À écrire
|
||
|
|
}
|
||
|
|
|
||
|
|
/***********************************************/
|
||
|
|
/** Fonction pour la compression d'un fichier **/
|
||
|
|
/***********************************************/
|
||
|
|
|
||
|
|
/* Écriture d'un unsigned int sur 4 octets dans un fichier */
|
||
|
|
void write_size(FILE *output, unsigned int size) {
|
||
|
|
// À écrire
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Insertion d'un code à droite d'un tuyau servant de tampon */
|
||
|
|
void insert_code_in_buffer(dequeue *buffer, huffcode *code) {
|
||
|
|
// À écrire
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Calcule l'octet correspondant aux 8 derniers éléments d'un tuyau servant de
|
||
|
|
* tampon */
|
||
|
|
int buffer_to_byte(dequeue *buffer) {
|
||
|
|
// À écrire
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Procédure de compression */
|
||
|
|
void compress_file(FILE *in, FILE *out) {
|
||
|
|
/* Phase 1: calcul de la taille de l'arbre et du dictionnaire à partir du
|
||
|
|
* fichier source */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
/* Phase 2: écriture de la taille du fichier original */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
/* Phase 3: écriture de l'arbre en représentation préfixe */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
/* Phase 4: écriture du codage */
|
||
|
|
}
|