campo-sirio/include/textset.h
guy 13949df405 Patch level : 4.0
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Riporto preventivo delle nuove classi nate nella 3.0


git-svn-id: svn://10.65.10.50/trunk@14680 c028cbd2-c16b-5b4b-a496-9718f37d4682
2006-12-20 15:35:49 +00:00

130 lines
3.9 KiB
C++
Executable File

#ifndef __TEXTSET_H
#define __TEXTSET_H
#ifndef __REPORT_H
#include <report.h>
#endif
///////////////////////////////////////////////////////////
// TText_recordset
// Classe virtuale per gestire file di testo generici
///////////////////////////////////////////////////////////
enum TQuery_type { _qt_none, _qt_select, _qt_create };
class TText_recordset : public TRecordset
{
TRecnotype _curr;
TString_array _rec;
protected:
TString _query;
TRecordset_column_info _info; // Informazioni sull'unica colonna esistente
protected:
virtual TQuery_type parse_query(const char* query, TFilename& table);
virtual bool load_file(const TFilename& n);
TToken_string& row(TRecnotype n = -1) const;
public:
virtual unsigned int columns() const { return 1; }
virtual const TRecordset_column_info& column_info(unsigned int) const { return _info; }
virtual const TRecordset_column_info& column_info(const char* column) const;
virtual int find_column(const char* column) const;
virtual TRecnotype items() const;
virtual bool move_to(TRecnotype pos);
virtual TRecnotype current_row() const { return _curr; }
virtual void requery();
virtual const TVariant& get(unsigned int column) const;
public:
virtual const TString& query_text() const { return _query; }
virtual bool destroy(TRecnotype r = -1);
virtual TRecnotype new_rec(const char* buf = NULL);
virtual bool set(unsigned int fld, const TVariant& var);
virtual bool set(const char* fld, const TVariant& var);
virtual bool exec(const char* query);
virtual bool save_as_text(const char* path);
virtual bool save_as(const char* path, TRecordsetExportFormat fmt = fmt_text);
TText_recordset(const char* query);
};
///////////////////////////////////////////////////////////
// TCSV_recordset
// Classe per file di testo con campi separati da virgola (o altro separatore)
///////////////////////////////////////////////////////////
class TCSV_recordset : public TText_recordset
{
char _separator;
TArray _trc;
protected:
virtual TQuery_type parse_query(const char* query, TFilename& table);
public:
virtual unsigned int columns() const;
virtual const TRecordset_column_info& column_info(unsigned int column) const;
virtual const TVariant& get(unsigned int column) const;
virtual TRecnotype new_rec(const char* buf = NULL);
virtual bool set(unsigned int fld, const TVariant& var);
virtual bool load_file(const TFilename& n);
public:
TCSV_recordset(const char* query);
};
///////////////////////////////////////////////////////////
// TAS400_recordset
// Classe per file di testo con record a lunghezza fissa
///////////////////////////////////////////////////////////
struct TAS400_column_info : public TRecordset_column_info
{
TVariant _default;
bool _required;
TAS400_column_info() : _required(false) { }
};
class TAS400_recordset : public TText_recordset
{
protected:
TAS400_column_info _key;
TAssoc_array _trc;
protected:
virtual TQuery_type parse_query(const char* query, TFilename& table);
virtual bool load_file(const TFilename& n);
virtual int find_column(const char* column) const;
virtual bool save_as_text(const char* path);
TAS400_column_info* parse_field(const char* column, int& c, bool create);
bool set_field(const TAS400_column_info& fi, const TVariant& var);
public:
virtual TRecnotype new_rec(const char* buf = NULL);
virtual bool set(const char* column, const TVariant& var);
virtual const TRecordset_column_info& column_info(const char* colunmn) const;
virtual const TVariant& get(const char* colunmn) const;
public:
bool create_field(const char* name, int pos, int len, TFieldtypes t = _alfafld,
bool required = false, const TVariant& def = NULL_VARIANT);
int record_length() const { return _info._width; }
int key_length() const { return _key._width; }
int key_position() const { return _key._pos; }
virtual const TString& rec_type(TRecnotype r = -1) const;
TAS400_recordset(const char* query);
};
#endif