--- nono/lib/config.h 2026/04/29 17:05:18 1.1.1.7 +++ nono/lib/config.h 2026/04/29 17:05:26 1.1.1.9 @@ -38,8 +38,10 @@ class ConfigItem public: enum from_t { FromInitial = 0, // 初期値 - FromConfig, // 設定ファイルで更新 + FromHome, // 共通設定ファイル(~/.nono.cfg)で更新 + FromConfig, // VM 設定ファイルで更新 FromOption, // コマンドライン引数で更新 + FromPerf, // --perf オプション(を展開したもの)で更新 }; public: @@ -72,6 +74,11 @@ class ConfigItem // double 値として評価出来ないときは false を返す。 bool TryDouble(double *val) const; + // 値を固定小数点数として取得する。 + // 変換できたら true を返す。 + // 数値として評価出来ないときは false を返す。 + bool TryFixedDecimal(int *val, int digit) const; + // デフォルト値を差し替える。 // この変数が FromInitial なら値(初期値)を val に差し替える。この時 // from は FromInitial のまま。 @@ -118,7 +125,7 @@ class ConfigItem // from (と where) はこの変数の由来を示す。 // o FromOption なら値はコマンドラインオプションで指定されたことを示す。 // この場合 where に "-V" とかが入っている。 - // o FromConfig なら値は設定ファイルで指定されたことを示す。 + // o FromConfig, FromHome なら値は設定ファイルで指定されたことを示す。 // この場合 where に "ファイルパス:行番号" が入っている。 // o FromInitial なら値は初期値のままであることを示す。引数や // 設定ファイルで値を指定した場合は例え初期値と同じ値を指定したと @@ -131,7 +138,7 @@ class ConfigItem class ConfigFile { public: - ConfigFile(const std::string& filepath_); + ConfigFile(const std::string& filepath_, ConfigItem::from_t from_); ~ConfigFile(); // ファイルの読み込み。 @@ -141,6 +148,9 @@ class ConfigFile // パス std::string filepath {}; + // 設定元 + ConfigItem::from_t from {}; + // 読み込んだ行一覧 // 行(改行と前後の空白を除く) と行番号(1から始まる)の pair。 // コメント行や空行は取り除いてあるが、文法チェックはしていないので