#ifndef CDF_H
#define CDF_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
const char kCDFEstensioneFileCodificato[] = "cdf";
const char kCDFEstensioneFileInChiaro[] = "txt";
enum { kCDFNoDati, kCDFInChiaro, kCDFCodificati };
class CDF {
public:
CDF();
CDF(const CDF& daCopiare);
virtual ~CDF();
CDF& operator=(const CDF& daAssegnare);
void imposta_chiave( // throw( const char* );
const char *sChiave, unsigned long l = 0xFFFFFFFF );
const char *ricava_chiave( void );
unsigned long lunghezza_chiave( void ) { return lChiave; }
bool chiave_presente( void ) { return chiave != NULL; }
bool chiave_valida( void ) { return nCarMancanti==0 && chiave!=NULL; }
void imposta_dati( // throw( const char* )
int tipoDati, const char *sDati, unsigned long l = 0xFFFFFFFF );
const char *ricava_dati( void );
unsigned long lunghezza_dati( void ) { return lDati; }
bool dati_presenti( void ) { return dati != NULL; }
bool dati_validi( void ) { return dati != NULL; }
void elabora( void ); // throw( const char* )
void salva_dati( const char *percorso_file ); // throw( const char* )
int tipologia_dati( void ) { return tDati; }
unsigned char carattere_mancante( unsigned int indice )
{ return indice<nCarMancanti ? carMancanti[indice] : '\0'; }
unsigned int totale_caratteri_mancanti( void ) { return nCarMancanti; }
protected:
private:
char *chiave; // la stringa della chiave
unsigned long lChiave; // la quantita di caratteri nella chiave
char *dati; // la stringa dei dati
unsigned long lDati; // la quantita di caratteri nei dati
int tDati; // kNoDati, kDaCodificare, kDaDecodificare
unsigned char carMancanti[256]; // lista dei car. mancanti nella chiave
unsigned int nCarMancanti; // la quantita dei caratteri mancanti
void InizializzaNullo( void );
bool Copia( const CDF *originale );
void InizializzaCaratteriMancanti( void );
void ImpostaTipoDati( int tipoDati );
bool VerificaChiave( void );
void Codifica( void ); // throw( const char* )
void Decodifica( void ); // throw( const char* )
bool RinnovaDati( char *nuoviDati, unsigned long l );
};
#endif // CDF_H