Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
file.h
1#ifndef OE_IO_FILE_H
2#define OE_IO_FILE_H
3
4#include "../common.h"
5
6#include <cstdint>
7
8#include <string>
9#include <vector>
10
11struct PHYSFS_File;
12
13namespace oe::io
14{
15 enum FileMode
16 {
17 READ = 1,
18 WRITE = 2,
19 APPEND = 4
20 };
21
22 class File
23 {
24 public:
29 File(const std::string& filename, const FileMode& mode);
30 ~File();
31
32 size_t read(void* buffer, const size_t& len);
33 size_t write(const void* buffer, const size_t& len);
34 bool eof();
35 bool seek(const size_t& pos);
36 size_t tell();
37 size_t size();
38 bool flush();
39
43 void align(size_t alignment);
44
45 std::string readStringToNull(const size_t& maxLength = 32767);
46
47 template <typename T> T readValue(bool little_endian = true);
48 template <typename T> bool writeValue(const T value, bool little_endian = true);
49
50 private:
51 PHYSFS_File* _handle;
52 };
53
54 template<> bool File::readValue<>(bool little_endian);
55 template<> uint8_t File::readValue<>(bool little_endian);
56 template<> int8_t File::readValue<>(bool little_endian);
57 template<> uint16_t File::readValue<>(bool little_endian);
58 template<> int16_t File::readValue<>(bool little_endian);
59 template<> uint32_t File::readValue<>(bool little_endian);
60 template<> int32_t File::readValue<>(bool little_endian);
61 template<> uint64_t File::readValue<>(bool little_endian);
62 template<> int64_t File::readValue<>(bool little_endian);
63
64 template<> float File::readValue<>(bool little_endian);
65 template<> double File::readValue<>(bool little_endian);
66
67 template<> bool File::writeValue<>(const bool value, bool little_endian);
68 template<> bool File::writeValue<>(const uint8_t value, bool little_endian);
69 template<> bool File::writeValue<>(const int8_t value, bool little_endian);
70 template<> bool File::writeValue<>(const uint16_t value, bool little_endian);
71 template<> bool File::writeValue<>(const int16_t value, bool little_endian);
72 template<> bool File::writeValue<>(const uint32_t value, bool little_endian);
73 template<> bool File::writeValue<>(const int32_t value, bool little_endian);
74 template<> bool File::writeValue<>(const uint64_t value, bool little_endian);
75 template<> bool File::writeValue<>(const int64_t value, bool little_endian);
76}
77
78#endif
Definition file.h:23
File(const std::string &filename, const FileMode &mode)
void align(size_t alignment)
Input/Output abstractions (Filesystem, Network, ...)
Definition file.h:14