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
|
/* -------------------------------------------
Copyright Mahrouss Logic
------------------------------------------- */
#ifndef __FILE_API__
#define __FILE_API__
#include <CompilerKit/CompilerKit.hxx>
#include <NewKit/Defines.hpp>
/// @brief SOM class, translated to C++
namespace System {
class File final {
public:
explicit File(const char *path) {
mHandle = kInstanceObject->Invoke(kInstanceObject, kProcessCallOpenHandle,
0, path);
}
~File() {
kInstanceObject->Invoke(kInstanceObject, kProcessCallCloseHandle, 0,
mHandle);
}
public:
HCORE_COPY_DEFAULT(File);
public:
voidPtr Read(UIntPtr off, SizeT sz) { return (VoidPtr)kInstanceObject->Invoke(kInstanceObject, mHandle, 2, off, sz); }
voidPtr Read(SizeT sz) { return (VoidPtr)kInstanceObject->Invoke(kInstanceObject, mHandle, 3, sz); }
void Write(VoidPtr buf, UIntPtr off, SizeT sz) { kInstanceObject->Invoke(kInstanceObject, mHandle, 4, buf, off, sz); }
void Write(VoidPtr buf, SizeT sz) { kInstanceObject->Invoke(kInstanceObject, mHandle, 5, buf, sz); }
void Seek(UIntPtr off) { kInstanceObject->Invoke(kInstanceObject, mHandle, 5); }
void Rewind() { kInstanceObject->Invoke(kInstanceObject, mHandle, 6); }
public:
const char *MIME();
void MIME(const char *mime);
private:
IntPtr mHandle;
};
typedef File *FilePtr;
/// @brief file exception
/// Throws when the file isn't found or invalid.
class FileException : public SystemException {
public:
explicit FileException() = default;
virtual ~FileException() = default;
public:
HCORE_COPY_DEFAULT(FileException);
public:
const char *Name() override { return "FileException"; }
const char *Reason() override { return mReason; }
private:
const char *mReason{"System.Core: FileException: Catastrophic failure!"};
};
} // namespace System
#endif // ifndef __FILE_API__
|