EHS
Loading...
Searching...
No Matches
BaseFile.h
Go to the documentation of this file.
1#pragma once
2
3#include "ehs/EHS.h"
4#include "ehs/Str.h"
5#include "ehs/Vector.h"
6#include "ehs/Array.h"
7#include "ehs/Serializer.h"
8
9namespace ehs
10{
11 enum class Mode
12 {
16 };
17
26
28 class EHS_LIB_IO BaseFile
29 {
30 protected:
37
38 public:
40 virtual ~BaseFile() = default;
41
43 BaseFile();
44
49 BaseFile(const Str_8& filePath, const Mode mode, const Disposition disposition);
50
51 BaseFile(BaseFile&& file) noexcept;
52
55 BaseFile(const BaseFile& file) = default;
56
57 BaseFile& operator=(BaseFile&& file) noexcept;
58
61 BaseFile& operator=(const BaseFile& file) = default;
62
63 virtual operator const Byte*() const = 0;
64
65 virtual operator Byte*() = 0;
66
69 virtual void Release() = 0;
70
71 virtual bool IsMapped() const = 0;
72
73 virtual UInt_64 MapSize() const = 0;
74
75 virtual void Map(const UInt_64 offset, const UInt_64 size) = 0;
76
77 virtual void Unmap() = 0;
78
79 virtual void FlushMap() = 0;
80
84 virtual UInt_64 Write(const Byte* const data, const UInt_64 size) = 0;
85
90 void WriteStr_32(const Char_32* const str, const UInt_64 size);
91
96 void WriteStr_32(const Str_32& str);
97
102 void WriteStr_16(const Char_16* const str, const UInt_64 size);
103
108 void WriteStr_16(const Str_16& str);
109
114 void WriteStr_8(const Char_8* const str, const UInt_64 size);
115
120 void WriteStr_8(const Str_8& str);
121
125 void WriteVector(const Vector<Byte, UInt_64>& vec);
126
130 void WriteArray(const Array<Byte, UInt_64>& arr);
131
136
141
145 virtual UInt_64 Read(Byte* const buffer, const UInt_64 size) = 0;
146
151 void ReadStr_32(Char_32* const buffer, UInt_64& size);
152
158 Str_32 ReadStr_32(const UInt_64 size);
159
164 void ReadStr_16(Char_16* const buffer, UInt_64& size);
165
171 Str_16 ReadStr_16(const UInt_64 size);
172
177 void ReadStr_8(Char_8* const buffer, UInt_64& size);
178
184 Str_8 ReadStr_8(const UInt_64 size);
185
190 Vector<Byte, UInt_64> ReadVector(const UInt_64 size);
191
196 Array<Byte, UInt_64> ReadArray(const UInt_64 size);
197
203 Serializer<UInt_64> ReadSerializer_64(const Endianness end, const UInt_64 size);
204
211
212 virtual void Seek(UInt_64 index) = 0;
213
214 virtual void SeekBeginning() = 0;
215
216 virtual void SeekEnd() = 0;
217
218 virtual void Truncate(const UInt_64 size) = 0;
219
222 virtual UInt_64 Size() const = 0;
223
224 Str_8 GetPath() const;
225
226 Str_8 GetFullName() const;
227
228 Str_8 GetName() const;
229
230 Str_8 GetExtension() const;
231
234 virtual bool IsValid() const = 0;
235
236 static void Rename_32(const Str_32& filePath, const Str_32& newName);
237
238 static void Rename_16(const Str_16& filePath, const Str_16& newName);
239
240 static void Rename_8(const Str_8& filePath, const Str_8& newName);
241
242 static Str_32 ParseFullName_32(const Str_32& filePath);
243
244 static Str_16 ParseFullName_16(const Str_16& filePath);
245
246 static Str_8 ParseFullName_8(const Str_8& filePath);
247
248 static Str_32 ParseName_32(const Str_32& filePath);
249
250 static Str_16 ParseName_16(const Str_16& filePath);
251
252 static Str_8 ParseName_8(const Str_8& filePath);
253
254 static Str_32 ParseExt_32(const Str_32& filePath);
255
256 static Str_16 ParseExt_16(const Str_16& filePath);
257
258 static Str_8 ParseExt_8(const Str_8& filePath);
259 };
260}
Definition Array.h:16
static Str_16 ParseFullName_16(const Str_16 &filePath)
Definition BaseFile.cpp:519
Mode mode
Definition BaseFile.h:35
virtual void SeekEnd()=0
virtual void Map(const UInt_64 offset, const UInt_64 size)=0
static void Rename_32(const Str_32 &filePath, const Str_32 &newName)
Definition BaseFile.cpp:497
BaseFile & operator=(const BaseFile &file)=default
void ReadStr_8(Char_8 *const buffer, UInt_64 &size)
Definition BaseFile.cpp:347
Str_8 GetName() const
Definition BaseFile.cpp:487
void WriteStr_16(const Char_16 *const str, const UInt_64 size)
Definition BaseFile.cpp:87
static Str_8 ParseFullName_8(const Str_8 &filePath)
Definition BaseFile.cpp:529
void WriteArray(const Array< Byte, UInt_64 > &arr)
Definition BaseFile.cpp:197
Str_8 extension
Definition BaseFile.h:34
static Str_32 ParseName_32(const Str_32 &filePath)
Definition BaseFile.cpp:539
void WriteStr_32(const Char_32 *const str, const UInt_64 size)
Definition BaseFile.cpp:43
virtual void Release()=0
Serializer< UInt_64 > ReadSerializer_64(const Endianness end, const UInt_64 size)
Definition BaseFile.cpp:433
virtual void SeekBeginning()=0
virtual UInt_64 Read(Byte *const buffer, const UInt_64 size)=0
virtual void Unmap()=0
Str_8 name
Definition BaseFile.h:33
virtual ~BaseFile()=default
Frees all native handles.
void WriteSerializer_32(const Serializer< UInt_32 > &ser)
Definition BaseFile.cpp:241
virtual UInt_64 Size() const =0
Vector< Byte, UInt_64 > ReadVector(const UInt_64 size)
Definition BaseFile.cpp:389
static Str_8 ParseExt_8(const Str_8 &filePath)
Definition BaseFile.cpp:599
Disposition disposition
Definition BaseFile.h:36
void ReadStr_16(Char_16 *const buffer, UInt_64 &size)
Definition BaseFile.cpp:305
BaseFile(const BaseFile &file)=default
void WriteStr_8(const Char_8 *const str, const UInt_64 size)
Definition BaseFile.cpp:131
static Str_32 ParseFullName_32(const Str_32 &filePath)
Definition BaseFile.cpp:509
static void Rename_16(const Str_16 &filePath, const Str_16 &newName)
Definition BaseFile.cpp:501
void ReadStr_32(Char_32 *const buffer, UInt_64 &size)
Definition BaseFile.cpp:263
Str_8 fullName
Definition BaseFile.h:32
virtual bool IsMapped() const =0
void WriteVector(const Vector< Byte, UInt_64 > &vec)
Definition BaseFile.cpp:175
void WriteSerializer_64(const Serializer< UInt_64 > &ser)
Definition BaseFile.cpp:219
Str_8 GetExtension() const
Definition BaseFile.cpp:492
BaseFile & operator=(BaseFile &&file) noexcept
Definition BaseFile.cpp:25
static void Rename_8(const Str_8 &filePath, const Str_8 &newName)
Definition BaseFile.cpp:505
Array< Byte, UInt_64 > ReadArray(const UInt_64 size)
Definition BaseFile.cpp:411
static Str_16 ParseExt_16(const Str_16 &filePath)
Definition BaseFile.cpp:590
virtual void Seek(UInt_64 index)=0
virtual UInt_64 Write(const Byte *const data, const UInt_64 size)=0
virtual void Truncate(const UInt_64 size)=0
Str_8 path
Definition BaseFile.h:31
Serializer< UInt_32 > ReadSerializer_32(const Endianness end, const UInt_32 size)
Definition BaseFile.cpp:455
virtual bool IsValid() const =0
static Str_8 ParseName_8(const Str_8 &filePath)
Definition BaseFile.cpp:567
BaseFile()
Default members initialization.
Definition BaseFile.cpp:5
static Str_16 ParseName_16(const Str_16 &filePath)
Definition BaseFile.cpp:553
virtual void FlushMap()=0
Str_8 GetFullName() const
Definition BaseFile.cpp:482
static Str_32 ParseExt_32(const Str_32 &filePath)
Definition BaseFile.cpp:581
virtual UInt_64 MapSize() const =0
Str_8 GetPath() const
Definition BaseFile.cpp:477
Definition Serializer.h:25
Definition Vector.h:18
Definition Anchor.h:6
Endianness
Definition CPU.h:21
unsigned int UInt_32
Definition Types.h:49
Str< Char_16, UInt_64 > Str_16
Definition Str.h:1901
char32_t Char_32
Definition Types.h:42
char Char_8
Definition Types.h:40
Mode
Definition BaseFile.h:12
@ READ
Definition BaseFile.h:13
@ READ_WRITE
Definition BaseFile.h:15
@ WRITE
Definition BaseFile.h:14
Str< Char_8, UInt_64 > Str_8
Definition Str.h:1902
unsigned char Byte
Definition Types.h:39
Disposition
Definition BaseFile.h:19
@ TRUNCATE
Definition BaseFile.h:24
@ CREATE_PERSISTENT
Definition BaseFile.h:20
@ CREATE
Definition BaseFile.h:21
@ OPEN
Definition BaseFile.h:23
@ OPEN_PERSISTENT
Definition BaseFile.h:22
Str< Char_32, UInt_64 > Str_32
Definition Str.h:1900
wchar_t Char_16
Definition Types.h:41