#ifndef seafire__server__parameters_hxx_ #define seafire__server__parameters_hxx_ #include #include #include #include #include namespace seafire::server { template struct parameter_name_t { constexpr parameter_name_t(const char (&str)[N]) { std::copy_n(str, N, name); } operator std::string const() const { return name; } char name[N]; }; template class named_parameter_t { public: static std::string const& name() { static std::string name{Name}; return name; } }; struct string_parameter_t { using value_type = std::string; static std::optional try_parse(std::optional const&); }; struct int_parameter_t { using value_type = std::int64_t; static std::optional try_parse(std::optional const&); }; struct uint_parameter_t { using value_type = std::uint64_t; static std::optional try_parse(std::optional const&); }; } // namespace seafire::server #endif