summaryrefslogtreecommitdiffstats
path: root/storage/connect/tabfix.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/tabfix.h')
-rw-r--r--storage/connect/tabfix.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/storage/connect/tabfix.h b/storage/connect/tabfix.h
new file mode 100644
index 00000000..5f859a2b
--- /dev/null
+++ b/storage/connect/tabfix.h
@@ -0,0 +1,117 @@
+/*************** TabDos H Declares Source Code File (.H) ***************/
+/* Name: TABFIX.H Version 2.4 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 1999-2015 */
+/* */
+/* This file contains the TDBFIX and (FIX/BIN)COL classes declares. */
+/***********************************************************************/
+#ifndef __TABFIX__
+#define __TABFIX__
+#include "tabdos.h" /* Base class declares */
+#include "filamdbf.h"
+
+typedef class FIXCOL *PFIXCOL;
+typedef class BINCOL *PBINCOL;
+typedef class TXTFAM *PTXF;
+
+/***********************************************************************/
+/* This is the DOS/UNIX Access Method class declaration for files */
+/* that are standard files with columns starting at fixed offset. */
+/* This class is for fixed formatted files. */
+/***********************************************************************/
+class DllExport TDBFIX : public TDBDOS {
+ friend class FIXCOL;
+ friend class BINCOL;
+ public:
+ // Constructor
+ TDBFIX(PDOSDEF tdp, PTXF txfp);
+ TDBFIX(PGLOBAL g, PTDBFIX tdbp);
+
+ // Implementation
+ virtual AMT GetAmType(void) {return TYPE_AM_FIX;}
+ virtual void RestoreNrec(void);
+ virtual PTDB Duplicate(PGLOBAL g)
+ {return (PTDB)new(g) TDBFIX(g, this);}
+
+ // Methods
+ virtual PTDB Clone(PTABS t);
+ virtual void ResetDB(void);
+ virtual bool IsUsingTemp(PGLOBAL g);
+ virtual int RowNumber(PGLOBAL g, bool b = false);
+ virtual int ResetTableOpt(PGLOBAL g, bool dop, bool dox);
+ virtual void ResetSize(void);
+ virtual int GetBadLines(void) {return Txfp->GetNerr();}
+
+ // Database routines
+ virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
+ virtual int GetProgMax(PGLOBAL g);
+ virtual int Cardinality(PGLOBAL g);
+ virtual int GetMaxSize(PGLOBAL g);
+ virtual bool OpenDB(PGLOBAL g);
+ virtual int WriteDB(PGLOBAL g);
+
+ protected:
+ virtual bool PrepareWriting(PGLOBAL g) {return false;}
+
+ // Members
+ char Teds; /* Binary table default endian setting */
+ }; // end of class TDBFIX
+
+/***********************************************************************/
+/* Class BINCOL: BIN access method column descriptor. */
+/* This A.M. is used for file processed by blocks. */
+/***********************************************************************/
+class DllExport BINCOL : public DOSCOL {
+ friend class TDBFIX;
+ public:
+ // Constructors
+ BINCOL(PGLOBAL g, PCOLDEF cdp, PTDB tp, PCOL cp, int i, PCSZ am = "BIN");
+ BINCOL(BINCOL *colp, PTDB tdbp); // Constructor used in copy process
+
+ // Implementation
+ virtual int GetAmType(void) {return TYPE_AM_BIN;}
+ int GetDeplac(void) {return Deplac;}
+ int GetFileSize(void)
+ {return N ? N : GetTypeSize(Buf_Type, Long);}
+
+ // Methods
+ virtual void ReadColumn(PGLOBAL g);
+ virtual void WriteColumn(PGLOBAL g);
+
+ // Static
+ static void SetEndian(void);
+
+ protected:
+ BINCOL(void) {} // Default constructor not to be used
+
+ // Members
+ static char Endian; // The host endian setting (L or B)
+ char *Buff; // Utility buffer
+ char Eds; // The file endian setting
+ char Fmt; // The converted value format
+ int N; // The number of bytes in the file
+ int M; // The buffer type size
+ int Lim; // Min(N,M)
+ }; // end of class BINCOL
+
+/***********************************************************************/
+/* This is the class declaration for the DBF columns catalog table. */
+/***********************************************************************/
+class TDBDCL : public TDBCAT {
+public:
+ // Constructor
+ TDBDCL(PDOSDEF tdp) : TDBCAT(tdp)
+ {Fn = tdp->GetFn(); Topt = tdp->GetTopt();}
+
+protected:
+ // Specific routines
+ virtual PQRYRES GetResult(PGLOBAL g)
+ {return DBFColumns(g, ((PTABDEF)To_Def)->GetPath(), Fn, Topt, false);}
+
+ // Members
+ PCSZ Fn; // The DBF file (path) name
+ PTOS Topt;
+}; // end of class TDBOCL
+
+
+#endif // __TABFIX__