Intro
Contents
Il framework di Colibri contiene alcune classi per la configurazione dell’ambiente software; una di queste, PARAMLIST, viene presentata in questo articolo.
PARAM_LIST è utilizzata per salvare e richiamare parametri di configurazione del software: ad esempio, per conservare le informazioni sull’ultima directory usata per salvare i file tif; L
class AFX_EXT_CLASS PARAMLIST :public TAGS::TAG { public: PARAMLIST(); ~PARAMLIST(); STRING Get ( STRING id ); bool Get ( STRING id, int *v ); bool Get ( STRING id, float *v ); bool Get(STRING id, void *ptr, int mem_size); bool Get(STRING id, FILE_ITF *obj); STRING Put(STRING id,STRING value); bool Put ( STRING id, int value ); bool Put ( STRING id, float value ); bool Put(STRING id, void *ptr, int mem_size); bool Put(STRING id, FILE_ITF *obj); STRING FileSuffix(); bool Load(STRING path); bool Save(STRING path); /** \brief apre la configurazione locale \details La configurazione locale è una lista di parametri usati dall'applicazione */ static PARAMLIST *OpenUserConfig ( ); /** salva la configurazione locale */ static bool CloseUserConfig ( ); // pubblica sul sito ftp un file bool Publish(STRING fname, STRING remote_dir); // recupera dal sito remoto bool GetFtp(STRING fname, STRING remote_dir); __use_tag_funcs __use_private_struct };
PARAM_LIST gestisce una lista di parametri dei seguenti tipi:
- STRING
- int
- float
- void *mem
STRING è una stringa di caratteri TCHAR di lunghezza qualunque, int e float sono i tipi C /C++ equivalenti, void *mem è un blocco di memoria di mem_size byte;
identificatore del parametro
Ogni parametro è associato ad un id univoco, usato per la lettura/scrittura; le funzioni PARAM_LIST::Get e PARAM_LIST::Put richiedono come primo argomento l’identificatore del parametro
Salvare un parametro
Le funzioni PARAM_LIST::Put permettono di salvare un parametro; In particolare notare che la funzione
Put(STRING id, void *ptr, int mem_size) ;
richiede oltre all’identificatore ed al puntatore alla memoria, anche le dimensioni dal leggere; il puntatore ptr può essere, ad esempio, una struttura dati i cui campi contigui hanno dimensione fissa (quindi non puntatori allocati..)
Leggere un parametro
Per recuperare il valore di un parametro usare la funzione
PARAM_LIST::Get
Se il parametro cercato non è stato ancora memorizzato, le funzioni Get(..) rimandano un valore di default 0 per i tipi float e int, rimanda invece 0 nel caso di un parametro stringa o puntatore void *mem; in questo caso occorrerà gestire il risultato da parte del programmatore;
Leggere/Salvare un parametro con interfaccia FILE_ITF
Le classi che hanno interfaccia FILE_ITF possono essere utilizzate come parametri gestiti da PARAM_LIST; ad esempio, tutte le classi derivata da DOCUMENT posseggono questa interfaccia, quindi potranno essere usate come parametri gestibili in PARAM_LIST.
Il vantaggio principale in questo caso è nel fatto che le funzioni virtuali Read e Write di queste classi sono in grado di gestire anche la revisione della classe, e questo permette di alterare nel tempo facilmente il contenuto della classe, cosa che non è prevista per i parametri di tipo struc.
Salvataggio e scrittura su file
La scrittura su file della classe PARAMLIST è effettuata attraverso le funzioni
bool Load(STRING path);
bool Save(STRING path);
path è il percorso completo del file da generare/leggere; Il salvataggio avviene automaticamente sul file precedente, se presente, senza richiesta di conferma;
PARAM_LIST è una classe d’uso generale, ed il fatto che sia derivata da TAG fa intuire che la stessa sia usata anche per salvare configurazioni all’interno di altri file (ad esempio è usata nella classe DOCUMENT per salvare informazioni sul trattamento di uno specifico documento).