summaryrefslogtreecommitdiff
path: root/storage/connect/filamfix.h
blob: 8c781bdd65c3c04de28d8e90f700408dcc3a3ed0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/************** FilAMFix H Declares Source Code File (.H) **************/
/*  Name: FILAMFIX.H    Version 1.2                                    */
/*                                                                     */
/*  (C) Copyright to the author Olivier BERTRAND          2005 - 2012  */
/*                                                                     */
/*  This file contains the FIX file access method classes declares.    */
/***********************************************************************/

#ifndef __FILAMFIX_H
#define __FILAMFIX_H

#include "filamtxt.h"

typedef class FIXFAM *PFIXFAM;
typedef class BGXFAM *PBGXFAM;

/***********************************************************************/
/*  This is the DOS/UNIX Access Method class declaration for standard  */
/*  files with fixed record format (FIX, BIN)                          */
/***********************************************************************/
class DllExport FIXFAM : public BLKFAM {
 public:
  // Constructor
  FIXFAM(PDOSDEF tdp);
  FIXFAM(PFIXFAM txfp);

  // Implementation
  virtual AMT   GetAmType(void) {return TYPE_AM_FIX;}
  virtual PTXF  Duplicate(PGLOBAL g)
									{return (PTXF)new(g) FIXFAM(this);}

  // Methods
  virtual int  Cardinality(PGLOBAL g) {return TXTFAM::Cardinality(g);}
  virtual int  MaxBlkSize(PGLOBAL g, int s) 
								{return TXTFAM::MaxBlkSize(g, s);}
	virtual bool  AllocateBuffer(PGLOBAL g);
	virtual void  ResetBuffer(PGLOBAL g);
  virtual int   ReadBuffer(PGLOBAL g);
	virtual int   WriteBuffer(PGLOBAL g);
	virtual int		DeleteRecords(PGLOBAL g, int irc);
	virtual void  CloseTableFile(PGLOBAL g);

 protected:
	virtual bool  CopyHeader(PGLOBAL g) {return false;}
	virtual bool  MoveIntermediateLines(PGLOBAL g, bool *b);

  // No additional members
  }; // end of class FIXFAM


/***********************************************************************/
/*  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 of more than 2 gigabytes.  */
/***********************************************************************/
class BGXFAM : public FIXFAM {
 public:
  // Constructor
  BGXFAM(PDOSDEF tdp);
  BGXFAM(PBGXFAM txfp);

  // Implementation
  virtual PTXF  Duplicate(PGLOBAL g)
									{return (PTXF)new(g) BGXFAM(this);}

  // Methods
//virtual void  Reset(void);
  virtual int   Cardinality(PGLOBAL g);
	virtual bool  OpenTableFile(PGLOBAL g);
  virtual int   ReadBuffer(PGLOBAL g);
	virtual int   WriteBuffer(PGLOBAL g);
	virtual int		DeleteRecords(PGLOBAL g, int irc);
	virtual void  CloseTableFile(PGLOBAL g);
	virtual void  Rewind(void);

 protected:
					bool BigSeek(PGLOBAL g, HANDLE h, BIGINT pos
																					, int org = FILE_BEGIN);
					int  BigRead(PGLOBAL g, HANDLE h, void *inbuf, int req);
					bool BigWrite(PGLOBAL g, HANDLE h, void *inbuf, int req);
	virtual	bool OpenTempFile(PGLOBAL g);
	virtual bool MoveIntermediateLines(PGLOBAL g, bool *b = NULL);

  // Members
  HANDLE  Hfile;               // Handle(descriptor) to big file
  HANDLE  Tfile;               // Handle(descriptor) to big temp file
//BIGINT  Xpos;                // Current file position
  }; // end of class BGXFAM

#endif // __FILAMFIX_H