1/*************** TabSys H Declares Source Code File (.H) ***************/
2/* Name: TABSYS.H Version 2.3 */
3/* */
4/* (C) Copyright to the author Olivier BERTRAND 2004-2014 */
5/* */
6/* This file contains the XDB system tables classes declares. */
7/***********************************************************************/
8typedef class INIDEF *PINIDEF;
9typedef class TDBINI *PTDBINI;
10typedef class INICOL *PINICOL;
11typedef class TDBXIN *PTDBXIN;
12typedef class XINCOL *PXINCOL;
13
14/* --------------------------- INI classes --------------------------- */
15
16/***********************************************************************/
17/* INI, XDB and XCL tables. */
18/***********************************************************************/
19class DllExport INIDEF : public TABDEF { /* INI table description */
20 friend class TDBINI;
21 friend class TDBXIN;
22 friend class TDBXTB;
23 friend class TDBRTB;
24 friend class TDBXCL;
25 public:
26 // Constructor
27 INIDEF(void);
28
29 // Implementation
30 virtual const char *GetType(void) {return "INI";}
31
32 // Methods
33 virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
34 virtual PTDB GetTable(PGLOBAL g, MODE m);
35
36 protected:
37 // Members
38 char *Fn; /* Path/Name of corresponding file */
39 char *Xname; /* The eventual table name */
40 char Layout; /* R: Row, C: Column */
41 int Ln; /* Length of section list buffer */
42 }; // end of INIDEF
43
44/***********************************************************************/
45/* This is the class declaration for the INI tables. */
46/* These are tables represented by a INI like file. */
47/***********************************************************************/
48class TDBINI : public TDBASE {
49 friend class INICOL;
50 public:
51 // Constructor
52 TDBINI(PINIDEF tdp);
53 TDBINI(PTDBINI tdbp);
54
55 // Implementation
56 virtual AMT GetAmType(void) {return TYPE_AM_INI;}
57 virtual PTDB Duplicate(PGLOBAL g) {return (PTDB)new(g) TDBINI(this);}
58
59 // Methods
60 virtual PTDB Clone(PTABS t);
61 virtual int GetRecpos(void) {return N;}
62 virtual int GetProgCur(void) {return N;}
63//virtual int GetAffectedRows(void) {return 0;}
64 virtual PCSZ GetFile(PGLOBAL g) {return Ifile;}
65 virtual void SetFile(PGLOBAL g, PCSZ fn) {Ifile = fn;}
66 virtual void ResetDB(void) {Seclist = Section = NULL; N = 0;}
67 virtual void ResetSize(void) {MaxSize = -1; Seclist = NULL;}
68 virtual int RowNumber(PGLOBAL g, bool b = false) {return N;}
69 char *GetSeclist(PGLOBAL g);
70
71 // Database routines
72 virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
73 virtual int Cardinality(PGLOBAL g);
74 virtual int GetMaxSize(PGLOBAL g);
75 virtual bool OpenDB(PGLOBAL g);
76 virtual int ReadDB(PGLOBAL g);
77 virtual int WriteDB(PGLOBAL g);
78 virtual int DeleteDB(PGLOBAL g, int irc);
79 virtual void CloseDB(PGLOBAL g);
80
81 protected:
82 // Members
83 PCSZ Ifile; // The INI file
84 char *Seclist; // The section list
85 char *Section; // The current section
86 int Seclen; // Length of seclist buffer
87 int N; // The current section index
88 }; // end of class TDBINI
89
90/***********************************************************************/
91/* Class INICOL: XDB table access method column descriptor. */
92/***********************************************************************/
93class INICOL : public COLBLK {
94 public:
95 // Constructors
96 INICOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "INI");
97 INICOL(INICOL *colp, PTDB tdbp); // Constructor used in copy process
98
99 // Implementation
100 virtual int GetAmType(void) {return TYPE_AM_INI;}
101 virtual void SetTo_Val(PVAL valp) {To_Val = valp;}
102
103 // Methods
104 virtual bool SetBuffer(PGLOBAL g, PVAL value, bool ok, bool check);
105 virtual void ReadColumn(PGLOBAL g);
106 virtual void WriteColumn(PGLOBAL g);
107 virtual void AllocBuf(PGLOBAL g);
108
109 protected:
110 // Default constructor not to be used
111 INICOL(void) {}
112
113 // Members
114 char *Valbuf; // To the key value buffer
115 int Flag; // Tells what set in value
116 int Long; // Buffer length
117 PVAL To_Val; // To value used for Update/Insert
118 }; // end of class INICOL
119
120/* --------------------------- XINI class ---------------------------- */
121
122/***********************************************************************/
123/* This is the class declaration for the XINI tables. */
124/* These are tables represented by a INI like file */
125/* having 3 columns Section, Key, and Value. */
126/***********************************************************************/
127class TDBXIN : public TDBINI {
128 friend class XINCOL;
129 public:
130 // Constructor
131 TDBXIN(PINIDEF tdp);
132 TDBXIN(PTDBXIN tdbp);
133
134 // Implementation
135 virtual AMT GetAmType(void) {return TYPE_AM_INI;}
136 virtual PTDB Duplicate(PGLOBAL g) {return (PTDB)new(g) TDBXIN(this);}
137
138 // Methods
139 virtual PTDB Clone(PTABS t);
140 virtual int GetRecpos(void);
141 virtual bool SetRecpos(PGLOBAL g, int recpos);
142 virtual void ResetDB(void)
143 {Seclist = Section = Keycur = NULL; N = 0; Oldsec = -1;}
144 char *GetKeylist(PGLOBAL g, char *sec);
145
146 // Database routines
147 virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
148 virtual int Cardinality(PGLOBAL g);
149 virtual bool OpenDB(PGLOBAL g);
150 virtual int ReadDB(PGLOBAL g);
151 virtual int WriteDB(PGLOBAL g);
152 virtual int DeleteDB(PGLOBAL g, int irc);
153
154 protected:
155 // Members
156 char *Keylist; // The key list
157 char *Keycur; // The current key
158 int Keylen; // Length of keylist buffer
159 short Oldsec; // Last current section
160 }; // end of class TDBXIN
161
162/***********************************************************************/
163/* Class XINCOL: XIN table access method column descriptor. */
164/***********************************************************************/
165class XINCOL : public INICOL {
166 public:
167 // Constructors
168 XINCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "INI");
169 XINCOL(XINCOL *colp, PTDB tdbp); // Constructor used in copy process
170
171 // Implementation
172
173 // Methods
174 virtual void ReadColumn(PGLOBAL g);
175 virtual void WriteColumn(PGLOBAL g);
176
177 protected:
178 // Default constructor not to be used
179 XINCOL(void) {}
180
181 // Members
182 }; // end of class XINICOL
183