aboutsummaryrefslogtreecommitdiff
path: root/src/system/MemoryMappedFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/system/MemoryMappedFile.cpp')
-rw-r--r--src/system/MemoryMappedFile.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/system/MemoryMappedFile.cpp b/src/system/MemoryMappedFile.cpp
new file mode 100644
index 0000000..54f15c1
--- /dev/null
+++ b/src/system/MemoryMappedFile.cpp
@@ -0,0 +1,36 @@
+#include "../../include/mglpp/system/MemoryMappedFile.hpp"
+
+namespace mgl {
+ MemoryMappedFile::MemoryMappedFile() {
+ memory_mapped_file.data = nullptr;
+ memory_mapped_file.size = 0;
+ memory_mapped_file.fd = -1;
+ }
+
+ MemoryMappedFile::~MemoryMappedFile() {
+ mgl_mapped_file_unload(&memory_mapped_file);
+ }
+
+ bool MemoryMappedFile::load(const char *filepath, LoadOptions load_options) {
+ if(memory_mapped_file.fd != -1)
+ return false;
+
+ mgl_memory_mapped_file_load_options mapped_file_load_options = {
+ load_options.readable,
+ load_options.writable
+ };
+ return mgl_mapped_file_load(filepath, &memory_mapped_file, &mapped_file_load_options) == 0;
+ }
+
+ void* MemoryMappedFile::data() {
+ return memory_mapped_file.data;
+ }
+
+ size_t MemoryMappedFile::size() {
+ return memory_mapped_file.size;
+ }
+
+ const mgl_memory_mapped_file* MemoryMappedFile::internal_mapped_file() const {
+ return &memory_mapped_file;
+ }
+} \ No newline at end of file