1 // Common/C_FileIO.h 2 3 #ifndef __COMMON_C_FILEIO_H 4 #define __COMMON_C_FILEIO_H 5 6 #include <stdio.h> 7 #include <sys/types.h> 8 9 #include "MyTypes.h" 10 #include "MyWindows.h" 11 12 #ifdef _WIN32 13 #ifdef _MSC_VER 14 typedef size_t ssize_t; 15 #endif 16 #endif 17 18 namespace NC { 19 namespace NFile { 20 namespace NIO { 21 22 class CFileBase 23 { 24 protected: 25 int _handle; 26 bool OpenBinary(const char *name, int flags); 27 public: CFileBase()28 CFileBase(): _handle(-1) {}; ~CFileBase()29 ~CFileBase() { Close(); } 30 bool Close(); 31 bool GetLength(UInt64 &length) const; 32 off_t Seek(off_t distanceToMove, int moveMethod) const; 33 }; 34 35 class CInFile: public CFileBase 36 { 37 public: 38 bool Open(const char *name); 39 bool OpenShared(const char *name, bool shareForWrite); 40 ssize_t Read(void *data, size_t size); 41 }; 42 43 class COutFile: public CFileBase 44 { 45 public: 46 bool Create(const char *name, bool createAlways); 47 bool Open(const char *name, DWORD creationDisposition); 48 ssize_t Write(const void *data, size_t size); 49 }; 50 51 }}} 52 53 #endif 54