2013-02-07 10:34:27 +01:00
|
|
|
/*************** TabTbl H Declares Source Code File (.H) ***************/
|
|
|
|
/* Name: TABTBL.H Version 1.2 */
|
|
|
|
/* */
|
|
|
|
/* (C) Copyright to the author Olivier BERTRAND 2008-2012 */
|
|
|
|
/* */
|
|
|
|
/* This file contains the TDBTBL classes declares. */
|
|
|
|
/***********************************************************************/
|
|
|
|
//#include "osutil.h"
|
|
|
|
#include "block.h"
|
|
|
|
#include "colblk.h"
|
|
|
|
|
|
|
|
typedef class TBLDEF *PTBLDEF;
|
|
|
|
typedef class TDBTBL *PTDBTBL;
|
|
|
|
typedef class TBLCOL *PTBLCOL;
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Defines the structure used for multiple tables. */
|
|
|
|
/***********************************************************************/
|
|
|
|
typedef struct _tablist *PTBL;
|
|
|
|
|
|
|
|
typedef struct _tablist {
|
|
|
|
PTBL Next;
|
|
|
|
char *Name;
|
|
|
|
char *DB;
|
|
|
|
} TBLIST;
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* TBL table. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport TBLDEF : public TABDEF { /* Logical table description */
|
|
|
|
friend class TDBTBL;
|
|
|
|
public:
|
|
|
|
// Constructor
|
|
|
|
TBLDEF(void);
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
virtual const char *GetType(void) {return "TBL";}
|
|
|
|
PTBL GetTables(void) {return To_Tables;}
|
|
|
|
//int GetNtables(void) {return Ntables;}
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
|
|
|
|
virtual PTDB GetTable(PGLOBAL g, MODE m);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// Members
|
|
|
|
PTBL To_Tables; /* To the list of tables */
|
|
|
|
bool Accept; /* TRUE if bad tables are accepted */
|
|
|
|
int Maxerr; /* Maximum number of bad tables */
|
|
|
|
int Ntables; /* Number of tables */
|
|
|
|
}; // end of TBLDEF
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* This is the TBL Access Method class declaration. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport TDBTBL : public TDBASE {
|
|
|
|
friend class TBLCOL;
|
|
|
|
friend class TBTBLK;
|
|
|
|
friend class TDBPLG;
|
|
|
|
public:
|
|
|
|
// Constructor
|
|
|
|
TDBTBL(PTBLDEF tdp = NULL);
|
|
|
|
//TDBTBL(PTDBTBL tdbp);
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
virtual AMT GetAmType(void) {return TYPE_AM_TBL;}
|
|
|
|
//virtual PTDB Duplicate(PGLOBAL g)
|
|
|
|
// {return (PTDB)new(g) TDBTBL(this);}
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual void ResetDB(void);
|
|
|
|
//virtual PTABLE GetTablist(void) {return (PSZ)Tablist;}
|
|
|
|
//virtual PTDB CopyOne(PTABS t);
|
|
|
|
virtual int GetRecpos(void) {return Rows;}
|
|
|
|
virtual int GetBadLines(void) {return (int)Nbf;}
|
|
|
|
|
|
|
|
// Database routines
|
|
|
|
virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
|
|
|
|
virtual int GetMaxSize(PGLOBAL g);
|
|
|
|
virtual int GetProgMax(PGLOBAL g);
|
|
|
|
virtual int GetProgCur(void);
|
|
|
|
virtual int RowNumber(PGLOBAL g, bool b = FALSE);
|
|
|
|
virtual PCOL InsertSpecialColumn(PGLOBAL g, PCOL scp);
|
|
|
|
virtual bool OpenDB(PGLOBAL g);
|
|
|
|
virtual int ReadDB(PGLOBAL g);
|
|
|
|
virtual int WriteDB(PGLOBAL g);
|
|
|
|
virtual int DeleteDB(PGLOBAL g, int irc);
|
|
|
|
virtual void CloseDB(PGLOBAL g);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// Internal functions
|
|
|
|
PTDB GetSubTable(PGLOBAL g, PTBL tblp, PTABLE tabp);
|
|
|
|
bool InitTableList(PGLOBAL g);
|
|
|
|
bool TestFil(PGLOBAL g, PFIL filp, PTBL tblp);
|
|
|
|
|
|
|
|
// Members
|
|
|
|
PTABLE Tablist; // Points to the table list
|
|
|
|
PTABLE CurTable; // Points to the current table
|
|
|
|
PTDBASE Tdbp; // Current table PTDB
|
|
|
|
bool Accept; // TRUE if bad tables are accepted
|
|
|
|
int Maxerr; // Maximum number of bad tables
|
|
|
|
int Nbf; // Number of bad connections
|
|
|
|
int Rows; // Used for RowID
|
|
|
|
int Crp; // Used for CurPos
|
|
|
|
}; // end of class TDBTBL
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Class TBLCOL: TBL access method column descriptor. */
|
|
|
|
/* This A.M. is used for TBL tables. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport TBLCOL : public COLBLK {
|
|
|
|
friend class TDBTBL;
|
|
|
|
public:
|
|
|
|
// Constructors
|
|
|
|
TBLCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PSZ am = "TBL");
|
|
|
|
TBLCOL(TBLCOL *colp, PTDB tdbp); // Constructor used in copy process
|
|
|
|
//TBLCOL(SPCBLK *colp, PTDB tdbp); // Constructor used for pseudo columns
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
virtual int GetAmType(void) {return TYPE_AM_TBL;}
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual bool IsSpecial(void) {return Pseudo;}
|
|
|
|
virtual void ReadColumn(PGLOBAL g);
|
|
|
|
//virtual void WriteColumn(PGLOBAL g);
|
|
|
|
// void Print(PGLOBAL g, FILE *, UINT);
|
|
|
|
bool Init(PGLOBAL g);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// Default constructor not to be used
|
|
|
|
TBLCOL(void) {}
|
|
|
|
|
|
|
|
// Members
|
|
|
|
PCOL Colp; // Points to matching table column
|
|
|
|
PVAL To_Val; // To the matching column value
|
|
|
|
bool Pseudo; // TRUE for special columns
|
|
|
|
int Colnum; // Used when retrieving columns by number
|
|
|
|
}; // end of class TBLCOL
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Class TBTBLK: TDBPLG TABID special column descriptor. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class TBTBLK : public TIDBLK {
|
|
|
|
public:
|
|
|
|
// The constructor must restore Value because XOBJECT has a void
|
|
|
|
// constructor called by default that set Value to NULL
|
|
|
|
TBTBLK(PVAL valp) {Value = valp;}
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual void ReadColumn(PGLOBAL g);
|
|
|
|
|
|
|
|
// Fake operator new used to change TIDBLK into SDTBLK
|
|
|
|
void * operator new(size_t size, TIDBLK *sp) {return sp;}
|
|
|
|
|
|
|
|
#if !defined(__BORLANDC__)
|
|
|
|
// Avoid warning C4291 by defining a matching dummy delete operator
|
|
|
|
void operator delete(void *, TIDBLK*) {}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// Must not have additional members
|
|
|
|
}; // end of class TBTBLK
|