CPP-AP 3.0.1
Command-line argument parser for C++20
Loading...
Searching...
No Matches
argument_base.hpp
Go to the documentation of this file.
1// Copyright (c) 2023-2025 Jakub MusiaƂ
2// This file is part of the CPP-AP project (https://github.com/SpectraL519/cpp-ap).
3// Licensed under the MIT License. See the LICENSE file in the project root for full license information.
4
10#pragma once
11
12#include "argument_name.hpp"
13#include "help_builder.hpp"
14
15#include <any>
16#include <iostream>
17#include <vector>
18
19namespace ap {
20
21class argument_parser;
22
23namespace detail {
24
27public:
28 virtual ~argument_base() = default;
29
31 virtual bool is_positional() const noexcept = 0;
32
34 virtual bool is_optional() const noexcept = 0;
35
37 virtual const argument_name& name() const noexcept = 0;
38
40 virtual const std::optional<std::string>& help() const noexcept = 0;
41
43 virtual bool is_hidden() const noexcept = 0;
44
46 virtual bool is_required() const noexcept = 0;
47
49 virtual bool suppresses_arg_checks() const noexcept = 0;
50
52 virtual bool suppresses_group_checks() const noexcept = 0;
53
55 virtual bool is_greedy() const noexcept = 0;
56
57 friend class ::ap::argument_parser;
58
59protected:
62 virtual detail::help_builder help_builder(const bool verbose) const noexcept = 0;
63
66 virtual bool mark_used() = 0;
67
69 virtual bool is_used() const noexcept = 0;
70
72 virtual std::size_t count() const noexcept = 0;
73
77 virtual bool set_value(const std::string& value) = 0;
78
80 virtual bool has_value() const noexcept = 0;
81
83 virtual bool has_parsed_values() const noexcept = 0;
84
86 virtual bool has_predefined_values() const noexcept = 0;
87
89 virtual std::weak_ordering nvalues_ordering() const noexcept = 0;
90
92 virtual const std::any& value() const = 0;
93
95 virtual const std::vector<std::any>& values() const = 0;
96};
97
98} // namespace detail
99} // namespace ap
The main argument parser class.
Argument class interface.
virtual bool has_value() const noexcept=0
virtual bool suppresses_group_checks() const noexcept=0
virtual std::weak_ordering nvalues_ordering() const noexcept=0
virtual bool has_predefined_values() const noexcept=0
virtual std::size_t count() const noexcept=0
virtual bool is_used() const noexcept=0
virtual bool set_value(const std::string &value)=0
Set the value for the argument.
virtual bool is_optional() const noexcept=0
virtual const std::optional< std::string > & help() const noexcept=0
virtual const std::any & value() const =0
virtual bool is_positional() const noexcept=0
virtual bool is_greedy() const noexcept=0
virtual ~argument_base()=default
virtual bool is_required() const noexcept=0
virtual const argument_name & name() const noexcept=0
virtual const std::vector< std::any > & values() const =0
virtual bool has_parsed_values() const noexcept=0
virtual bool mark_used()=0
Mark the argument as used.
virtual bool suppresses_arg_checks() const noexcept=0
virtual bool is_hidden() const noexcept=0
A help message builder class.
Defines structures for creating and formatting help messages.
Structure holding the argument's name.