Annotation of nono/lib/mappedfile.h, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2020 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: // ファイルを mmap して提供するクラス
                      8: 
                      9: #pragma once
                     10: 
                     11: #include "header.h"
                     12: 
                     13: class MappedFile
                     14: {
                     15:  public:
                     16:        MappedFile();
                     17:        virtual ~MappedFile();
                     18: 
                     19:        // ファイル名(パス名)を指定する。
                     20:        void SetFilename(const std::string& filename);
                     21: 
                     22:        // エラーメッセージの表示名を変更する。
                     23:        void SetDispname(const std::string& dispname);
                     24: 
                     25:        // サイズの確定しているファイルを読み込み専用でオープンして mmap する。
                     26:        // ファイルがなければエラー。ROM とか用。
                     27:        uint8 *OpenRdOnly(off_t len);
                     28: 
                     29:        // サイズの確定しているファイルを読み書き両用でオープンして mmap する。
                     30:        // ファイルがなければ作成する。SRAM とか用。
                     31:        uint8 *OpenCreate(off_t len);
                     32: 
                     33:        // サイズの確定していないファイルを読み書き両用でオープンして mmap する。
                     34:        // ファイルがなければエラー。ディスクイメージ用。
                     35:        uint8 *OpenFile();
                     36: 
                     37:        // クローズする (デストラクタを呼ぶだけでもよい)
                     38:        void Close();
                     39: 
                     40:        // mmap されている領域の長さを返す。(ファイルサイズと同じとは限らない)
                     41:        off_t GetMemSize() const { return memlen; }
                     42: 
                     43:  private:
                     44:        // ファイルサイズをチェック
                     45:        bool CheckFilesize() const;
                     46: 
                     47:        // パス名
                     48:        std::string filename {};
                     49: 
                     50:        // 表示名
                     51:        // エラー表示をほぼこちら側で行うため、
                     52:        // ただのパス名だけでなくその場に応じたいい感じの表示にしたい。
                     53:        std::string dispname {};
                     54: 
                     55:        int fd {};
                     56:        uint8 *mem {};
                     57:        off_t memlen {};
                     58: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.