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 91 92 93
  
     | 
    
      /************** FilAMFix H Declares Source Code File (.H) **************/
/*  Name: FILAMFIX.H    Version 1.3                                    */
/*                                                                     */
/*  (C) Copyright to the author Olivier BERTRAND          2005 - 2014  */
/*                                                                     */
/*  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
  AMT  GetAmType(void) override {return TYPE_AM_FIX;}
  PTXF Duplicate(PGLOBAL g) override
                 {return (PTXF)new(g) FIXFAM(this);}
  // Methods
  int  Cardinality(PGLOBAL g) override {return TXTFAM::Cardinality(g);}
  int  MaxBlkSize(PGLOBAL g, int s) override
                {return TXTFAM::MaxBlkSize(g, s);}
  bool SetPos(PGLOBAL g, int recpos) override;
  int  GetNextPos(void) override {return Fpos + 1;}
  bool AllocateBuffer(PGLOBAL g) override;
  void ResetBuffer(PGLOBAL g) override;
  virtual int  WriteModifiedBlock(PGLOBAL g);
  int  ReadBuffer(PGLOBAL g) override;
  int  WriteBuffer(PGLOBAL g) override;
  int  DeleteRecords(PGLOBAL g, int irc) override;
  void CloseTableFile(PGLOBAL g, bool abort) override;
 protected:
  virtual bool CopyHeader(PGLOBAL g) {return false;}
  bool MoveIntermediateLines(PGLOBAL g, bool *b) override;
  int  InitDelete(PGLOBAL g, int fpos, int spos) override;
  // 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
  PTXF Duplicate(PGLOBAL g) override
                 {return (PTXF)new(g) BGXFAM(this);}
  // Methods
  int  Cardinality(PGLOBAL g) override;
  bool OpenTableFile(PGLOBAL g) override;
  int  WriteModifiedBlock(PGLOBAL g) override;
  int  ReadBuffer(PGLOBAL g) override;
  int  WriteBuffer(PGLOBAL g) override;
  int  DeleteRecords(PGLOBAL g, int irc) override;
  void CloseTableFile(PGLOBAL g, bool abort) override;
  void Rewind(void) override;
 protected:
  bool OpenTempFile(PGLOBAL g) override;
  bool MoveIntermediateLines(PGLOBAL g, bool *b = NULL) override;
          int  BigRead(PGLOBAL g, HANDLE h, void *inbuf, int req);
          bool BigWrite(PGLOBAL g, HANDLE h, void *inbuf, int req);
          bool BigSeek(PGLOBAL g, HANDLE h, BIGINT pos
                                          , int org = FILE_BEGIN);
  // Members
  HANDLE  Hfile;               // Handle(descriptor) to big file
  HANDLE  Tfile;               // Handle(descriptor) to big temp file
  }; // end of class BGXFAM
#endif // __FILAMFIX_H
 
     |