diff options
Diffstat (limited to 'storage/connect/tabfix.h')
-rw-r--r-- | storage/connect/tabfix.h | 117 |
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__ |