42 lines
937 B
C
42 lines
937 B
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 {
|
||
|
// 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
|
||
|
int 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(int bit, Buffer*);
|
||
|
|
||
|
/**
|
||
|
* Vide le tampon dans son fichier et le réinitialise
|
||
|
*/
|
||
|
void flushBuffer(Buffer*);
|
||
|
|
||
|
#endif
|