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
 |