#include <IOs.h>
Public Member Functions | |
IOs (const char *file, frequenza **v, int n) | |
il costruttore. | |
~IOs () | |
il distruttore | |
void | inserisci (int b) |
funzione che inserisci l'intero b (o 0 o 1) nel file. | |
void | svuota () |
funzione che stampa il contenuto del buffer anche se questo non è pieno. | |
Protected Member Functions | |
int | elevato (int a, int b) |
funzione che eleva l'intero a a potenza b. | |
Protected Attributes | |
fstream | stream |
stream per la scrittura. | |
int | contatore |
contatore per lo scorrimento del buffer. | |
bool | buffer [8] |
il buffer è dove vengono inseriti i bit della codifica |
questa classe serve per le operazioni di scrittura del codice, non sceglie la codifica ma si limita a scrivere su un file designato il codice, per farlo si scrive bit per bit, oltre allo stream collegato al file si ha anche un buffer accoppiato ad un puntatore utile per scrivere i bit sottoforma di caratteri, un contatore che tiene il conto dei caratteri nel buffer, e i vari metodi, in particolare questa classe viene utilizzata dalla classe compressore
Definition at line 19 of file IOs.h.
|
il costruttore. il costruttore come azione preliminre scrive sul file l'intestazione, costituita innanzitutto dal numero di caratteri distinti (memorizzato sotto forma di carattere per risparmiare spazio, infatti al massimo potranno esserci 256 caratteri diversi mentre non ce ne potranno essere 0), e poi da ogni carattere con la sua frequenza, questo consente al decompressore di ricostruire l'albero di huffman; lo stream deve essere aperto in modo binario ed è il costruttore che se ne occupa; Complessità: O(n).
Definition at line 7 of file IOs.cpp. References buffer, contatore, node::freq, and stream. |
|
il distruttore non fa altro che chiudere lo stream; Complessità: O(1). Definition at line 28 of file IOs.cpp. References stream. |
|
funzione che eleva l'intero a a potenza b. ho definito questa funzione perché opera solo sugli interi, è necessaria per la inserisci() e la svuota(), non uso la pow predefinita per evitare che la conversione in double e da double causi problemi. Complessità: O(1).
Definition at line 71 of file IOs.cpp. Referenced by inserisci(), and svuota(). |
|
funzione che inserisci l'intero b (o 0 o 1) nel file. notare che l'intero viene convertito implicitamente in booleiano ossia può essere un qualunque valore != 0 e viene interpretato come 1. quando il buffer risulta essere pieno viene stampato il carattere corrispondente alla codifica di 8 bit presente nel buffer, è il compressore che passa un bit alla volta a questa funzione ogni volta che traduce un carattere; Complessità: O(1).
Definition at line 37 of file IOs.cpp. References buffer, contatore, elevato(), and stream. Referenced by compressore::comprimi(). |
|
funzione che stampa il contenuto del buffer anche se questo non è pieno. questa funzione stampa il contenuto del buffer interpretando le posizioni che non sono ancora state scritte come se fossero poste a 0, viene invocata dalla funzione comprimi(), del compressore, dopo di che la compressione è terminata. Complessità: O(1).
Definition at line 58 of file IOs.cpp. References buffer, contatore, elevato(), and stream. Referenced by compressore::comprimi(). |
|
il buffer è dove vengono inseriti i bit della codifica la classe compressore provvede a inserire i bit della codifica all'interno del buffer tramite il metodo pubblico inserisci, a sua volta questo, se il buffer è pieno, lo svuota stampando il carattere corrispondente
Definition at line 44 of file IOs.h. Referenced by inserisci(), IOs(), and svuota(). |
|
contatore per lo scorrimento del buffer. quando il contaore raggiunge il valore 8 il buffer viene tradotto in carattere e viene stampato sul file, mentre il contatore viene resettato.
Definition at line 36 of file IOs.h. Referenced by inserisci(), IOs(), and svuota(). |
|
stream per la scrittura. viene aperto in modo binario dal costruttore, deve essere per forza in scrittura non formattata, altrimenti alcuni caratteri portrebbero non essere stampati correttamente dato che le funzioni inserisci() e svuota() inseriscono caratteri di qualsiasi combinazione binaria.
Definition at line 29 of file IOs.h. Referenced by inserisci(), IOs(), svuota(), and ~IOs(). |