cprover
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 <string>
16#include <vector>
17
18#include "optional.h"
19
21{
22public:
75 virtual bool parse(int argc, const char **argv, const char *optstring);
76
77 std::string get_value(char option) const;
78 std::string get_value(const char *option) const;
79
80 const std::list<std::string> &get_values(const std::string &option) const;
81 const std::list<std::string> &get_values(char option) const;
82
85 std::list<std::string> get_comma_separated_values(const char *option) const;
86
87 virtual bool isset(char option) const;
88 virtual bool isset(const char *option) const;
90 virtual void set(const std::string &option, bool value = true);
91 virtual void set(const std::string &option, const std::string &value);
92 virtual void set(const std::string &option, const char *value)
93 {
94 set(option, std::string{value});
95 }
96
97 virtual void clear();
98
99 bool has_option(const std::string &option) const
100 {
101 return getoptnr(option).has_value();
102 }
103
105 {
106 explicit option_namest(const cmdlinet &command_line);
108 : public std::iterator<std::forward_iterator_tag, std::string>
109 {
111 explicit option_names_iteratort(
112 const cmdlinet *command_line,
113 std::size_t index);
119
122 const std::string &operator*();
123
124 bool operator==(const option_names_iteratort &other);
125 bool operator!=(const option_names_iteratort &other);
126
127 private:
128 const cmdlinet *command_line = nullptr;
129 std::size_t index = std::numeric_limits<std::size_t>::max();
130 bool is_valid_index() const;
132 };
135
136 private:
138 };
139
143
144 typedef std::vector<std::string> argst;
146 std::string unknown_arg;
147
148 cmdlinet();
149 virtual ~cmdlinet();
150
151 std::vector<std::string>
152 get_argument_suggestions(const std::string &unknown_argument);
153
154protected:
155 struct optiont
156 {
157 bool isset;
158 bool hasval;
159 bool islong;
161 std::string optstring;
162 std::list<std::string> values;
163 public:
165 isset(false),
166 hasval(false),
167 islong(false),
168 optchar(0)
169 {}
170 };
171
176 void parse_optstring(const char *optstring);
177
182 bool parse_arguments(int argc, const char **argv);
183
184 std::vector<optiont> options;
185
186 optionalt<std::size_t> getoptnr(char option) const;
187 optionalt<std::size_t> getoptnr(const std::string &option) const;
188};
189
190#endif // CPROVER_UTIL_CMDLINE_H
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:563
std::string get_value(char option) const
Definition cmdline.cpp:48
virtual void set(const std::string &option, const char *value)
Definition cmdline.h:92
std::string unknown_arg
Definition cmdline.h:146
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:121
bool has_option(const std::string &option) const
Definition cmdline.h:99
argst args
Definition cmdline.h:145
optionalt< std::size_t > getoptnr(char option) const
Definition cmdline.cpp:135
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:269
std::vector< optiont > options
Definition cmdline.h:184
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:58
virtual bool parse(int argc, const char **argv, const char *optstring)
Parses a commandline according to a specification given in optstring.
Definition cmdline.cpp:153
std::vector< std::string > get_argument_suggestions(const std::string &unknown_argument)
Definition cmdline.cpp:210
void parse_optstring(const char *optstring)
Parses an optstring and writes the result to cmdlinet::options.
Definition cmdline.cpp:165
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:161
std::vector< std::string > argst
Definition cmdline.h:144
virtual void clear()
Definition cmdline.cpp:24
const std::list< std::string > & get_values(const std::string &option) const
Definition cmdline.cpp:109
option_names_iteratort(option_names_iteratort &&other)=default
bool operator==(const option_names_iteratort &other)
Definition cmdline.cpp:372
option_names_iteratort(const option_names_iteratort &other)=default
bool operator!=(const option_names_iteratort &other)
Definition cmdline.cpp:379
option_names_iteratort & operator=(const option_names_iteratort &)=default
option_names_iteratort & operator=(option_names_iteratort &&)=default
option_names_iteratort end()
Definition cmdline.cpp:395
option_names_iteratort begin()
Definition cmdline.cpp:390
const cmdlinet & command_line
Definition cmdline.h:137
std::string optstring
Definition cmdline.h:161
std::list< std::string > values
Definition cmdline.h:162