CBMC: /home/runner/work/cbmc/cbmc/src/util/cmdline.h Source File

CBMC
Loading...
Searching...
No Matches
cmdline.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module:
4
5Author: Daniel Kroening, kroening@kroening.com
6
7\*******************************************************************/
8
9
10#ifndef CPROVER_UTIL_CMDLINE_H
11#define CPROVER_UTIL_CMDLINE_H
12
13#include <limits>
14#include <list>
15#include <optional>
16#include <string>
17#include <vector>
18
19 class cmdlinet
20{
21public:
74 virtual bool parse(int argc, const char **argv, const char *optstring);
75
76 std::string get_value(char option) const;
77 std::string get_value(const char *option) const;
78
79 std::optional<std::string> value_opt(char option) const;
80 std::optional<std::string> value_opt(const char *option) const;
81
82 const std::list<std::string> &get_values(const std::string &option) const;
83 const std::list<std::string> &get_values(char option) const;
84
87 std::list<std::string> get_comma_separated_values(const char *option) const;
88
89 virtual bool isset(char option) const;
90 virtual bool isset(const char *option) const;
92 virtual void set(const std::string &option, bool value = true);
93 virtual void set(const std::string &option, const std::string &value);
94 virtual void set(const std::string &option, const char *value)
95 {
96 set(option, std::string{value});
97 }
98 virtual void set(char option, const std::string &value);
99
100 virtual void clear();
101
102 bool has_option(const std::string &option) const
103{
104 return getoptnr(option).has_value();
105 }
106
108 {
109 explicit option_namest(const cmdlinet &command_line);
111 {
112 // These types are defined such that the class is compatible with being
113 // treated as an STL iterator. For this to work, they must not be renamed.
114 using iterator_category = std::forward_iterator_tag;
115 using value_type = std::string;
116 using difference_type = std::ptrdiff_t;
117 using pointer = const std::string *;
118 using reference = const std::string &;
119
121 explicit option_names_iteratort(
122 const cmdlinet *command_line,
123 std::size_t index);
129
132 const std::string &operator*();
133
134 bool operator==(const option_names_iteratort &other);
135 bool operator!=(const option_names_iteratort &other);
136
137 private:
138 const cmdlinet *command_line = nullptr;
139 std::size_t index = std::numeric_limits<std::size_t>::max();
140 bool is_valid_index() const;
142 };
145
146 private:
148 };
149
153
154 typedef std::vector<std::string> argst;
156 std::string unknown_arg;
157
158 cmdlinet();
159 virtual ~cmdlinet();
160
161 std::vector<std::string>
162 get_argument_suggestions(const std::string &unknown_argument);
163
164protected:
165 struct optiont
166 {
167 bool isset;
168 bool hasval;
169 bool islong;
171 std::string optstring;
172 std::list<std::string> values;
173 public:
175 isset(false),
176 hasval(false),
177 islong(false),
178 optchar(0)
179 {}
180 };
181
186 void parse_optstring(const char *optstring);
187
192 bool parse_arguments(int argc, const char **argv);
193
194 std::vector<optiont> options;
195
196 std::optional<std::size_t> getoptnr(char option) const;
197 std::optional<std::size_t> getoptnr(const std::string &option) const;
198};
199
200#endif // CPROVER_UTIL_CMDLINE_H
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:566
std::string get_value(char option) const
Definition cmdline.cpp:48
virtual void set(const std::string &option, const char *value)
Definition cmdline.h:94
std::string unknown_arg
Definition cmdline.h:156
virtual bool isset(char option) const
Definition cmdline.cpp:30
std::list< std::string > get_comma_separated_values(const char *option) const
Collect all occurrences of option option and split their values on each comma, merging them into a si...
Definition cmdline.cpp:147
std::optional< std::size_t > getoptnr(char option) const
Definition cmdline.cpp:161
bool has_option(const std::string &option) const
Definition cmdline.h:102
cmdlinet()
Definition cmdline.cpp:16
argst args
Definition cmdline.h:155
std::optional< std::string > value_opt(char option) const
Definition cmdline.cpp:53
bool parse_arguments(int argc, const char **argv)
Parses a commandline according to a previously parsed optstring and writes the result to cmdlinet::op...
Definition cmdline.cpp:295
std::vector< optiont > options
Definition cmdline.h:194
virtual ~cmdlinet()
Definition cmdline.cpp:20
virtual void set(const std::string &option, bool value=true)
Set option option to value, or true if the value is omitted.
Definition cmdline.cpp:63
virtual bool parse(int argc, const char **argv, const char *optstring)
Parses a commandline according to a specification given in optstring.
Definition cmdline.cpp:179
std::vector< std::string > get_argument_suggestions(const std::string &unknown_argument)
Definition cmdline.cpp:236
void parse_optstring(const char *optstring)
Parses an optstring and writes the result to cmdlinet::options.
Definition cmdline.cpp:191
option_namest option_names() const
Pseudo-object that can be used to iterate over options in this cmdlinet (should not outlive this)
Definition cmdline.cpp:187
std::vector< std::string > argst
Definition cmdline.h:154
virtual void clear()
Definition cmdline.cpp:24
const std::list< std::string > & get_values(const std::string &option) const
Definition cmdline.cpp:135
option_names_iteratort(option_names_iteratort &&other)=default
bool operator==(const option_names_iteratort &other)
Definition cmdline.cpp:392
option_names_iteratort(const option_names_iteratort &other)=default
std::forward_iterator_tag iterator_category
Definition cmdline.h:114
bool operator!=(const option_names_iteratort &other)
Definition cmdline.cpp:399
option_names_iteratort & operator=(const option_names_iteratort &)=default
option_names_iteratort & operator=(option_names_iteratort &&)=default
option_names_iteratort & operator++()
Definition cmdline.cpp:355
option_names_iteratort end()
Definition cmdline.cpp:415
option_names_iteratort begin()
Definition cmdline.cpp:410
const cmdlinet & command_line
Definition cmdline.h:147
std::string optstring
Definition cmdline.h:171
std::list< std::string > values
Definition cmdline.h:172

AltStyle によって変換されたページ (->オリジナル) /