args-parser 6.3.6
Loading...
Searching...
No Matches
arg_iface.hpp
Go to the documentation of this file.
1
2/*
3 SPDX-FileCopyrightText: 2026 Igor Mironchik <igor.mironchik@gmail.com>
4 SPDX-License-Identifier: MIT
5*/
6
7#ifndef ARGS__ARG_IFACE_HPP__INCLUDED
8#define ARGS__ARG_IFACE_HPP__INCLUDED
9
10// Args include.
11#include "enums.hpp"
12#include "types.hpp"
13#include "utils.hpp"
14
15namespace Args
16{
17
18class Context;
19class CmdLine;
20class GroupIface;
21class Command;
22
23//
24// ArgIface
25//
26
29{
30 friend class CmdLine;
31 friend class GroupIface;
32 friend class Command;
33
34public:
36 : m_cmdLine(nullptr)
37 {
38 }
39
40 virtual ~ArgIface()
41 {
42 }
43
45 virtual ArgType type() const = 0;
46
53 virtual String name() const = 0;
54
56 virtual bool isWithValue() const = 0;
57
59 virtual bool isRequired() const = 0;
60
62 virtual bool isDefined() const = 0;
63
65 virtual const String &flag() const = 0;
66
68 virtual const String &argumentName() const = 0;
69
71 virtual const String &valueSpecifier() const = 0;
72
74 virtual const String &description() const = 0;
75
77 virtual const String &longDescription() const = 0;
78
80 virtual const String &defaultValue() const
81 {
82 return m_dummy;
83 }
84
87 {
88 return m_cmdLine;
89 }
90
92 virtual bool isMisspelledName(
94 const String &name,
96 StringList &possibleNames) const = 0;
97
99 virtual void clear() = 0;
100
101protected:
115 const String &name) = 0;
116
122 virtual void process(
124 Context &context) = 0;
125
134 StringList &flags,
136 StringList &names) const = 0;
137
139 virtual void checkCorrectnessAfterParsing() const = 0;
140
143 {
144 m_cmdLine = cmdLine;
145 }
146
147private:
149
150
151 CmdLine *m_cmdLine;
153 String m_dummy;
154}; // class ArgIface
155
156} /* namespace Args */
157
158#endif // ARGS__ARG_IFACE_HPP__INCLUDED
Interface for arguments.
Definition arg_iface.hpp:29
virtual ArgIface * findArgument(const String &name)=0
friend class CmdLine
Definition arg_iface.hpp:30
virtual const String & valueSpecifier() const =0
friend class GroupIface
Definition arg_iface.hpp:31
virtual bool isRequired() const =0
virtual void process(Context &context)=0
Process argument's staff, for example take values from context.
virtual ~ArgIface()
Definition arg_iface.hpp:40
friend class Command
Definition arg_iface.hpp:32
virtual String name() const =0
virtual const String & longDescription() const =0
virtual ArgType type() const =0
virtual const String & argumentName() const =0
virtual bool isWithValue() const =0
virtual void setCmdLine(CmdLine *cmdLine)
Set command line parser.
virtual void checkCorrectnessAfterParsing() const =0
Check correctness of the argument after parsing.
virtual const String & flag() const =0
CmdLine * cmdLine() const
Definition arg_iface.hpp:86
virtual const String & description() const =0
virtual void clear()=0
Clear state of the argument.
virtual bool isDefined() const =0
virtual bool isMisspelledName(const String &name, StringList &possibleNames) const =0
virtual const String & defaultValue() const
Definition arg_iface.hpp:80
virtual void checkCorrectnessBeforeParsing(StringList &flags, StringList &names) const =0
Check correctness of the argument before parsing.
CmdLine is class that holds all rguments and parse command line arguments in the correspondence with ...
Definition cmd_line.hpp:98
Command in the command line interface.
Definition command.hpp:28
Context is a list of words in the command line that user presented with interface for interacting wit...
Definition context.hpp:36
Interface for the groups.
Definition api.hpp:18
std::string String
String type.
Definition types.hpp:314
ArgType
Type of the argument.
Definition enums.hpp:32
std::vector< String > StringList
List of strings.
Definition types.hpp:336
#define DISABLE_COPY(Class)
Macro for disabling copy.
Definition utils.hpp:25