IOs Class Reference

classe per la scrittura del codice More...

#include <IOs.h>

List of all members.

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


Detailed Description

classe per la scrittura del codice

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

See also:
compressore

Definition at line 19 of file IOs.h.


Constructor & Destructor Documentation

IOs::IOs const char *  file,
frequenza **  v,
int  n
 

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).

Parameters:
file | file dove si deve scrivere il codice.
v | vettore di puntatori a oggetti di tipo frequenza.
n | numero di caratteri distinti.
See also:
compressore, stream

Definition at line 7 of file IOs.cpp.

References buffer, contatore, node::freq, and stream.

IOs::~IOs  ) 
 

il distruttore

non fa altro che chiudere lo stream; Complessità: O(1).

Definition at line 28 of file IOs.cpp.

References stream.


Member Function Documentation

int IOs::elevato int  a,
int  b
[protected]
 

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).

Parameters:
a | base.
b | esponente.
See also:
inserisci(), svuota(), traduci()

Definition at line 71 of file IOs.cpp.

Referenced by inserisci(), and svuota().

void IOs::inserisci int  b  ) 
 

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).

Parameters:
b | l'intero che viene inserito nel buffer (ed eventualmente nel file).
See also:
buffer, contatore, compressore.

Definition at line 37 of file IOs.cpp.

References buffer, contatore, elevato(), and stream.

Referenced by compressore::comprimi().

void IOs::svuota  ) 
 

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).

See also:
buffer, contatore, compressore, compressore::comprimi()

Definition at line 58 of file IOs.cpp.

References buffer, contatore, elevato(), and stream.

Referenced by compressore::comprimi().


Member Data Documentation

bool IOs::buffer[8] [protected]
 

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

See also:
contatore, inserisci(), svuota()

Definition at line 44 of file IOs.h.

Referenced by inserisci(), IOs(), and svuota().

int IOs::contatore [protected]
 

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.

See also:
inserisci(), buffer

Definition at line 36 of file IOs.h.

Referenced by inserisci(), IOs(), and svuota().

fstream IOs::stream [protected]
 

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.

See also:
inserisci(), svuota()

Definition at line 29 of file IOs.h.

Referenced by inserisci(), IOs(), svuota(), and ~IOs().


The documentation for this class was generated from the following files:
Generated on Sat May 20 14:57:56 2006 for Huffzip by  doxygen 1.4.6-NO