Artifact f917f310296a724b53b0501fb4c3e0e6a2079672:
0000: 23 69 66 6e 64 65 66 20 5f 4b 49 4c 49 42 5f 46 #ifndef _KILIB_F
0010: 49 4c 45 5f 48 5f 0d 0a 23 64 65 66 69 6e 65 20 ILE_H_..#define
0020: 5f 4b 49 4c 49 42 5f 46 49 4c 45 5f 48 5f 0d 0a _KILIB_FILE_H_..
0030: 23 69 6e 63 6c 75 64 65 20 22 74 79 70 65 73 2e #include "types.
0040: 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 6d 65 h"..#include "me
0050: 6d 6f 72 79 2e 68 22 0d 0a 23 69 66 6e 64 65 66 mory.h"..#ifndef
0060: 20 5f 5f 63 63 64 6f 63 5f 5f 0d 0a 6e 61 6d 65 __ccdoc__..name
0070: 73 70 61 63 65 20 6b 69 20 7b 0d 0a 23 65 6e 64 space ki {..#end
0080: 69 66 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d if........//====
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00d0: 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 20 40 70 6b 67 =====..//@{ @pkg
00e0: 20 6b 69 2e 53 74 64 4c 69 62 20 2f 2f 40 7d 0d ki.StdLib //@}.
00f0: 0a 2f 2f 40 7b 0d 0a 2f 2f 09 8a c8 88 d5 83 74 .//@{..//......t
0100: 83 40 83 43 83 8b 93 c7 8d 9e 0d 0a 2f 2f 0d 0a .@.C........//..
0110: 2f 2f 09 83 74 83 40 83 43 83 8b 83 7d 83 62 83 //..t.@.C...}.b.
0120: 73 83 93 83 4f 82 f0 97 70 82 a2 82 e9 82 cc 82 s...O...p.......
0130: c5 81 41 88 b5 82 a2 82 aa 8a c8 92 50 82 c5 82 ..A.........P...
0140: ed 82 e8 82 c6 8d 82 91 ac 82 c5 82 b7 81 42 0d ..............B.
0150: 0a 2f 2f 09 82 bd 82 be 82 b5 8d a2 82 c1 82 bd .//.............
0160: 82 b1 82 c6 82 c9 81 41 34 47 42 82 dc 82 c5 82 .......A4GB.....
0170: b5 82 a9 8a 4a 82 af 82 dc 82 b9 82 f1 81 42 0d ....J.........B.
0180: 0a 2f 2f 40 7d 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d .//@}..//=======
0190: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01d0: 3d 3d 0d 0a 0d 0a 63 6c 61 73 73 20 46 69 6c 65 ==....class File
01e0: 52 20 3a 20 70 75 62 6c 69 63 20 4f 62 6a 65 63 R : public Objec
01f0: 74 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 0d t..{..public:...
0200: 0a 09 46 69 6c 65 52 28 29 3b 0d 0a 09 7e 46 69 ..FileR();...~Fi
0210: 6c 65 52 28 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 0d leR();.....//@{.
0220: 0a 09 2f 2f 09 8a 4a 82 ad 0d 0a 09 2f 2f 09 40 ..//..J.....//.@
0230: 70 61 72 61 6d 20 66 6e 61 6d 65 20 83 74 83 40 param fname .t.@
0240: 83 43 83 8b 96 bc 0d 0a 09 2f 2f 09 40 72 65 74 .C.......//.@ret
0250: 75 72 6e 20 8a 4a 82 af 82 bd 82 a9 82 c7 82 a4 urn .J..........
0260: 82 a9 0d 0a 09 2f 2f 40 7d 0d 0a 09 62 6f 6f 6c .....//@}...bool
0270: 20 4f 70 65 6e 28 20 63 6f 6e 73 74 20 54 43 48 Open( const TCH
0280: 41 52 2a 20 66 6e 61 6d 65 20 29 3b 0d 0a 0d 0a AR* fname );....
0290: 09 2f 2f 40 7b 0d 0a 09 2f 2f 09 95 c2 82 b6 82 .//@{...//......
02a0: e9 0d 0a 09 2f 2f 40 7d 0d 0a 09 76 6f 69 64 20 ....//@}...void
02b0: 43 6c 6f 73 65 28 29 3b 0d 0a 0d 0a 70 75 62 6c Close();....publ
02c0: 69 63 3a 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 74 83 ic:.....//@{ .t.
02d0: 40 83 43 83 8b 83 54 83 43 83 59 20 2f 2f 40 7d @.C...T.C.Y //@}
02e0: 0d 0a 09 75 6c 6f 6e 67 20 73 69 7a 65 28 29 20 ...ulong size()
02f0: 63 6f 6e 73 74 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 const;.....//@{
0300: 83 74 83 40 83 43 83 8b 93 e0 97 65 82 f0 83 7d .t.@.C.....e...}
0310: 83 62 83 76 82 b5 82 bd 83 41 83 68 83 8c 83 58 .b.v.....A.h...X
0320: 8e e6 93 be 20 2f 2f 40 7d 0d 0a 09 63 6f 6e 73 .... //@}...cons
0330: 74 20 75 63 68 61 72 2a 20 62 61 73 65 28 29 20 t uchar* base()
0340: 63 6f 6e 73 74 3b 0d 0a 0d 0a 70 72 69 76 61 74 const;....privat
0350: 65 3a 0d 0a 0d 0a 09 48 41 4e 44 4c 45 20 20 20 e:.....HANDLE
0360: 20 20 20 68 61 6e 64 6c 65 5f 3b 0d 0a 09 48 41 handle_;...HA
0370: 4e 44 4c 45 20 20 20 20 20 20 66 6d 6f 5f 3b 0d NDLE fmo_;.
0380: 0a 09 75 6c 6f 6e 67 20 20 20 20 20 20 20 73 69 ..ulong si
0390: 7a 65 5f 3b 0d 0a 09 63 6f 6e 73 74 20 76 6f 69 ze_;...const voi
03a0: 64 2a 20 62 61 73 65 50 74 72 5f 3b 0d 0a 0d 0a d* basePtr_;....
03b0: 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 4e 4f 43 private:.....NOC
03c0: 4f 50 59 28 46 69 6c 65 52 29 3b 0d 0a 7d 3b 0d OPY(FileR);..};.
03d0: 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d .......//-------
03e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0420: 2d 2d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 75 6c 6f --....inline ulo
0430: 6e 67 20 46 69 6c 65 52 3a 3a 73 69 7a 65 28 29 ng FileR::size()
0440: 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 const...{ retur
0450: 6e 20 73 69 7a 65 5f 3b 20 7d 0d 0a 0d 0a 69 6e n size_; }....in
0460: 6c 69 6e 65 20 63 6f 6e 73 74 20 75 63 68 61 72 line const uchar
0470: 2a 20 46 69 6c 65 52 3a 3a 62 61 73 65 28 29 20 * FileR::base()
0480: 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 6e const...{ return
0490: 20 73 74 61 74 69 63 5f 63 61 73 74 3c 63 6f 6e static_cast<con
04a0: 73 74 20 75 63 68 61 72 2a 3e 28 62 61 73 65 50 st uchar*>(baseP
04b0: 74 72 5f 29 3b 20 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f tr_); }......../
04c0: 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d /===============
04d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b ==========..//@{
0510: 0d 0a 2f 2f 09 8a c8 88 d5 83 74 83 40 83 43 83 ..//......t.@.C.
0520: 8b 8f 91 82 ab 8d 9e 82 dd 0d 0a 2f 2f 0d 0a 2f ...........//../
0530: 2f 09 82 c4 82 ab 82 c6 81 5b 82 c9 83 6f 83 62 /........[...o.b
0540: 83 74 83 40 83 8a 83 93 83 4f 82 b5 82 c2 82 c2 .t.@.....O......
0550: 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f 2f 3d 3d 3d 3d .B..//@}..//====
0560: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
05a0: 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 73 73 20 46 =====....class F
05b0: 69 6c 65 57 20 3a 20 70 75 62 6c 69 63 20 4f 62 ileW : public Ob
05c0: 6a 65 63 74 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a ject..{..public:
05d0: 0d 0a 0d 0a 09 46 69 6c 65 57 28 29 3b 0d 0a 09 .....FileW();...
05e0: 7e 46 69 6c 65 57 28 29 3b 0d 0a 0d 0a 09 2f 2f ~FileW();.....//
05f0: 40 7b 20 8a 4a 82 ad 20 2f 2f 40 7d 0d 0a 09 62 @{ .J.. //@}...b
0600: 6f 6f 6c 20 4f 70 65 6e 28 20 63 6f 6e 73 74 20 ool Open( const
0610: 54 43 48 41 52 2a 20 66 6e 61 6d 65 2c 20 62 6f TCHAR* fname, bo
0620: 6f 6c 20 63 72 65 61 74 3d 74 72 75 65 20 29 3b ol creat=true );
0630: 0d 0a 0d 0a 09 2f 2f 40 7b 20 95 c2 82 b6 82 e9 .....//@{ ......
0640: 20 2f 2f 40 7d 0d 0a 09 76 6f 69 64 20 43 6c 6f //@}...void Clo
0650: 73 65 28 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 8f se();.....//@{ .
0660: 91 82 ad 20 2f 2f 40 7d 0d 0a 09 76 6f 69 64 20 ... //@}...void
0670: 57 72 69 74 65 28 20 63 6f 6e 73 74 20 76 6f 69 Write( const voi
0680: 64 2a 20 62 75 66 2c 20 75 6c 6f 6e 67 20 73 69 d* buf, ulong si
0690: 7a 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 88 ea z );.....//@{ ..
06a0: 95 b6 8e 9a 8f 91 82 ad 20 2f 2f 40 7d 0d 0a 09 ........ //@}...
06b0: 76 6f 69 64 20 57 72 69 74 65 43 28 20 75 63 68 void WriteC( uch
06c0: 61 72 20 63 68 20 29 3b 0d 0a 0d 0a 70 75 62 6c ar ch );....publ
06d0: 69 63 3a 0d 0a 0d 0a 09 76 6f 69 64 20 46 6c 75 ic:.....void Flu
06e0: 73 68 28 29 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 sh();....private
06f0: 3a 0d 0a 0d 0a 09 63 6f 6e 73 74 20 69 6e 74 20 :.....const int
0700: 20 20 20 42 55 46 53 49 5a 45 3b 0d 0a 09 48 41 BUFSIZE;...HA
0710: 4e 44 4c 45 20 20 20 20 20 20 20 68 61 6e 64 6c NDLE handl
0720: 65 5f 3b 0d 0a 09 75 63 68 61 72 2a 20 63 6f 6e e_;...uchar* con
0730: 73 74 20 62 75 66 5f 3b 0d 0a 09 75 6c 6f 6e 67 st buf_;...ulong
0740: 20 20 20 20 20 20 20 20 62 50 6f 73 5f 3b 0d 0a bPos_;..
0750: 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 4e ..private:.....N
0760: 4f 43 4f 50 59 28 46 69 6c 65 57 29 3b 0d 0a 7d OCOPY(FileW);..}
0770: 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d ;........//=====
0780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0790: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07c0: 3d 3d 3d 3d 0d 0a 0d 0a 7d 20 20 20 20 20 20 2f ====....} /
07d0: 2f 20 6e 61 6d 65 73 70 61 63 65 20 6b 69 0d 0a / namespace ki..
07e0: 23 65 6e 64 69 66 20 2f 2f 20 5f 4b 49 4c 49 42 #endif // _KILIB
07f0: 5f 46 49 4c 45 5f 48 5f 0d 0a _FILE_H_..