mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 db0c28eff8
			
		
	
	
	db0c28eff8
	
	
	
		
			
			Find and fix missing virtual override markings. Updates cmake maintainer flags to include -Wsuggest-override and -Winconsistent-missing-override.
		
			
				
	
	
		
			248 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			248 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*************** Tabmul H Declares Source Code File (.H) ***************/
 | |
| /*  Name: TABMUL.H   Version 1.5                                       */
 | |
| /*                                                                     */
 | |
| /*  (C) Copyright to PlugDB Software Development          2003-2017    */
 | |
| /*  Author: Olivier BERTRAND                                           */
 | |
| /*                                                                     */
 | |
| /*  This file contains the TDBMUL and TDBDIR classes declares.         */
 | |
| /***********************************************************************/
 | |
| #if defined(_WIN32)
 | |
| #include <io.h>
 | |
| #else   // !_WIN32
 | |
| #include <sys/types.h>
 | |
| #include <unistd.h>
 | |
| #include <sys/stat.h>
 | |
| #include <dirent.h>
 | |
| #endif  // !_WIN32
 | |
| //#include "osutil.h"
 | |
| #include "block.h"
 | |
| 
 | |
| typedef class TDBMUL *PTDBMUL;
 | |
| typedef class TDBSDR *PTDBSDR;
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the MUL Access Method class declaration for files that are */
 | |
| /*  physically split in multiple files having the same format.         */
 | |
| /***********************************************************************/
 | |
| class DllExport TDBMUL : public TDBASE {
 | |
| //friend class MULCOL;
 | |
|  public:
 | |
|   // Constructor
 | |
|   TDBMUL(PTDB tdbp);
 | |
|   TDBMUL(PTDBMUL tdbp);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return Tdbp->GetAmType();}
 | |
|   PTDB Duplicate(PGLOBAL g) override;
 | |
| 
 | |
|   // Methods
 | |
|   void ResetDB(void) override;
 | |
|   PTDB Clone(PTABS t) override;
 | |
|   bool IsSame(PTDB tp) override {return tp == (PTDB)Tdbp;}
 | |
|   PCSZ GetFile(PGLOBAL g) override {return Tdbp->GetFile(g);}
 | |
|   int  GetRecpos(void) override {return 0;}
 | |
|   PCOL ColDB(PGLOBAL g, PSZ name, int num) override;
 | |
|           bool InitFileNames(PGLOBAL g);
 | |
| 
 | |
|   // Database routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override
 | |
|                 {strcpy(g->Message, MSG(MUL_MAKECOL_ERR)); return NULL;}
 | |
|   int  Cardinality(PGLOBAL g) override;
 | |
|   int  GetMaxSize(PGLOBAL g) override;
 | |
|   int  GetProgMax(PGLOBAL g) override;
 | |
|   int  GetProgCur(void) override;
 | |
|   int  RowNumber(PGLOBAL g, bool b = false) override;
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  ReadDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
|   int  DeleteDB(PGLOBAL g, int irc) override;
 | |
|   void CloseDB(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
| 
 | |
|   // Members
 | |
|   PTDB    Tdbp;               // Points to a (file) table class
 | |
|   char*  *Filenames;          // Points to file names
 | |
|   int     Rows;               // Total rows of already read files
 | |
|   int     Mul;                // Type of multiple file list
 | |
|   int     NumFiles;           // Number of physical files
 | |
|   int     iFile;              // Index of currently processed file
 | |
|   }; // end of class TDBMUL
 | |
| 
 | |
| #if 0
 | |
| /***********************************************************************/
 | |
| /*  This is the MSD Access Method class declaration for files that are */
 | |
| /*  physically split in multiple files having the same format.         */
 | |
| /*  This sub-class also include files of the sub-directories.          */
 | |
| /***********************************************************************/
 | |
| class DllExport TDBMSD : public TDBMUL {
 | |
| 	//friend class MULCOL;
 | |
| public:
 | |
| 	// Constructor
 | |
| 	TDBMSD(PTDB tdbp) : TDBMUL(tdbp) {}
 | |
| 	TDBMSD(PTDBMSD tdbp) : TDBMUL(tdbp) {}
 | |
| 
 | |
| 	// Implementation
 | |
| 	PTDB Duplicate(PGLOBAL g);
 | |
| 
 | |
| 	// Methods
 | |
| 	PTDB Clone(PTABS t) override;
 | |
| 	bool InitFileNames(PGLOBAL g);
 | |
| 
 | |
| 	// Database routines
 | |
| 
 | |
| protected:
 | |
| 
 | |
| 	// Members
 | |
| }; // end of class TDBMSD
 | |
| #endif
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Directory listing table.                                           */
 | |
| /***********************************************************************/
 | |
| class DllExport DIRDEF : public TABDEF {    /* Directory listing table */
 | |
|   friend class CATALOG;
 | |
|   friend class TDBDIR;
 | |
|  public:
 | |
|   // Constructor
 | |
|   DIRDEF(void) {Fn = NULL; Incl = false; Huge = false;}
 | |
| 
 | |
|   // Implementation
 | |
|   const char *GetType(void) override {return "DIR";}
 | |
| 
 | |
|   // Methods
 | |
|   bool DefineAM(PGLOBAL g, LPCSTR am, int poff) override;
 | |
|   PTDB GetTable(PGLOBAL g, MODE m) override;
 | |
| 
 | |
|  protected:
 | |
|   // Members
 | |
|   PSZ     Fn;                 /* Path/Name of file search              */
 | |
|   bool    Incl;               /* true to include sub-directories       */
 | |
| 	bool    Huge;               /* true if files can be larger than 2GB  */
 | |
| 	bool    Nodir;							/* true to exclude directories           */
 | |
|   }; // end of DIRDEF
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the DIR Access Method class declaration for tables that    */
 | |
