kaycxx-cli
C++ CLI library
Loading...
Searching...
No Matches
parameter_base.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Klaus Reimer <k@ailis.de>
2// SPDX-License-Identifier: MIT
3
9#pragma once
10
11#include <any>
12#include <cstddef>
13#include <optional>
14#include <span>
15#include <string>
16#include <string_view>
17
18namespace kaycxx::cli {
19
24public:
31 explicit parameter_base(std::string_view name, std::optional<std::string_view> description = std::nullopt);
32
34 virtual ~parameter_base() = default;
35
41 [[nodiscard]] std::string const& name() const noexcept;
42
49
55 [[nodiscard]] virtual std::string usage() const = 0;
56
62 [[nodiscard]] virtual std::size_t min_count() const noexcept = 0;
63
69 [[nodiscard]] virtual std::size_t max_count() const noexcept = 0;
70
81
84 std::string name_;
85
87 std::optional<std::string> description_;
88};
89
90} // namespace kaycxx::cli
Handle for a registered option.
Definition option_handle.hpp:25
Common base class for positional parameter definitions.
Definition parameter_base.hpp:23
virtual std::size_t max_count() const noexcept=0
Returns the maximum number of values consumed by this parameter.
std::optional< std::string > const & description() const noexcept
Returns the parameter description.
virtual ~parameter_base()=default
Destroys the parameter definition.
virtual std::any parse_values(std::span< std::string_view const > values) const =0
Parses positional parameter values.
parameter_base(std::string_view name, std::optional< std::string_view > description=std::nullopt)
Creates a positional parameter definition.
std::string const & name() const noexcept
Returns the parameter name.
virtual std::string usage() const =0
Returns generated help usage for this parameter.
virtual std::size_t min_count() const noexcept=0
Returns the minimum number of values consumed by this parameter.