#ifndef __RECTYPES_H
#define __RECTYPES_H


#define NOERR   0
#define FIELDERR -1

typedef long  TRecnotype;


// @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

// @doc EXTERNAL
     
// @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

// @doc EXTERNAL
     
// @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
     _studir,     // @emem Riferimento operazioni al direttorio studio
     _extdir };   // @emem Riferimento operazioni ad un direttorio assoluto

// @doc EXTERNAL
     
// @enum TDirop | Comandi per la gestione di <c TDir>     
enum TDirop { 
     _nordirop,   // @emem Riferimento per operazioni normali
     _sysdirop }; // @emem Riferimento per operazioni di sistema

// @doc EXTERNAL

// @enum TFieldtypes | Elenco tipi di campi
enum TFieldtypes { 
     _nullfld,     // @emem Campo non definito
     _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
     
// @doc EXTERNAL

// @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

// @doc EXTERNAL
                                  
// @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 secondaria 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 Chiave primaria duplicata
     _islocked = 225,        // @emem Record bloccato
     _isbadtrc = 226         // @emem Tracciato Record errato o mancante
};
                                                  
typedef long  TRecnotype;

#endif // __RECTYPES_H