32class SIMO_PUBLIC InitializationStatus {
34 InitializationStatus(
Module* module,
35 const std::vector<std::string>& error_list);
37 explicit InitializationStatus(
Module* module);
39 static InitializationStatus ok(
Module* module);
41 void add_error(std::string_view new_error);
43 [[nodiscard]] std::string to_string()
const;
45 template <
typename... Args>
46 InitializationStatus& emplace_sub_error(Args... args) {
47 sub_errors.emplace_back(args...);
48 success_ &= sub_errors.back().success();
49 return sub_errors.back();
52 [[nodiscard]]
bool success()
const;
54 explicit operator bool()
const;
58 std::vector<std::string> error_list;
59 std::vector<InitializationStatus> sub_errors;
60 bool success_ =
false;
62 void append_to(std::string& out, std::size_t indent)
const;
73struct std::formatter<
Simo::InitializationStatus, char>
74 : std::formatter<std::string, char> {
76 std::format_context& ctx)
const {
77 return std::formatter<std::string, char>::format(status.to_string(), ctx);