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

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

unix.superglobalmegacorp.com

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