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