--- nono/lib/mappedfile.h 2026/04/29 17:04:34 1.1 +++ nono/lib/mappedfile.h 2026/04/29 17:05:26 1.1.1.5 @@ -4,17 +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); @@ -22,18 +32,10 @@ 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(); - // クローズする (デストラクタを呼ぶだけでもよい) void Close(); @@ -52,7 +54,7 @@ class MappedFile // ただのパス名だけでなくその場に応じたいい感じの表示にしたい。 std::string dispname {}; - int fd {}; + autofd fd {}; uint8 *mem {}; off_t memlen {}; };