3#if !defined( EMSCRIPTEN )
5#include "../StringView.h"
17 using Ptr = std::shared_ptr<FileHandle>;
26 enum class AccessMode {
31 enum class ProtectionMode {
40 assert(move.mappedMemory ==
nullptr);
42 fileHandle = move.fileHandle;
43 move.fileHandle = INVALID_HANDLE_VALUE;
44#elif defined( __linux__ ) || defined(__APPLE__)
45 fileDescriptor = move.fileDescriptor;
46 move.fileDescriptor = -1;
52 assert(mappedMemory ==
nullptr);
53 assert(move.mappedMemory ==
nullptr);
56 fileHandle = move.fileHandle;
57 move.fileHandle = INVALID_HANDLE_VALUE;
58#elif defined( __linux__ ) || defined(__APPLE__)
59 fileDescriptor = move.fileDescriptor;
60 move.fileDescriptor = -1;
65 static Ptr open(std::string_view path, OpenMode openMode, AccessMode accessMode);
68 size_t getSize()
const;
69 void* getMappedMemory()
const {
return mappedMemory; }
72 bool isMapped()
const {
return mappedMemory !=
nullptr; }
74 bool write(
const void *buffer,
size_t size,
size_t &written);
75 bool read(
void *buffer,
size_t size,
size_t &read);
77 void* map(ProtectionMode protectionMode,
size_t offset,
size_t size);
82 HANDLE fileHandle = INVALID_HANDLE_VALUE;
83 HANDLE mapHandle =
nullptr;
84#elif defined( __linux__ ) || defined(__APPLE__)
85 int fileDescriptor = -1;
86 size_t mappedSize = 0;
88 void* mappedMemory =
nullptr;
Contains all Cogs related functionality.