huffman/inc/buffer.h

50 lines
1.1 KiB
C

#ifndef __IN303_BUFFER_H__
#define __IN303_BUFFER_H__
#include <stdio.h>
/**
* Informations sur un tampon de 8 caractères.
* Utiliser `createBuffer` pour initialiser un tampon
*/
typedef struct Buffer Buffer;
struct Buffer {
// Compte le nombre d'octets écrits dans le fichier
size_t flushed_bytes;
// Contient les données du tampon, c'est-à-dire
// les données en attente de vidage dans le fichier
char data;
// Nombre de bits utilisés dans le tampon. Si ce
// nombre vaut 8, le tampon est plein
size_t used_bits;
// Fichier dans lequel le tampon est vidé à l'appel
// de `flushBuffer` ou au débordement
FILE* linked_file;
};
/**
* Initialise un tampon vide lié au fichier donné
*/
Buffer createBuffer(FILE*);
/**
* Pousse le bit donné dans le tampon passé.
* Si le tampon déborde, le vide dans le fichier lié
*/
void pushToBuffer(char bit, Buffer*);
/**
* Récupère le nombre de fois qu'on a écrit un octet dans le fichier lié
*/
size_t getFlushedBytes(Buffer*);
/**
* Vide le tampon dans son fichier et le réinitialise
*/
void flushBuffer(Buffer*);
#endif