| 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 | |