00001 #ifndef __FBLOCK_HPP__
00002 #define __FBLOCK_HPP__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __cplusplus
00032 #error Must use C++ compiler
00033 #endif
00034
00035
00036
00037 #include <stdio.h>
00038 #include "tdef.h"
00039
00040
00041
00042 #define FBLOCK_BP_IGNORE 0
00043 #define FBLOCK_BP_BEFORE 1
00044 #define FBLOCK_BP_AFTER 2
00045 #define FBLOCK_BP_BOTH 4
00046
00047
00048
00049 class FBlock {
00050 private:
00051 FILE* f;
00052
00053 LONG bPos0;
00054 LONG bTail;
00055 LONG bPos;
00056 LONG bTotSize;
00057 BOOL writeMode;
00058 UINT borderpolicy;
00059 BOOL stdinout;
00060
00061 VOID setRW( BOOL write );
00062
00063 public:
00064 FBlock( VOID );
00065
00066 VOID attach( FILE* fBin, LONG N=-1, UINT borderpolicy=4 );
00067
00068 VOID setPos( LONG pos );
00069 LONG getPos( VOID ) const { return (LONG)bPos; }
00070 LONG getN( VOID ) const { return (LONG)bTotSize; }
00071
00072 UINT get( BYTE& byte );
00073 UINT set( BYTE byte ) { return set(&byte,1); }
00074 UINT ins( BYTE byte ) { return ins(&byte,1); }
00075 UINT del( VOID ) { return del(1); }
00076
00077 UINT get( BYTE* block, UINT len );
00078 UINT set( const BYTE* block, UINT len );
00079 UINT ins( const BYTE* block, UINT len );
00080 UINT del( UINT len );
00081
00082 VOID toggleRW( VOID );
00083
00084 BOOL OK ( VOID ) const;
00085
00086 ~FBlock( VOID ) { f=0; }
00087 };
00088
00089
00090
00091 #endif