27aa56869582e23663cf0d5aea4909705acb9a84
[physicsfs] / lzma / CPP / Common / C_FileIO.h
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 "Types.h"
10 #include "MyWindows.h"
11
12 namespace NC {
13 namespace NFile {
14 namespace NIO {
15
16 class CFileBase
17 {
18 protected:
19   int _handle;
20   bool OpenBinary(const char *name, int flags);
21 public:
22   CFileBase(): _handle(-1) {};
23   ~CFileBase() { Close(); }
24   bool Close();
25   bool GetLength(UInt64 &length) const;
26   off_t Seek(off_t distanceToMove, int moveMethod) const;
27 };
28
29 class CInFile: public CFileBase
30 {
31 public:
32   bool Open(const char *name);
33   bool OpenShared(const char *name, bool shareForWrite);
34   ssize_t Read(void *data, size_t size);
35 };
36
37 class COutFile: public CFileBase
38 {
39 public:
40   bool Create(const char *name, bool createAlways);
41   bool Open(const char *name, DWORD creationDisposition);
42   ssize_t Write(const void *data, size_t size);
43 };
44
45 }}}
46
47 #endif