Hex Artifact Content

Not logged in

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..