1/***************** FilAmDbf H Declares Source Code File (.H) ****************/
2/* Name: filamdbf.h Version 1.4 */
3/* */
4/* (C) Copyright to the author Olivier BERTRAND 2005-2014 */
5/* */
6/* This file contains the DBF file access method classes declares. */
7/****************************************************************************/
8
9#ifndef __FILAMDBF_H
10#define __FILAMDBF_H
11
12#include "filamfix.h"
13#include "filamap.h"
14
15typedef class DBFBASE *PDBF;
16typedef class DBFFAM *PDBFFAM;
17typedef class DBMFAM *PDBMFAM;
18
19/****************************************************************************/
20/* Functions used externally. */
21/****************************************************************************/
22PQRYRES DBFColumns(PGLOBAL g, PCSZ dp, PCSZ fn, bool info);
23
24/****************************************************************************/
25/* This is the base class for dBASE file access methods. */
26/****************************************************************************/
27class DllExport DBFBASE {
28 public:
29 // Constructors
30 DBFBASE(PDOSDEF tdp);
31 DBFBASE(PDBF txfp);
32
33 // Implementation
34 int ScanHeader(PGLOBAL g, PCSZ fname, int lrecl, int *rlen, PCSZ defpath);
35
36 protected:
37 // Default constructor, not to be used
38 DBFBASE(void) {}
39
40 // Members
41 int Records; /* records in the file */
42 bool Accept; /* true if bad lines are accepted */
43 int Nerr; /* Number of bad records */
44 int Maxerr; /* Maximum number of bad records */
45 int ReadMode; /* 1: ALL 2: DEL 0: NOT DEL */
46 }; // end of class DBFBASE
47
48/****************************************************************************/
49/* This is the DOS/UNIX Access Method class declaration for DBase files. */
50/****************************************************************************/
51class DllExport DBFFAM : public FIXFAM, public DBFBASE {
52 public:
53 // Constructors
54 DBFFAM(PDOSDEF tdp) : FIXFAM(tdp), DBFBASE(tdp) {}
55 DBFFAM(PDBFFAM txfp) : FIXFAM(txfp), DBFBASE((PDBF)txfp) {}
56
57 // Implementation
58 virtual AMT GetAmType(void) {return TYPE_AM_DBF;}
59 virtual PTXF Duplicate(PGLOBAL g)
60 {return (PTXF)new(g) DBFFAM(this);}
61
62 // Methods
63 virtual int GetNerr(void) {return Nerr;}
64 virtual int Cardinality(PGLOBAL g);
65 virtual bool OpenTableFile(PGLOBAL g);
66 virtual bool AllocateBuffer(PGLOBAL g);
67 virtual void ResetBuffer(PGLOBAL g);
68 virtual int ReadBuffer(PGLOBAL g);
69 virtual int DeleteRecords(PGLOBAL g, int irc);
70 virtual void CloseTableFile(PGLOBAL g, bool abort);
71 virtual void Rewind(void);
72
73 protected:
74 virtual bool CopyHeader(PGLOBAL g);
75//virtual int InitDelete(PGLOBAL g, int fpos, int spos);
76
77 // Members
78 }; // end of class DBFFAM
79
80/****************************************************************************/
81/* This is the DOS/UNIX Access Method class declaration for DBase files */
82/* using file mapping to access the file. */
83/****************************************************************************/
84class DllExport DBMFAM : public MPXFAM, public DBFBASE {
85 public:
86 // Constructors
87 DBMFAM(PDOSDEF tdp) : MPXFAM(tdp), DBFBASE(tdp) {}
88 DBMFAM(PDBMFAM txfp) : MPXFAM(txfp), DBFBASE((PDBF)txfp) {}
89
90 // Implementation
91 virtual AMT GetAmType(void) {return TYPE_AM_DBF;}
92 virtual PTXF Duplicate(PGLOBAL g)
93 {return (PTXF)new(g) DBMFAM(this);}
94 virtual int GetDelRows(void);
95
96 // Methods
97 virtual int GetNerr(void) {return Nerr;}
98 virtual int Cardinality(PGLOBAL g);
99 virtual bool AllocateBuffer(PGLOBAL g);
100 virtual int ReadBuffer(PGLOBAL g);
101 virtual int DeleteRecords(PGLOBAL g, int irc);
102 virtual void Rewind(void);
103
104 protected:
105 // Members
106 }; // end of class DBFFAM
107
108#endif // __FILAMDBF_H
109