#ifndef __RECTYPES_H
#define __RECTYPES_H


#define NOERR   0
#define FIELDERR -1

// @T
typedef long  TRecnotype;
// @END


// @doc EXTERNAL

// @enum TFilelock | Comandi per l'apertura dei file
enum TFilelock { 
     _excllock = 0x100,   // @emem Apertura in modo esclusivo
     _autolock = 0x200,   // @emem Apertura del file in modo auto
     _manulock = 0x400};  // @emem Apertura del file in modo manuale
     
// @enum TReclock | Comandi per la gestione dei lock su record     
enum TReclock { 
     _unlock = 0x1000,                // @emem Sblocca il record
     _nolock = 0x2000,                // @emem Nessuna operazione di lock
     _lock = 0x4000,                  // @emem Blocca il record
     _testandlock = (int)0x8000} ;    // @emem Blocca il record se possibile, altrimenti ritorna errore
     
// @enum TDirtype | Comandi per la gestione di <c TDir>     
enum TDirtype { 
     _nordir,     // @emem Riferimento operazioni col prefix corrente
     _comdir } ;  // @emem Riferimento operazioni al direttorio comune
     
// @enum TDirop | Comandi per la gestione di <c TDir>     
enum TDirop { 
     _nordirop,   // @emem Riferimento per operazioni normali
     _sysdirop }; // @emem Riferimento per operazioni di sistema

// @enum TFieldtypes | Elenco tipi di campi
enum TFieldtypes { 
     _nullfld,     // @emem Campo vuoto
     _alfafld,     // @emem Campo di tipo alfanumerico
     _intfld,      // @emem Campo di tipo intero
     _longfld,     // @emem Campo di tipo intero lungo
     _realfld,     // @emem Campo di tipo reale (vedi <c real>)
     _datefld,     // @emem Campo di tipo data (vedi <c TDate>)
     _wordfld,     // @emem Campo di tipo intero senza segno
     _charfld,     // @emem Campo di tipo carattere
     _boolfld ,    // @emem Campo di tipo booleano
     _intzerofld,  // @emem Campo di tipo intero zero filled
     _longzerofld, // @emem Campo di tipo intero lungo zero filled
     _memofld} ;   // @emem Campo di tipo memo
     

// @enum TIsamop | Comandi per eseguire operazioni di lettura sul file
enum TIsamop { 
     _isfirst = 0x0,       // @emem Legge il primo record del file
     _islast = 0x1,        // @emem Legge l'ultimo record del file
     _isnext= 0x2,         // @emem Legge il prossimo record del file
     _isprev = 0x4,        // @emem Legge il precedente record del file
     _iscurr = 0x8,        // @emem Legge il record corrente del file (rilettura)
     _isequal = 0x10,      // @emem Legge il record con chiave uguale a quella specificata
     _isgreat = 0x20,      // @emem Legge il record con chiave maggiore di quella specificata
     _isgteq = 0x40,       // @emem Legge il record con chiave maggiore o uguale di quella specificata
     _isnextn = 0x100,     // @emem Legge i prossimi n record
     _isprevn = 0x200} ;   // @emem Legge i precedenti n record
                                  
// @enum TIsamerr | Elenco codici di errore                              
enum TIsamerr { 
     _iseof = 201,           // @emem End of file
     _isbof = 202,           // @emem Begin of file
     _isfileovf = 203,       // @emem Overflow del file
     _iskeynotfound = 204,   // @emem Chiave non trovata
     _isemptyfile = 205,     // @emem File vuoto
     _isdupkey = 206,        // @emem Chiave duplicata
     _isnocurkey = 207,      // @emem Non esiste la chiave corrente
     _iskeyrangeerr = 211,   // @emem Valore errato della chiave
     _iskeyerr = 212,        // @emem Errore generico della chiave
     _iskeylenerr = 214,     // @emem Lunghezza della chiave errata
     _ispatherr = 216,       // @emem File indice non coerente
     _ispathfull = 217,      // @emem UNUSED
     _isnrecerr = 218,       // @emem Errore sul numero dei record
     _isfilefull = 219,      // @emem File o disco pieno
     _isnotopen = 220,       // @emem File non aperto
     _isnotcurr = 221,       // @emem Non esiste il record corrente
     _isalropen = 222,       // @emem File gia' aperto
     _isdeadlock = 223,      // @emem Condizione di deadlock
     _isreinsert = 224,      // @emem Chiva duplicata su indici diversi da 1
     _islocked = 225} ;      // @emem Record bloccato
                                                  
typedef long  TRecnotype;

#endif // __RECTYPES_H

