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

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

unix.superglobalmegacorp.com

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