-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathV2File.h
134 lines (98 loc) · 2.28 KB
/
V2File.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef V2Files_h
#define V2Files_h
namespace V2
{
/*
* =============================================
* Sposob otvorenia suboru
* =============================================
*/
enum FileOpenMode
{
kFileReadOnly,
kFileReadWrite,
kFileCreate
};
/*
* =============================================
* Urcenie pozicie v suboru
* =============================================
*/
enum FilePositioningMode
{
kFileBegin,
kFileCurrent,
kFileEnd
};
/*
* =============================================
* Vysledky chyb pri praci so subormi
* =============================================
*/
enum FileResult
{
kFileOkay,
kFileOpenFailed,
kFileIOFailed
};
/*
* =============================================
* Vynimka pri praci so subormi
* =============================================
*/
class FileException : public Exception
{
private:
FileResult fileResult;
public:
FileException(FileResult result) : fileResult(result) {}
const String GetTypeString() const;
const String GetErrorString() const;
};
/*
* =============================================
* Trieda reprezentujuca subor
* =============================================
*/
class File
{
private:
#if WIN
HANDLE fileHandle;
#elif LINUX || MACOS
int fileDesc;
#endif
unsigned long filePosition;
volatile bool fileComplete;
volatile FileResult fileResult;
public:
~File();
File(const String name, FileOpenMode mode = kFileReadOnly);
unsigned long GetPosition(void) const
{
return (filePosition);
}
FileResult GetResultCode(void) const
{
return (fileResult);
}
FileResult Read(void *buffer, long size);
FileResult Write(const void *buffer, long size);
unsigned long GetSize() const;
unsigned long SetPosition(long position, FilePositioningMode mode = kFileBegin);
static const String FileName(const String &name);
};
/*
* =============================================
* Hlavna trieda spravy suborov
* =============================================
*/
class FileMgr : public Singleton<FileMgr>
{
public:
~FileMgr();
FileMgr();
};
extern FileMgr *TheFileMgr;
}
#endif // V2Files_h