Foundation
Loading...
Searching...
No Matches
MemoryMapped.hpp
Go to the documentation of this file.
1#pragma once
2#include <Platform/Mmap.hpp>
3#include <cstdint>
4#include <limits>
5
6namespace Foundation::Core {
7
9{
12};
13
15{
17
18public:
19 MemoryMappedFile() = default;
21 MemoryMappedFile(StringView path, uint64_t size);
23
26
27 MemoryMappedFile(MemoryMappedFile&& other) noexcept;
29
30 void Open(StringView path, MemoryMappedAccess access);
31 void Create(StringView path, uint64_t size);
32 void OpenOrCreate(StringView path, uint64_t size);
33 void Resize(uint64_t size);
34 void Flush(uint64_t offset = 0, uint64_t size = std::numeric_limits<uint64_t>::max()) const;
35 void Close() noexcept;
36
37 [[nodiscard]] bool IsOpen() const noexcept;
38 [[nodiscard]] bool IsMapped() const noexcept { return mState.data != nullptr; }
39 [[nodiscard]] bool IsWritable() const noexcept { return mState.writable; }
40 [[nodiscard]] bool Empty() const noexcept { return mState.size == 0; }
41 [[nodiscard]] uint64_t Size() const noexcept { return mState.size; }
42
43 [[nodiscard]] const unsigned char* Data() const noexcept { return static_cast<const unsigned char*>(mState.data); }
44 [[nodiscard]] unsigned char* MutableData();
45 [[nodiscard]] Span<const unsigned char> Bytes() const;
46 [[nodiscard]] Span<unsigned char> MutableBytes();
47};
48
49} // namespace Foundation::Core
Definition MemoryMapped.hpp:15
bool IsWritable() const noexcept
Definition MemoryMapped.hpp:39
bool IsMapped() const noexcept
Definition MemoryMapped.hpp:38
bool IsOpen() const noexcept
Definition MemoryMapped.cpp:85
unsigned char * MutableData()
Definition MemoryMapped.cpp:90
MemoryMappedFile & operator=(MemoryMappedFile const &)=delete
void Resize(uint64_t size)
Definition MemoryMapped.cpp:70
void Open(StringView path, MemoryMappedAccess access)
Definition MemoryMapped.cpp:55
~MemoryMappedFile()
Definition MemoryMapped.cpp:33
Span< const unsigned char > Bytes() const
Definition MemoryMapped.cpp:96
void OpenOrCreate(StringView path, uint64_t size)
Definition MemoryMapped.cpp:65
bool Empty() const noexcept
Definition MemoryMapped.hpp:40
uint64_t Size() const noexcept
Definition MemoryMapped.hpp:41
void Create(StringView path, uint64_t size)
Definition MemoryMapped.cpp:60
Platform::MmapState mState
Definition MemoryMapped.hpp:16
Span< unsigned char > MutableBytes()
Definition MemoryMapped.cpp:101
const unsigned char * Data() const noexcept
Definition MemoryMapped.hpp:43
void Flush(uint64_t offset=0, uint64_t size=std::numeric_limits< uint64_t >::max()) const
Definition MemoryMapped.cpp:75
MemoryMappedFile(MemoryMappedFile const &)=delete
void Close() noexcept
Definition MemoryMapped.cpp:80
Lock-free atomic primitives and implementations of data structures.
Definition Allocator.hpp:6
MemoryMappedAccess
Definition MemoryMapped.hpp:9
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:56
std::span< T > Span
Alias for std::span
Definition Container.hpp:62
Definition Mmap.hpp:8
void * data
Definition Mmap.hpp:9
bool writable
Definition Mmap.hpp:11
uint64_t size
Definition Mmap.hpp:10