#pragma once #include "special_members.hpp" #include #include namespace filesystem { class [[nodiscard]] memmap final { public: memmap(size_t length, int prot, int flags, int fd, off_t offset); ~memmap(); NO_MOVE(memmap); NO_COPY(memmap); template T * get() { return static_cast(addr); } void msync(int flags) const; private: void * addr; size_t length; }; class [[nodiscard]] fh final { public: fh(const char * path, int flags, int mode); ~fh(); NO_MOVE(fh); NO_COPY(fh); void truncate(size_t size); memmap mmap(size_t length, size_t offset, int prot, int flags); private: int h; }; }