Artifact 15fdc1958c9c2f8808fa81e5666d1e9c7a01935e:
0000: 2f 2f 2d 2d 2d 20 4b 2e 49 2e 4c 49 42 20 2d 2d //--- K.I.LIB --
0010: 2d 0d 0a 2f 2f 20 6b 6c 5f 66 69 6c 65 2e 68 20 -..// kl_file.h
0020: 3a 20 66 69 6c 65 20 6f 70 65 72 61 74 69 6f 6e : file operation
0030: 73 0d 0a 0d 0a 23 69 66 6e 64 65 66 20 41 46 58 s....#ifndef AFX
0040: 5f 4b 49 46 49 4c 45 5f 48 5f 5f 37 44 31 32 36 _KIFILE_H__7D126
0050: 43 31 45 5f 33 45 35 43 5f 34 37 36 45 5f 39 41 C1E_3E5C_476E_9A
0060: 34 45 5f 38 31 43 41 38 30 35 35 36 32 31 44 5f 4E_81CA8055621D_
0070: 5f 49 4e 43 4c 55 44 45 44 5f 0d 0a 23 64 65 66 _INCLUDED_..#def
0080: 69 6e 65 20 41 46 58 5f 4b 49 46 49 4c 45 5f 48 ine AFX_KIFILE_H
0090: 5f 5f 37 44 31 32 36 43 31 45 5f 33 45 35 43 5f __7D126C1E_3E5C_
00a0: 34 37 36 45 5f 39 41 34 45 5f 38 31 43 41 38 30 476E_9A4E_81CA80
00b0: 35 35 36 32 31 44 5f 5f 49 4e 43 4c 55 44 45 44 55621D__INCLUDED
00c0: 5f 0d 0a 0d 0a 2f 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d _..../*=*=*=*=*=
00d0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
00e0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
00f0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
0100: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 2f 0d 0a *=*=*=*=*=*=*/..
0110: 2f 2f 20 83 6f 83 43 83 69 83 8a 83 74 83 40 83 // .o.C.i...t.@.
0120: 43 83 8b 91 80 8d ec 0d 0a 0d 0a 63 6c 61 73 73 C..........class
0130: 20 6b 69 46 69 6c 65 0d 0a 7b 0d 0a 70 75 62 6c kiFile..{..publ
0140: 69 63 3a 20 2f 2f 2d 2d 20 73 74 61 74 69 63 20 ic: //-- static
0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0170: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 09 2f 2f 20 --------.....//
0180: 83 74 83 40 83 43 83 8b 83 54 83 43 83 59 8e e6 .t.@.C...T.C.Y..
0190: 93 be 28 20 96 bc 91 4f 2c 20 83 47 83 89 81 5b ..( ...O, .G...[
01a0: 8e 9e 82 c9 95 d4 82 b5 82 bd 82 a2 92 6c 20 29 .............l )
01b0: 0d 0a 09 73 74 61 74 69 63 20 75 6e 73 69 67 6e ...static unsign
01c0: 65 64 20 6c 6f 6e 67 20 67 65 74 53 69 7a 65 28 ed long getSize(
01d0: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 66 6e 61 const char* fna
01e0: 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e me, unsigned lon
01f0: 67 20 65 72 72 3d 30 78 66 66 66 66 66 66 66 66 g err=0xffffffff
0200: 20 29 3b 0d 0a 09 73 74 61 74 69 63 20 5f 5f 69 );...static __i
0210: 6e 74 36 34 20 67 65 74 53 69 7a 65 36 34 28 20 nt64 getSize64(
0220: 63 6f 6e 73 74 20 63 68 61 72 2a 20 66 6e 61 6d const char* fnam
0230: 65 20 29 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a 20 e );....public:
0240: 2f 2f 2d 2d 20 8a 4f 8c fc 82 ab 83 43 83 93 83 //-- .O.....C...
0250: 5e 81 5b 83 74 83 46 83 43 83 58 20 2d 2d 2d 2d ^.[.t.F.C.X ----
0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0270: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 09 2f 2f 20 8a 4a ------.....// .J
0280: 82 a2 82 c4 95 c2 82 b6 82 c4 0d 0a 09 62 6f 6f .............boo
0290: 6c 20 6f 70 65 6e 28 20 63 6f 6e 73 74 20 63 68 l open( const ch
02a0: 61 72 2a 20 66 69 6c 65 6e 61 6d 65 2c 20 62 6f ar* filename, bo
02b0: 6f 6c 20 72 65 61 64 3d 74 72 75 65 2c 20 62 6f ol read=true, bo
02c0: 6f 6c 20 63 72 65 61 74 65 3d 74 72 75 65 20 29 ol create=true )
02d0: 3b 0d 0a 09 76 6f 69 64 20 63 6c 6f 73 65 28 29 ;...void close()
02e0: 3b 0d 0a 0d 0a 09 2f 2f 20 93 c7 82 f1 82 c5 8f ;.....// .......
02f0: 91 82 a2 82 c4 0d 0a 09 75 6e 73 69 67 6e 65 64 ........unsigned
0300: 20 6c 6f 6e 67 20 72 65 61 64 28 20 75 6e 73 69 long read( unsi
0310: 67 6e 65 64 20 63 68 61 72 2a 20 62 75 66 2c 20 gned char* buf,
0320: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 65 unsigned long le
0330: 6e 20 29 3b 0d 0a 09 76 6f 69 64 20 77 72 69 74 n );...void writ
0340: 65 28 20 63 6f 6e 73 74 20 76 6f 69 64 2a 20 62 e( const void* b
0350: 75 66 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e uf, unsigned lon
0360: 67 20 6c 65 6e 20 29 3b 0d 0a 09 69 6e 74 20 67 g len );...int g
0370: 65 74 63 28 29 3b 0d 0a 09 76 6f 69 64 20 70 75 etc();...void pu
0380: 74 63 28 20 75 6e 73 69 67 6e 65 64 20 63 68 61 tc( unsigned cha
0390: 72 20 63 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 83 56 r c );.....// .V
03a0: 81 5b 83 4e 0d 0a 09 76 6f 69 64 20 73 65 65 6b .[.N...void seek
03b0: 54 6f 28 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e To( unsigned lon
03c0: 67 20 70 6f 73 20 29 0d 0a 09 09 7b 0d 0a 09 09 g pos )....{....
03d0: 09 69 66 28 20 21 6d 5f 62 52 65 61 64 4d 6f 64 .if( !m_bReadMod
03e0: 65 20 29 20 66 6c 75 73 68 28 29 3b 0d 0a 09 09 e ) flush();....
03f0: 09 3a 3a 53 65 74 46 69 6c 65 50 6f 69 6e 74 65 .::SetFilePointe
0400: 72 28 20 6d 5f 68 46 69 6c 65 2c 20 70 6f 73 2c r( m_hFile, pos,
0410: 20 4e 55 4c 4c 2c 20 46 49 4c 45 5f 42 45 47 49 NULL, FILE_BEGI
0420: 4e 20 29 3b 0d 0a 09 09 09 69 66 28 20 20 6d 5f N );.....if( m_
0430: 62 52 65 61 64 4d 6f 64 65 20 29 20 66 6c 75 73 bReadMode ) flus
0440: 68 28 29 3b 0d 0a 09 09 7d 0d 0a 09 76 6f 69 64 h();....}...void
0450: 20 73 65 65 6b 28 20 6c 6f 6e 67 20 70 6f 73 20 seek( long pos
0460: 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20 21 )....{.....if( !
0470: 6d 5f 62 52 65 61 64 4d 6f 64 65 20 29 20 66 6c m_bReadMode ) fl
0480: 75 73 68 28 29 3b 0d 0a 09 09 09 3a 3a 53 65 74 ush();.....::Set
0490: 46 69 6c 65 50 6f 69 6e 74 65 72 28 20 6d 5f 68 FilePointer( m_h
04a0: 46 69 6c 65 2c 0d 0a 09 09 09 09 70 6f 73 2d 28 File,......pos-(
04b0: 73 69 67 6e 65 64 29 6d 5f 6e 42 75 66 53 69 7a signed)m_nBufSiz
04c0: 65 2b 28 73 69 67 6e 65 64 29 6d 5f 6e 42 75 66 e+(signed)m_nBuf
04d0: 50 6f 73 2c 20 4e 55 4c 4c 2c 0d 0a 09 09 09 09 Pos, NULL,......
04e0: 46 49 4c 45 5f 43 55 52 52 45 4e 54 20 29 3b 0d FILE_CURRENT );.
04f0: 0a 09 09 09 69 66 28 20 20 6d 5f 62 52 65 61 64 ....if( m_bRead
0500: 4d 6f 64 65 20 29 20 66 6c 75 73 68 28 29 3b 0d Mode ) flush();.
0510: 0a 09 09 7d 0d 0a 09 75 6e 73 69 67 6e 65 64 20 ...}...unsigned
0520: 6c 6f 6e 67 20 74 65 6c 6c 28 29 0d 0a 09 09 7b long tell()....{
0530: 0d 0a 09 09 09 72 65 74 75 72 6e 20 3a 3a 53 65 .....return ::Se
0540: 74 46 69 6c 65 50 6f 69 6e 74 65 72 28 20 6d 5f tFilePointer( m_
0550: 68 46 69 6c 65 2c 20 30 2c 20 4e 55 4c 4c 2c 20 hFile, 0, NULL,
0560: 46 49 4c 45 5f 43 55 52 52 45 4e 54 20 29 0d 0a FILE_CURRENT )..
0570: 09 09 09 09 09 2d 20 6d 5f 6e 42 75 66 53 69 7a .....- m_nBufSiz
0580: 65 20 2b 20 6d 5f 6e 42 75 66 50 6f 73 3b 0d 0a e + m_nBufPos;..
0590: 09 09 7d 0d 0a 0d 0a 09 2f 2f 20 8f ee 95 f1 8e ..}.....// .....
05a0: e6 93 be 0d 0a 09 62 6f 6f 6c 20 69 73 4f 70 65 ......bool isOpe
05b0: 6e 65 64 28 29 0d 0a 09 09 7b 0d 0a 09 09 09 72 ned()....{.....r
05c0: 65 74 75 72 6e 20 6d 5f 68 46 69 6c 65 20 21 3d eturn m_hFile !=
05d0: 20 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f INVALID_HANDLE_
05e0: 56 41 4c 55 45 3b 0d 0a 09 09 7d 0d 0a 09 75 6e VALUE;....}...un
05f0: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 67 65 74 53 signed long getS
0600: 69 7a 65 28 20 75 6e 73 69 67 6e 65 64 20 6c 6f ize( unsigned lo
0610: 6e 67 2a 20 68 69 67 68 65 72 3d 4e 55 4c 4c 20 ng* higher=NULL
0620: 29 0d 0a 09 09 7b 0d 0a 09 09 09 72 65 74 75 72 )....{.....retur
0630: 6e 20 3a 3a 47 65 74 46 69 6c 65 53 69 7a 65 28 n ::GetFileSize(
0640: 20 6d 5f 68 46 69 6c 65 2c 20 68 69 67 68 65 72 m_hFile, higher
0650: 20 29 3b 0d 0a 09 09 7d 0d 0a 09 62 6f 6f 6c 20 );....}...bool
0660: 69 73 45 4f 46 28 29 0d 0a 09 09 7b 0d 0a 09 09 isEOF()....{....
0670: 09 72 65 74 75 72 6e 20 28 6d 5f 6e 42 75 66 50 .return (m_nBufP
0680: 6f 73 3d 3d 30 20 26 26 20 6d 5f 6e 42 75 66 53 os==0 && m_nBufS
0690: 69 7a 65 3d 3d 30 29 3b 0d 0a 09 09 7d 0d 0a 0d ize==0);....}...
06a0: 0a 70 75 62 6c 69 63 3a 20 2f 2f 2d 2d 20 93 e0 .public: //-- ..
06b0: 95 94 8f 88 97 9d 20 2d 2d 2d 2d 2d 2d 2d 2d 2d ...... ---------
06c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
06d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 09 6b ----------.....k
06e0: 69 46 69 6c 65 28 29 20 3a 20 6b 69 66 69 6c 65 iFile() : kifile
06f0: 5f 62 75 66 73 69 7a 65 28 20 36 35 35 33 36 20 _bufsize( 65536
0700: 29 0d 0a 09 09 7b 0d 0a 09 09 09 6d 5f 68 46 69 )....{.....m_hFi
0710: 6c 65 3d 20 49 4e 56 41 4c 49 44 5f 48 41 4e 44 le= INVALID_HAND
0720: 4c 45 5f 56 41 4c 55 45 3b 0d 0a 09 09 09 6d 5f LE_VALUE;.....m_
0730: 70 42 75 66 20 3d 20 6e 65 77 20 75 6e 73 69 67 pBuf = new unsig
0740: 6e 65 64 20 63 68 61 72 5b 6b 69 66 69 6c 65 5f ned char[kifile_
0750: 62 75 66 73 69 7a 65 5d 3b 0d 0a 09 09 7d 0d 0a bufsize];....}..
0760: 0d 0a 09 76 69 72 74 75 61 6c 20 7e 6b 69 46 69 ...virtual ~kiFi
0770: 6c 65 28 29 0d 0a 09 09 7b 0d 0a 09 09 09 63 6c le()....{.....cl
0780: 6f 73 65 28 29 3b 0d 0a 09 09 09 64 65 6c 65 74 ose();.....delet
0790: 65 20 5b 5d 20 6d 5f 70 42 75 66 3b 0d 0a 09 09 e [] m_pBuf;....
07a0: 7d 0d 0a 0d 0a 09 48 41 4e 44 4c 45 20 67 65 74 }.....HANDLE get
07b0: 48 61 6e 64 6c 65 28 29 20 63 6f 6e 73 74 0d 0a Handle() const..
07c0: 09 09 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 6d ..{.....return m
07d0: 5f 68 46 69 6c 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a _hFile;....}....
07e0: 70 72 69 76 61 74 65 3a 0d 0a 09 63 6f 6e 73 74 private:...const
07f0: 20 69 6e 74 20 6b 69 66 69 6c 65 5f 62 75 66 73 int kifile_bufs
0800: 69 7a 65 3b 0d 0a 09 76 6f 69 64 20 66 6c 75 73 ize;...void flus
0810: 68 28 29 3b 0d 0a 0d 0a 09 48 41 4e 44 4c 45 20 h();.....HANDLE
0820: 6d 5f 68 46 69 6c 65 3b 0d 0a 09 62 6f 6f 6c 20 m_hFile;...bool
0830: 20 20 6d 5f 62 52 65 61 64 4d 6f 64 65 3b 0d 0a m_bReadMode;..
0840: 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 .unsigned char*
0850: 6d 5f 70 42 75 66 3b 0d 0a 09 75 6e 73 69 67 6e m_pBuf;...unsign
0860: 65 64 20 6c 6f 6e 67 20 20 6d 5f 6e 42 75 66 53 ed long m_nBufS
0870: 69 7a 65 2c 20 6d 5f 6e 42 75 66 50 6f 73 3b 0d ize, m_nBufPos;.
0880: 0a 7d 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a .};....#endif..