| /*  represent a directory listing. The pathname is given at the create */
 | |
| /*  time and can contain wildcard characters in the file name, and the */
 | |
| /*  (virtual) table is populated when it is in use.                    */
 | |
| /***********************************************************************/
 | |
| class TDBDIR : public TDBASE {
 | |
|   friend class DIRCOL;
 | |
| 	friend class TDBMUL;
 | |
| public:
 | |
|   // Constructor
 | |
|   TDBDIR(PDIRDEF tdp);
 | |
| 	TDBDIR(PSZ fpat);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return TYPE_AM_DIR;}
 | |
| 
 | |
|   // Methods
 | |
|   int GetRecpos(void) override {return iFile;}
 | |
| 
 | |
|   // Database routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
 | |
|   int  GetMaxSize(PGLOBAL g) override;
 | |
|   int  GetProgMax(PGLOBAL g) override {return GetMaxSize(g);}
 | |
|   int  GetProgCur(void) override {return iFile;}
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  ReadDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
|   int  DeleteDB(PGLOBAL g, int irc) override;
 | |
|   void CloseDB(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
| 	void Init(void);
 | |
|   char *Path(PGLOBAL g);
 | |
| 
 | |
|   // Members
 | |
|   PSZ  To_File;                 // Points to file search pathname
 | |
|   int  iFile;                   // Index of currently retrieved file
 | |
| #if defined(_WIN32)
 | |
| 	PVAL Dvalp;							      // Used to retrieve file date values
 | |
| 	WIN32_FIND_DATA FileData;			// Find data structure
 | |
| 	HANDLE hSearch;               // Search handle
 | |
|   char Drive[_MAX_DRIVE];       // Drive name
 | |
| #else   // !_WIN32
 | |
|   struct stat    Fileinfo;      // File info structure
 | |
|   struct dirent *Entry;         // Point to directory entry structure
 | |
|   DIR *Dir;                     // To searched directory structure
 | |
|   bool Done;                    // true when _splipath is done
 | |
|   char Pattern[_MAX_FNAME+_MAX_EXT];
 | |
| #endif  // !_WIN32
 | |
|   char Fpath[_MAX_PATH];        // Absolute file search pattern
 | |
|   char Direc[_MAX_DIR];         // Search path
 | |
|   char Fname[_MAX_FNAME];       // File name
 | |
|   char Ftype[_MAX_EXT];         // File extention
 | |
| 	bool Nodir;                   // Exclude directories from file list
 | |
|   }; // end of class TDBDIR
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the DIR Access Method class declaration for tables that    */
 | |
| /*  represent a directory listing. The pathname is given at the create */
 | |
| /*  time and can contain wildcard characters in the file name, and the */
 | |
| /*  (virtual) table is populated when it is in use. In addition, this  */
 | |
| /*  class also includes files of included sub-directories.             */
 | |
| /***********************************************************************/
 | |
| class TDBSDR : public TDBDIR {
 | |
|   friend class DIRCOL;
 | |
| 	friend class TDBMUL;
 | |
|  public:
 | |
|   // Constructors
 | |
|   TDBSDR(PDIRDEF tdp) : TDBDIR(tdp) {Sub = NULL;}
 | |
| 	TDBSDR(PSZ fpat) : TDBDIR(fpat) {Sub = NULL;}
 | |
| 
 | |
|   // Database routines
 | |
|   int  GetMaxSize(PGLOBAL g) override;
 | |
|   int  GetProgMax(PGLOBAL g) override {return GetMaxSize(g);}
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  ReadDB(PGLOBAL g) override;
 | |
| //void CloseDB(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
|           int  FindInDir(PGLOBAL g);
 | |
| 
 | |
|   typedef struct _Sub_Dir {
 | |
|     struct _Sub_Dir *Next;
 | |
|     struct _Sub_Dir *Prev;
 | |
| #if defined(_WIN32)
 | |
|     HANDLE H;               // Search handle
 | |
| #else   // !_WIN32
 | |
|     DIR *D;
 | |
| #endif  // !_WIN32
 | |
|     size_t Len;           // Initial directory name length
 | |
|     } SUBDIR, *PSUBDIR;
 | |
| 
 | |
|   // Members
 | |
|   PSUBDIR Sub;                  // To current Subdir block
 | |
|   }; // end of class TDBSDR
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Class DIRCOL: DIR access method column descriptor.                 */
 | |
| /*  This A.M. is used for tables populated by DIR file name list.      */
 | |
| /***********************************************************************/
 | |
| class DIRCOL : public COLBLK {
 | |
|  public:
 | |
|   // Constructors
 | |
|   DIRCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "DIR");
 | |
|   DIRCOL(DIRCOL *colp, PTDB tdbp); // Constructor used in copy process
 | |
| 
 | |
|   // Implementation
 | |
|   int    GetAmType(void) override {return TYPE_AM_DIR;}
 | |
| 
 | |
|   // Methods
 | |
|   void   ReadColumn(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
|   // Default constructor not to be used
 | |
|   DIRCOL(void) = default;
 | |
| #if defined(_WIN32)
 | |
| 	void SetTimeValue(PGLOBAL g, FILETIME& ftime);
 | |
| #endif   // _WIN32
 | |
| 
 | |
|   // Members
 | |
| 	PTDBDIR	Tdbp;								// To DIR table
 | |
|   int     N;                  // Column number
 | |
|   }; // end of class DIRCOL
 |