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.
		
			
				
	
	
		
			191 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*************** TabFmt H Declares Source Code File (.H) ***************/
 | |
| /*  Name: TABFMT.H    Version 2.5                                      */
 | |
| /*                                                                     */
 | |
| /*  (C) Copyright to the author Olivier BERTRAND          2001-2016    */
 | |
| /*                                                                     */
 | |
| /*  This file contains the CSV and FMT classes declares.               */
 | |
| /***********************************************************************/
 | |
| #include "xtable.h"                     // Base class declares
 | |
| #include "tabdos.h"
 | |
| 
 | |
| typedef class  TDBFMT    *PTDBFMT;
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Functions used externally.                                         */
 | |
| /***********************************************************************/
 | |
| DllExport PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info);
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  CSV table.                                                         */
 | |
| /***********************************************************************/
 | |
| class DllExport CSVDEF : public DOSDEF { /* Logical table description  */
 | |
|   friend class TDBCSV;
 | |
|   friend class TDBCCL;
 | |
| 	friend PQRYRES CSVColumns(PGLOBAL, PCSZ, PTOS, bool);
 | |
| public:
 | |
|   // Constructor
 | |
|   CSVDEF(void);
 | |
| 
 | |
|   // Implementation
 | |
|   const char *GetType(void) override {return "CSV";}
 | |
|   char    GetSep(void) {return Sep;}
 | |
|   char    GetQot(void) {return Qot;}
 | |
| 
 | |
|   // Methods
 | |
|   bool DefineAM(PGLOBAL g, LPCSTR am, int poff) override;
 | |
|   PTDB GetTable(PGLOBAL g, MODE mode) override;
 | |
| 
 | |
|  protected:
 | |
|   // Members
 | |
|   bool    Fmtd;               /* true for formatted files              */
 | |
| //bool    Accept;             /* true if wrong lines are accepted      */
 | |
|   bool    Header;             /* true if first line contains headers   */
 | |
| //int     Maxerr;             /* Maximum number of bad records         */
 | |
|   int     Quoted;             /* Quoting level for quoted fields       */
 | |
|   char    Sep;                /* Separator for standard CSV files      */
 | |
|   char    Qot;                /* Character for quoted strings          */
 | |
|   }; // end of CSVDEF
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the DOS/UNIX Access Method class declaration for files     */
 | |
| /*  that are CSV files with columns separated by the Sep character.    */
 | |
| /***********************************************************************/
 | |
| class DllExport TDBCSV : public TDBDOS {
 | |
|   friend class CSVCOL;
 | |
| 	friend class MAPFAM;
 | |
| 	friend PQRYRES CSVColumns(PGLOBAL, PCSZ, PTOS, bool);
 | |
| public:
 | |
|   // Constructor
 | |
|   TDBCSV(PCSVDEF tdp, PTXF txfp);
 | |
|   TDBCSV(PGLOBAL g, PTDBCSV tdbp);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return TYPE_AM_CSV;}
 | |
|   PTDB Duplicate(PGLOBAL g) override
 | |
|                 {return (PTDB)new(g) TDBCSV(g, this);}
 | |
| 
 | |
|   // Methods
 | |
|   PTDB Clone(PTABS t) override;
 | |
| //virtual bool IsUsingTemp(PGLOBAL g);
 | |
|   int  GetBadLines(void) override {return (int)Nerr;}
 | |
| 
 | |
|   // Database routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
|   int  CheckWrite(PGLOBAL g) override;
 | |
|   int  ReadBuffer(PGLOBAL g) override;        // Physical file read
 | |
| 
 | |
|   // Specific routines
 | |
|   int  EstimatedLength(void) override;
 | |
|   bool SkipHeader(PGLOBAL g) override;
 | |
|   virtual bool CheckErr(void);
 | |
| 
 | |
|  protected:
 | |
|   bool PrepareWriting(PGLOBAL g) override;
 | |
| 
 | |
|   // Members
 | |
|   PSZ  *Field;             // Field to write to current line
 | |
|   int  *Offset;            // Column offsets for current record
 | |
|   int  *Fldlen;            // Column field length for current record
 | |
|   bool *Fldtyp;            // true for numeric fields
 | |
|   int   Fields;            // Number of fields to handle
 | |
