Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.arcetri.astro.it/science/Radio/red/nuovastrut/node21.html
Дата изменения: Fri Oct 31 14:48:02 2003 Дата индексирования: Sat Dec 22 10:38:39 2007 Кодировка: |
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));