/***********************************************************************/ /* This is the base class for all file access method classes. */ /***********************************************************************/ class DllExport TXTFAM : public BLOCK { friendclass TDBDOS; friendclass TDBCSV; friendclass TDBFIX; friendclass TDBVCT; friendclass TDBJSON; friendclass DOSCOL; friendclass BINCOL; friendclass VCTCOL; public: // Constructor
TXTFAM(PDOSDEF tdp);
TXTFAM(PTXF txfp);
protected: // Members
PTDBDOS Tdbp; // To table class
PCSZ To_File; // Points to table file name
PFBLOCK To_Fb; // Pointer to file block
PPARM To_Pos; // Pointer to position list
PPARM To_Sos; // Pointer to start position list
PPARM To_Upd; // Pointer to udated line list
PARRAY Posar; // Pointer to position array
PARRAY Sosar; // Pointer to start position array
PARRAY Updar; // Pointer to udated lines array bool Placed; // true if Recpos was externally set bool IsRead; // false for deferred reading bool Blocked; // true if using blocked I/O char *To_Buf; // Points to I/O buffer void *DelBuf; // Buffer used to move lines in Delete int *BlkPos; // To array of block positions int BlkLen; // Current block length int Buflen; // Buffer length int Dbflen; // Delete buffer length int Rows; // Number of rows read so far int DelRows; // Number of deleted rows int Headlen; // Number of bytes in header int Lrecl; // Logical Record Length int Block; // Number of blocks in table int Last; // Number of elements of last block int Nrec; // Number of records in buffer int OldBlk; // Index of last read block int CurBlk; // Index of current block int CurNum; // Current buffer line number int ReadBlks; // Number of blocks read (selected) int Rbuf; // Number of lines read in buffer int Modif; // Number of modified lines in block int Blksize; // Size of padded blocks int Ending; // Length of line end int Fpos; // Position of last read record int Spos; // Start position for update/delete move int Tpos; // Target Position for delete move bool Padded; // true if fixed size blocks are padded bool Eof; // true if an EOF (0xA) character exists bool Abort; // To abort on error char *CrLf; // End of line character(s)
}; // end of class TXTFAM
/***********************************************************************/ /* This is the DOS/UNIX Access Method class declaration for standard */ /* text files with variable record format (DOS, CSV, FMT) */ /***********************************************************************/ class DllExport DOSFAM : public TXTFAM { public: // Constructor
DOSFAM(PDOSDEF tdp);
DOSFAM(PDOSFAM txfp);
DOSFAM(PBLKFAM tdfp, PDOSDEF tdp);
// Implementation
AMT GetAmType(void) override {return TYPE_AM_DOS;} bool GetUseTemp(void) override {return UseTemp;} int GetPos(void) override; int GetNextPos(void) override;
PTXF Duplicate(PGLOBAL g) override
{return (PTXF)new(g) DOSFAM(this);}
// Methods void Reset(void) override; int GetFileLength(PGLOBAL g) override; int Cardinality(PGLOBAL g) override; int MaxBlkSize(PGLOBAL g, int s) override; bool AllocateBuffer(PGLOBAL g) override; int GetRowID(void) override; bool RecordPos(PGLOBAL g) override; bool SetPos(PGLOBAL g, int recpos) override; int SkipRecord(PGLOBAL g, bool header) override; bool OpenTableFile(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: virtualbool OpenTempFile(PGLOBAL g); virtualbool MoveIntermediateLines(PGLOBAL g, bool *b); virtualint RenameTempFile(PGLOBAL g); int InitDelete(PGLOBAL g, int fpos, int spos) override;
// Members
FILE *Stream; // Points to Dos file structure
FILE *T_Stream; // Points to temporary file structure
PFBLOCK To_Fbt; // Pointer to temp file block bool UseTemp; // True to use a temporary file in Upd/Del bool Bin; // True to force binary mode
}; // end of class DOSFAM
/***********************************************************************/ /* This is the DOS/UNIX Access Method class declaration for standard */ /* text files with variable record format (DOS, CSV, FMT) */ /***********************************************************************/ class DllExport BLKFAM : public DOSFAM { public: // Constructor
BLKFAM(PDOSDEF tdp);
BLKFAM(PBLKFAM txfp);
// Implementation
AMT GetAmType(void) override {return TYPE_AM_BLK;} int GetPos(void) override; int GetNextPos(void) override;
PTXF Duplicate(PGLOBAL g) override
{return (PTXF)new(g) BLKFAM(this);}
// Methods void Reset(void) override; int Cardinality(PGLOBAL g) override; int MaxBlkSize(PGLOBAL g, int s) override; bool AllocateBuffer(PGLOBAL g) override; int GetRowID(void) override; bool RecordPos(PGLOBAL g) override; bool SetPos(PGLOBAL g, int recpos) override; int SkipRecord(PGLOBAL g, bool header) override; int ReadBuffer(PGLOBAL g) override; int WriteBuffer(PGLOBAL g) override; void CloseTableFile(PGLOBAL g, bool abort) override; void Rewind(void) override;
protected: // Members char *CurLine; // Position of current line in buffer char *NxtLine; // Position of Next line in buffer char *OutBuf; // Buffer to write in temporary file bool Closing; // True when closing on Update
}; // end of class BLKFAM
/***********************************************************************/ /* This is the DOS/UNIX Access Method class declaration for binary */ /* files with variable record format (BJSON) */ /***********************************************************************/ class DllExport BINFAM : public DOSFAM { public: // Constructor
BINFAM(PDOSDEF tdp) : DOSFAM(tdp) {Recsize = 0;}
BINFAM(PBINFAM txfp) : DOSFAM(txfp) {Recsize = txfp->Recsize;}
// Implementation
AMT GetAmType(void) override {return TYPE_AM_BIN;} //virtual int GetPos(void); //virtual int GetNextPos(void);
PTXF Duplicate(PGLOBAL g) override { return (PTXF)new(g) BINFAM(this); }
// Methods //virtual void Reset(void) {TXTFAM::Reset();} //virtual int GetFileLength(PGLOBAL g); //virtual int Cardinality(PGLOBAL g); int MaxBlkSize(PGLOBAL g, int s) override {return s;} bool AllocateBuffer(PGLOBAL g) override; //virtual int GetRowID(void); //virtual bool RecordPos(PGLOBAL g); //virtual bool SetPos(PGLOBAL g, int recpos); int SkipRecord(PGLOBAL g, bool header) override {return RC_OK;} //virtual bool OpenTableFile(PGLOBAL g); int ReadBuffer(PGLOBAL g) override; int WriteBuffer(PGLOBAL g) override; //virtual int DeleteRecords(PGLOBAL g, int irc); //virtual void CloseTableFile(PGLOBAL g, bool abort); //virtual void Rewind(void);
//protected: //virtual int InitDelete(PGLOBAL g, int fpos, int spos);
// Members
size_t Recsize; // Length of last read or next written record
}; // end of class BINFAM
#endif// __FILAMTXT_H
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.