11#include <magic_enum.hpp>
20 : kBootModeNum(static_cast<int>(magic_enum::enum_count<
BootMode>())),
30 for (
int i = 0; i < kBootModeNum; i++) {
33 const std::string boot_mode_name =
39 const std::string default_mode_name =
48 int default_mode_num =
static_cast<int>(default_mode_);
50 const int input =
cmdio::InputInt(0, kBootModeNum - 1, default_mode_num);
53 if (magic_enum::enum_cast<BootMode>(input).has_value()) {
54 return magic_enum::enum_cast<BootMode>(input).value();
58 cmdio::Output(
"Input value is invalid. Run default mode.", output_detail);
BootMode SelectBootMode()
起動モードを選択する. BootModeが int 型をもとにしているかつ, 0から始まることを前提にしているので, うまく動作しない場合は,BootModeの定義を見直すこと.
void OutputF(OutputDetail detail, const std::format_string< Args... > str, Args &&... args)
コマンドラインに文字を出力する関数, format した文字列を出力する. SetOutputLimit() で設定した出力の許可範囲内であれば出力される.
int InputInt(int min, int max, int default_num, const std::string &str="Please enter an integer.")
整数を入力させる関数. 出力される文字列は, 必ず OutputDetail::kSystem で出力される.
void OutputNewLine(int num, OutputDetail detail)
コマンドラインで改行をする関数.
void Output(const std::string &str, OutputDetail detail)
コマンドラインに文字を出力する関数. SetOutputLimit 関数で設定した出力の許可範囲内であれば出力される.
std::string EnumToStringRemoveTopK(const T &enum_value)
enumを文字列に変換する関数. Google C++ coding style だと enumの要素は 先頭にkをつけてキャメルケースで書くことが推奨されている....
@ kSimulation
シミュレーションモード.
OutputDetail
コマンドラインに文字を出力する際に,その詳細を指定するための列挙体.
@ kSystem
システムメッセージ,常に出力する.