#ifndef __VARREC_H #define __VARREC_H #ifndef __ISAM_H #include #endif #ifndef __EXPR_H #include #endif class TVariable_rectype; class TVariable_field; // @doc EXTERNAL // // @type VIRTUAL_GET_FUNCTION | Prototipo funzione di calcolo del valore di un campo virtuale // da definire quando non sia sufficente una semplice espressione typedef const char * (*VIRTUAL_GET_FUNCTION)(TVariable_rectype & r); // @doc EXTERNAL // @class TVariable_rectype | Classe per la definizione del record di file con campi virtuali (variabili) // @base public | TRectype class TVariable_rectype : public TRectype // @author:(INTERNAL) Sandro { // @access:(INTERNAL) Private Member TAssoc_array _virtual_fields; TString16 _memo_fld; bool _memo_fld_to_load; protected: // @cmember Segnalazione di un campo inesistente virtual void unknown_field(const char* name) const; // @cmember Indica se il record implementa i campi variabili automatici virtual bool auto_virtual_fields() const { return TRUE; } // @cmember Ritorna il contenuto del campo

(non tipizzata) virtual const TString & get_str(const char* fieldname) const ; // @cmember Setta il contenuto del campo

(non tipizzata) virtual void put_str(const char* fieldname, const char* val); // void put(const char* fieldname, TString& val); public: // @access Public Member // @cmember Duplica il tipo di record virtual TObject* dup() const; // @cmember Setta il record come non vuoto (chiama virtual TFieldtypes type(const char* fieldname) const; // @cmember Ritorna la lunghezza del campo

virtual int length(const char* fieldname) const; // @cmember Ritorna numero di decimali del campo

virtual int ndec(const char* fieldname) const; // @cmember Indica se esiste il campo

virtual bool exist(const char* fieldname) const; // @cmember Vuota il campo puntato da

virtual void zero(const char * fieldname); // @cmember Vuota tutto il record usando il carattere

virtual void zero(char c = '\0'); // @cmember Assegnazione tra TVariable_rectype e TRectype virtual TRectype& operator =(const TRectype& rec); // @cmember Assegnazione tra TVariable_rectype virtual TVariable_rectype& operator =(const TVariable_rectype& rec); // @cmember Assegnazione tra TRectype const char * virtual TRectype& operator =(const char* rec); void set_memo_fld(const char * fieldname); void reset_memo_fld() { set_memo_fld(NULL); } virtual void init_memo(const TRecnotype recno = RECORD_NON_FISICO); virtual void write_memo(isdef * file, const TRecnotype recno); virtual TVariable_field * add_field(const char * fieldname, const char * expr = "", TTypeexp type = _strexpr); virtual TVariable_field * add_field(const char * fieldname, TExpression * expr, TTypeexp type = _strexpr); virtual TVariable_field * add_field(const char * fieldname, VIRTUAL_GET_FUNCTION getfunc); virtual void remove_field(const char * fieldname = NULL); virtual const char * get_variable_field_names(bool restart = FALSE) ; // @cmember Costruttore Costruisce un record staccato da un file. // Sarebbe meglio utilizzare una delle altre due TVariable_rectype(int logicnum); // @cmember Costruttore. Costruisce record e lo associa al file isam

TVariable_rectype(const TBaseisamfile* i); // @cmember Costruttore. Costruisce il record a partire da

TVariable_rectype(const TRectype & r); // @cmember Costruttore. Costruisce il record a partire da

TVariable_rectype(const TVariable_rectype & r); // @cmember Distruttore virtual ~TVariable_rectype() {} }; // @doc EXTERNAL // @class TAuto_variable_rectype | Classe per la definizione del record di file con campi virtuali (variabili) // @base public | TVariable_rectype class TAuto_variable_rectype : public TVariable_rectype // @author:(INTERNAL) Sandro { protected: virtual bool auto_virtual_fields() const { return TRUE; } public: // @cmember Costruttore Costruisce un record staccato da un file. // Sarebbe meglio utilizzare una delle altre due TAuto_variable_rectype(int logicnum) : TVariable_rectype(logicnum) {} // @cmember Costruttore. Costruisce record e lo associa al file isam

TAuto_variable_rectype(const TBaseisamfile* i) : TVariable_rectype(i) {} // @cmember Costruttore. Costruisce il record a partire da

TAuto_variable_rectype(const TRectype & r) : TVariable_rectype(r) {} // @cmember Costruttore. Costruisce il record a partire da

TAuto_variable_rectype(const TVariable_rectype & r) : TVariable_rectype(r) {} // @cmember Distruttore virtual ~TAuto_variable_rectype() {} }; #endif // __VARREC_