From 3a29b9984760af0b3a85e35190e1dede39e13891 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 16 Nov 2021 11:07:49 +0100 Subject: Implement all interfaces to mgl --- src/system/MemoryMappedFile.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/system/MemoryMappedFile.cpp (limited to 'src/system/MemoryMappedFile.cpp') 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 -- cgit v1.2.3