17 constexpr static auto concrete_variadic() ->
bool {
29 auto* output =
static_cast<Base*
>(output_untyped);
30 if constexpr (concrete_variadic<member>()) {
31 auto& vector = (*output).*member = Value();
32 for (
auto view : input) {
57 : m_parse(concrete_parse<member>)
61 , m_variadic(concrete_variadic<member>()) {
63 "Argument member must be a pointer to a member object.");
68 return m_parse(output, input);
72 constexpr auto required()
const {
return m_required; }
73 constexpr auto variadic()
const {
return m_variadic; }
80 result.push_back(U
'[');
82 result += m_argument_name;
84 result.push_back(U
'.');
85 result.push_back(U
'.');
86 result.push_back(U
'.');
89 result.push_back(U
']');
95 Parse m_parse {
nullptr };
98 bool m_required {
false };
99 bool m_variadic {
false };
#define DI_ASSERT(...)
Definition assert_bool.h:7
constexpr Argument(Constexpr< member >, StringView argument_name={}, StringView description={}, bool required=false)
Definition argument.h:55
constexpr auto required() const
Definition argument.h:72
constexpr auto variadic() const
Definition argument.h:73
constexpr auto description() const
Definition argument.h:71
constexpr auto parse(void *output, Span< TransparentStringView > input) const
Definition argument.h:66
constexpr auto argument_name() const
Definition argument.h:70
constexpr auto display_name() const
Definition argument.h:77
constexpr auto required_argument_count() const -> usize
Definition argument.h:75
Definition span_forward_declaration.h:10
Definition encoding.h:225
Definition language.h:203
Definition mutable_vector.h:13
#define DI_TRY(...)
Definition monad_try.h:13
string::StringViewImpl< string::Utf8Encoding > StringView
Definition string_view.h:12
string::StringImpl< string::Utf8Encoding > String
Definition string.h:11
constexpr auto parse
Definition parse.h:23
size_t usize
Definition integers.h:33
Expected< T, Error > Result
Definition result.h:8