module; #include #include #include module routemon:problem$impl; import :problem; namespace routemon::problem { auto details::set_detail(blocale::message detail) -> details& { this->detail = detail; return *this; } auto details::set_instance(std::string&& instance) -> details& { this->instance = instance; return *this; } auto details::set_instance(std::string_view instance) -> details& { this->instance = std::string{instance}; return *this; } auto tag_invoke( json::value_from_tag, json::value& jv, details const& details, std::locale locale) -> void { auto obj = json::object{ {"type", details.type_uri}, {"title", details.title.str(locale)}, {"status", static_cast(details.status)}, }; if (details.detail) obj["detail"] = details.detail->str(locale); if (details.instance) obj["instance"] = *details.instance; jv = obj; } auto tpl::instantiate() const -> details { return details{status, title, type_uri}; } } // namespace routemon::problem