|   int   Nerr;              // Number of bad records
 | |
|   int   Maxerr;            // Maximum number of bad records
 | |
|   int   Quoted;            // Quoting level for quoted fields
 | |
|   bool  Accept;            // true if bad lines are accepted
 | |
|   bool  Header;            // true if first line contains column headers
 | |
|   char  Sep;               // Separator
 | |
|   char  Qot;               // Quoting character
 | |
|   }; // end of class TDBCSV
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Class CSVCOL: CSV access method column descriptor.                 */
 | |
| /*  This A.M. is used for Comma Separated V(?) files.                  */
 | |
| /***********************************************************************/
 | |
| class DllExport CSVCOL : public DOSCOL {
 | |
|   friend class TDBCSV;
 | |
|   friend class TDBFMT;
 | |
|  public:
 | |
|   // Constructors
 | |
|   CSVCOL(PGLOBAL g, PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i);
 | |
|   CSVCOL(CSVCOL *colp, PTDB tdbp); // Constructor used in copy process
 | |
| 
 | |
|   // Implementation
 | |
|   int    GetAmType() override {return TYPE_AM_CSV;}
 | |
| 
 | |
|   // Methods
 | |
|   bool   VarSize(void) override;
 | |
|   void   ReadColumn(PGLOBAL g) override;
 | |
|   void   WriteColumn(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
|   // Default constructor not to be used
 | |
|   CSVCOL(void) = default;
 | |
| 
 | |
|   // Members
 | |
|   int Fldnum;               // Field ordinal number (0 based)
 | |
|   }; // end of class CSVCOL
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the DOS/UNIX Access Method class declaration for files     */
 | |
| /*  whose record format is described by a Format keyword.              */
 | |
| /***********************************************************************/
 | |
| class DllExport TDBFMT : public TDBCSV {
 | |
|   friend class CSVCOL;
 | |
| //friend class FMTCOL;
 | |
|  public:
 | |
|   // Standard constructor
 | |
|   TDBFMT(PCSVDEF tdp, PTXF txfp) : TDBCSV(tdp, txfp)
 | |
|       {FldFormat = NULL; To_Fld = NULL; FmtTest = NULL; Linenum = 0;}
 | |
| 
 | |
|   // Copy constructor
 | |
|   TDBFMT(PGLOBAL g, PTDBFMT tdbp);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return TYPE_AM_FMT;}
 | |
|   PTDB Duplicate(PGLOBAL g) override
 | |
|                 {return (PTDB)new(g) TDBFMT(g, this);}
 | |
| 
 | |
|   // Methods
 | |
|   PTDB Clone(PTABS t) override;
 | |
| 
 | |
|   // Database routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
 | |
| //int  GetMaxSize(PGLOBAL g) override;
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
| //virtual int  CheckWrite(PGLOBAL g);
 | |
|   int  ReadBuffer(PGLOBAL g) override;        // Physical file read
 | |
| 
 | |
|   // Specific routines
 | |
|   int  EstimatedLength(void) override;
 | |
| 
 | |
|  protected:
 | |
|   bool PrepareWriting(PGLOBAL g) override 
 | |
|        {snprintf(g->Message, sizeof(g->Message), MSG(TABLE_READ_ONLY), "FMT"); return true;}
 | |
| 
 | |
|   // Members
 | |
|   PSZ  *FldFormat;                      // Field read format
 | |
|   void *To_Fld;                         // To field test buffer
 | |
|   int  *FmtTest;                        // Test on ending by %n or %m
 | |
|   int   Linenum;                        // Last read line
 | |
|   }; // end of class TDBFMT
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the class declaration for the CSV catalog table.           */
 | |
| /***********************************************************************/
 | |
| class DllExport TDBCCL : public TDBCAT {
 | |
|  public:
 | |
|   // Constructor
 | |
|   TDBCCL(PCSVDEF tdp);
 | |
| 
 | |
|  protected:
 | |
|   // Specific routines
 | |
|   PQRYRES GetResult(PGLOBAL g) override;
 | |
| 
 | |
|   // Members
 | |
| 	PTOS  Topt;
 | |
| }; // end of class TDBCCL
 | |
| 
 | |
| /* ------------------------- End of TabFmt.H ------------------------- */
 |