Intro

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

Pages: 1 2 3
Skip to toolbar