1 | /*************** Catalog H Declares Source Code File (.H) **************/ |
2 | /* Name: CATALOG.H Version 3.3 */ |
3 | /* */ |
4 | /* (C) Copyright to the author Olivier BERTRAND 2000-2015 */ |
5 | /* */ |
6 | /* This file contains the CATALOG PlugDB classes definitions. */ |
7 | /***********************************************************************/ |
8 | #ifndef __CATALOG__H |
9 | #define __CATALOG__H |
10 | |
11 | #include "block.h" |
12 | |
13 | /***********************************************************************/ |
14 | /* Defines the length of a buffer to contain entire table section. */ |
15 | /***********************************************************************/ |
16 | #define PLG_MAX_PATH 144 /* Must be the same across systems */ |
17 | #define PLG_BUFF_LEN 100 /* Number of lines in binary file buffer */ |
18 | |
19 | |
20 | //typedef class INDEXDEF *PIXDEF; |
21 | |
22 | /***********************************************************************/ |
23 | /* Defines the structure used to enumerate tables or views. */ |
24 | /***********************************************************************/ |
25 | typedef struct _curtab { |
26 | PRELDEF CurTdb; |
27 | char *Curp; |
28 | char *Tabpat; |
29 | bool Ispat; |
30 | bool NoView; |
31 | int Nt; |
32 | char *Type[16]; |
33 | } CURTAB, *PCURTAB; |
34 | |
35 | /***********************************************************************/ |
36 | /* Defines the structure used to get column catalog info. */ |
37 | /***********************************************************************/ |
38 | typedef struct _colinfo { |
39 | PCSZ Name; |
40 | int Type; |
41 | int Offset; |
42 | int Length; |
43 | int Key; |
44 | int Precision; |
45 | int Scale; |
46 | int Opt; |
47 | int Freq; |
48 | PCSZ ; |
49 | PCSZ Datefmt; |
50 | PCSZ Fieldfmt; |
51 | ushort Flags; // Used by MariaDB CONNECT handlers |
52 | } COLINFO, *PCOLINFO; |
53 | |
54 | /***********************************************************************/ |
55 | /* CATALOG: base class for catalog classes. */ |
56 | /***********************************************************************/ |
57 | class DllExport CATALOG { |
58 | friend class RELDEF; |
59 | friend class TABDEF; |
60 | friend class DIRDEF; |
61 | friend class OEMDEF; |
62 | public: |
63 | CATALOG(void); // Constructor |
64 | virtual ~CATALOG() { } // Make -Wdelete-non-virtual-dtor happy |
65 | |
66 | // Implementation |
67 | int GetCblen(void) {return Cblen;} |
68 | bool GetDefHuge(void) {return DefHuge;} |
69 | void SetDefHuge(bool b) {DefHuge = b;} |
70 | char *GetCbuf(void) {return Cbuf;} |
71 | |
72 | // Methods |
73 | virtual void Reset(void) {} |
74 | virtual bool CheckName(PGLOBAL, char*) {return true;} |
75 | virtual bool ClearName(PGLOBAL, PSZ) {return true;} |
76 | virtual PRELDEF MakeOneTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;} |
77 | virtual PRELDEF GetTableDescEx(PGLOBAL, PTABLE) {return NULL;} |
78 | //virtual PRELDEF GetTableDesc(PGLOBAL, LPCSTR, LPCSTR, |
79 | // PRELDEF* = NULL) {return NULL;} |
80 | virtual PRELDEF GetFirstTable(PGLOBAL) {return NULL;} |
81 | virtual PRELDEF GetNextTable(PGLOBAL) {return NULL;} |
82 | virtual bool TestCond(PGLOBAL, const char*, const char*) {return true;} |
83 | virtual bool DropTable(PGLOBAL, PSZ, bool) {return true;} |
84 | virtual PTDB GetTable(PGLOBAL, PTABLE, |
85 | MODE = MODE_READ, LPCSTR = NULL) {return NULL;} |
86 | virtual void TableNames(PGLOBAL, char*, int, int[]) {} |
87 | virtual void ColumnNames(PGLOBAL, char*, char*, int, int[]) {} |
88 | virtual void ColumnDefs(PGLOBAL, char*, char*, int, int[]) {} |
89 | virtual void *DecodeValues(PGLOBAL, char*, char*, char*, |
90 | int, int[]) {return NULL;} |
91 | virtual int ColumnType(PGLOBAL, char*, char*) {return 0;} |
92 | virtual void ClearDB(PGLOBAL) {} |
93 | |
94 | protected: |
95 | virtual bool ClearSection(PGLOBAL, const char*, const char*) {return true;} |
96 | //virtual PRELDEF MakeTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;} |
97 | |
98 | // Members |
99 | char *Cbuf; /* Buffer used for col section */ |
100 | int Cblen; /* Length of suballoc. buffer */ |
101 | CURTAB Ctb; /* Used to enumerate tables */ |
102 | bool DefHuge; /* true: tables default to huge */ |
103 | }; // end of class CATALOG |
104 | |
105 | #endif // __CATALOG__H |
106 | |