#ifndef __IN303_BUFFER_H__ #define __IN303_BUFFER_H__ #include /** * 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