--- nono/lib/mappedfile.h 2026/04/29 17:04:49 1.1.1.2 +++ nono/lib/mappedfile.h 2026/04/29 17:05:47 1.1.1.6 @@ -4,18 +4,27 @@ // Licensed under nono-license.txt // +// // ファイルを mmap して提供するクラス +// #pragma once -#include "header.h" +#include "nono.h" #include "autofd.h" -class MappedFile +class MappedFile final { public: + // アクセスモード + // (enum class は字面が長くなるので手抜きしたい…) + using Mode = bool; + static const bool RW = false; + static const bool RdOnly = true; + + public: MappedFile(); - virtual ~MappedFile(); + ~MappedFile(); // ファイル名(パス名)を指定する。 void SetFilename(const std::string& filename); @@ -23,17 +32,12 @@ class MappedFile // エラーメッセージの表示名を変更する。 void SetDispname(const std::string& dispname); - // サイズの確定しているファイルを読み込み専用でオープンして mmap する。 - // ファイルがなければエラー。ROM とか用。 - uint8 *OpenRdOnly(off_t len); - // サイズの確定しているファイルを読み書き両用でオープンして mmap する。 // ファイルがなければ作成する。SRAM とか用。 - uint8 *OpenCreate(off_t len); - - // サイズの確定していないファイルを読み書き両用でオープンして mmap する。 - // ファイルがなければエラー。ディスクイメージ用。 - uint8 *OpenFile(); + uint8 *OpenCreate(off_t len) { + return OpenCreate(len, NULL, 0); + } + uint8 *OpenCreate(off_t len, const uint8 *data, uint datalen); // クローズする (デストラクタを呼ぶだけでもよい) void Close();