diff options
Diffstat (limited to 'storage/connect/filamdbf.h')
-rw-r--r-- | storage/connect/filamdbf.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/storage/connect/filamdbf.h b/storage/connect/filamdbf.h new file mode 100644 index 00000000..6cf6331a --- /dev/null +++ b/storage/connect/filamdbf.h @@ -0,0 +1,108 @@ +/***************** FilAmDbf H Declares Source Code File (.H) ****************/ +/* Name: filamdbf.h Version 1.4 */ +/* */ +/* (C) Copyright to the author Olivier BERTRAND 2005-2014 */ +/* */ +/* This file contains the DBF file access method classes declares. */ +/****************************************************************************/ + +#ifndef __FILAMDBF_H +#define __FILAMDBF_H + +#include "filamfix.h" +#include "filamap.h" + +typedef class DBFBASE *PDBF; +typedef class DBFFAM *PDBFFAM; +typedef class DBMFAM *PDBMFAM; + +/****************************************************************************/ +/* Functions used externally. */ +/****************************************************************************/ +PQRYRES DBFColumns(PGLOBAL g, PCSZ dp, PCSZ fn, PTOS tiop, bool info); + +/****************************************************************************/ +/* This is the base class for dBASE file access methods. */ +/****************************************************************************/ +class DllExport DBFBASE { + public: + // Constructors + DBFBASE(PDOSDEF tdp); + DBFBASE(PDBF txfp); + + // Implementation + int ScanHeader(PGLOBAL g, PCSZ fname, int lrecl, int *rlen, PCSZ defpath); + + protected: + // Default constructor, not to be used + DBFBASE(void) = default; + + // Members + int Records; /* records in the file */ + bool Accept; /* true if bad lines are accepted */ + int Nerr; /* Number of bad records */ + int Maxerr; /* Maximum number of bad records */ + int ReadMode; /* 1: ALL 2: DEL 0: NOT DEL */ + }; // end of class DBFBASE + +/****************************************************************************/ +/* This is the DOS/UNIX Access Method class declaration for DBase files. */ +/****************************************************************************/ +class DllExport DBFFAM : public FIXFAM, public DBFBASE { + public: + // Constructors + DBFFAM(PDOSDEF tdp) : FIXFAM(tdp), DBFBASE(tdp) {} + DBFFAM(PDBFFAM txfp) : FIXFAM(txfp), DBFBASE((PDBF)txfp) {} + + // Implementation + virtual AMT GetAmType(void) {return TYPE_AM_DBF;} + virtual PTXF Duplicate(PGLOBAL g) + {return (PTXF)new(g) DBFFAM(this);} + + // Methods + virtual int GetNerr(void) {return Nerr;} + virtual int Cardinality(PGLOBAL g); + virtual bool OpenTableFile(PGLOBAL g); + virtual bool AllocateBuffer(PGLOBAL g); + virtual void ResetBuffer(PGLOBAL g); + virtual int ReadBuffer(PGLOBAL g); + virtual int DeleteRecords(PGLOBAL g, int irc); + virtual void CloseTableFile(PGLOBAL g, bool abort); + virtual void Rewind(void); + + protected: + virtual bool CopyHeader(PGLOBAL g); +//virtual int InitDelete(PGLOBAL g, int fpos, int spos); + + // Members + }; // end of class DBFFAM + +/****************************************************************************/ +/* This is the DOS/UNIX Access Method class declaration for DBase files */ +/* using file mapping to access the file. */ +/****************************************************************************/ +class DllExport DBMFAM : public MPXFAM, public DBFBASE { + public: + // Constructors + DBMFAM(PDOSDEF tdp) : MPXFAM(tdp), DBFBASE(tdp) {} + DBMFAM(PDBMFAM txfp) : MPXFAM(txfp), DBFBASE((PDBF)txfp) {} + + // Implementation + virtual AMT GetAmType(void) {return TYPE_AM_DBF;} + virtual PTXF Duplicate(PGLOBAL g) + {return (PTXF)new(g) DBMFAM(this);} + virtual int GetDelRows(void); + + // Methods + virtual int GetNerr(void) {return Nerr;} + virtual int Cardinality(PGLOBAL g); + virtual bool AllocateBuffer(PGLOBAL g); + virtual int ReadBuffer(PGLOBAL g); + virtual int DeleteRecords(PGLOBAL g, int irc); + virtual void Rewind(void); + + protected: + // Members + }; // end of class DBFFAM + +#endif // __FILAMDBF_H |