summaryrefslogtreecommitdiff
path: root/storage/connect/tabtbl.h
blob: 76733f56cc1856126960a9361ff4a511c703f302 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*************** 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