next up previous contents
Next: Routine di gestione dei Up: Routines di manipolazione del Previous: Routines di manipolazione del

Routines di traduzione degli identificativi di telescopio

 Per semplicità, gli identificativi relativi ad un telescopio sono raggruppati in un oggetto di tipo indexrec. Esistono due serie di routines, una che, per ogni identificativo, ritorna un puntatore ad un oggetto const *indexrec statico, ed un'altra che recupera l'identificativo desiderato da quest'oggetto. I prototipi delle funzioni sono:

const indexrec *GetIndexByTool(int toolid);
const indexrec *GetIndexByClass(const char * classid);
const indexrec *GetIndexByXdir(const char * xdir_id);
const indexrec *GetIndexByDir(const char * xdir_id);

long        IndexTool (const  indexrec *rec);
const char *IndexClass (const  indexrec *rec);
const char *IndexXdir (const  indexrec *rec);
const char *IndexDir (const  indexrec *rec);

per ottenere rispettivamente l'identificativo Toolbox, Class, ToolXdir e il nome della directory contenente i dati relativo alla radice della struttura (variable di environment SPT_BASE_DIR). Le routines che ritornano un const char* forniscono un puntatore ad un elemento del database statico che descrive i telescopi presenti in archivio. Tale database non viene modificato durante l'esecuzione del programma, pertanto il puntatore è garantito valido anche dopo successive chiamate a queste funzioni. In C è possibile modificare una stringa puntata da un puntatore const *, anche se questo genera un messaggio di warning. Modificare i valori ritornati da queste routine compromette il database, e va evitato.

In caso di errore, questi viene stampato su stderr e le funzioni ritornano NULL o 0. Le routines del secondo gruppo accettano un puntatore NULL come argomento. In questo modo è possibile effettuare qualsiasi traduzione con una singola chiamata a due funzioni, come nell'esempio seguente, che riporta il nome relativo della directory dati corrispondente ad un identificativo Toolbox:

const char *directory = IndexDir(GetIndexByTool(id_toolbox));


next up previous contents
Next: Routine di gestione dei Up: Routines di manipolazione del Previous: Routines di manipolazione del
Gianni Comoretto
2003-10-31