11namespace di::cli::detail {
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) {
56 bool required =
false)
57 : m_parse(concrete_parse<member>)
58 , m_argument_name(argument_name)
59 , m_description(description)
60 , m_required(required)
61 , m_variadic(concrete_variadic<member>()) {
63 "Argument member must be a pointer to a member object.");
68 return m_parse(output, input);
70 constexpr auto argument_name()
const {
return m_argument_name; }
71 constexpr auto description()
const {
return m_description; }
72 constexpr auto required()
const {
return m_required; }
73 constexpr auto variadic()
const {
return m_variadic; }
75 constexpr auto required_argument_count()
const ->
usize {
return required() ? 1 : 0; }
77 constexpr auto display_name()
const {
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
Definition span_forward_declaration.h:10
Definition encoding.h:225
Definition language.h:203
#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
constexpr auto parse
Definition parse.h:23