8#include <unordered_map>
23 : name_(std::move(
name)) {}
26 : name_(std::move(
name)), value_(std::move(
value)) {}
28 const std::string &
name() const & {
33 return std::move(name_);
36 const std::optional<std::string> &
value() const & {
40 std::optional<std::string> &&
value() && {
41 return std::move(value_);
46 std::optional<std::string> value_;
52 : arg_(std::move(
arg)) {}
54 const std::string &
arg() const & {
58 std::string &&
arg() && {
59 return std::move(arg_);
71 : arg_(std::move(
option)) {}
74 : arg_(std::move(positionalArg)) {}
80 return std::get_if<OptionArgument>(&arg_);
84 return std::get_if<PositionalArgument>(&arg_);
88 return std::get_if<Separator>(&arg_);
92 std::variant<OptionArgument, PositionalArgument, Separator> arg_;
97 using iterator = std::vector<Argument>::const_iterator;
99 explicit Result(std::vector<Argument> args)
100 : result_(std::move(args)) {}
103 return result_.begin();
107 return result_.end();
111 return result_.size();
115 return result_.empty();
119 std::vector<Argument> result_;
142 return std::move(optionName_);
147 std::string optionName_;
155 enum class OptionKind {
161 std::unordered_map<std::string, OptionKind> options_;
162 std::vector<Argument> args_;
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
const Separator * separator() const
Definition CommandLineParser.h:87
const OptionArgument * option() const
Definition CommandLineParser.h:79
Argument(PositionalArgument positionalArg)
Definition CommandLineParser.h:73
Argument(OptionArgument option)
Definition CommandLineParser.h:70
Argument(Separator separator)
Definition CommandLineParser.h:76
const PositionalArgument * positional() const
Definition CommandLineParser.h:83
const std::string & optionName() const &
Definition CommandLineParser.h:137
ErrorKind kind() const
Definition CommandLineParser.h:133
std::string && optionName() &&
Definition CommandLineParser.h:141
Error(ErrorKind kind, std::string optionName)
Definition CommandLineParser.h:130
Definition CommandLineParser.h:20
const std::string & name() const &
Definition CommandLineParser.h:28
OptionArgument(std::string name, std::string value)
Definition CommandLineParser.h:25
const std::optional< std::string > & value() const &
Definition CommandLineParser.h:36
OptionArgument(std::string name)
Definition CommandLineParser.h:22
std::optional< std::string > && value() &&
Definition CommandLineParser.h:40
std::string && name() &&
Definition CommandLineParser.h:32
Definition CommandLineParser.h:49
const std::string & arg() const &
Definition CommandLineParser.h:54
PositionalArgument(std::string arg)
Definition CommandLineParser.h:51
std::string && arg() &&
Definition CommandLineParser.h:58
iterator end() const
Definition CommandLineParser.h:106
Result(std::vector< Argument > args)
Definition CommandLineParser.h:99
std::vector< Argument >::const_iterator iterator
Definition CommandLineParser.h:97
bool empty() const
Definition CommandLineParser.h:114
iterator begin() const
Definition CommandLineParser.h:102
size_t size() const
Definition CommandLineParser.h:110
Definition CommandLineParser.h:66
Definition CommandLineParser.h:18
void addOption(std::string name)
ErrorKind
Definition CommandLineParser.h:122
Expected< Result, Error > operator()(const std::vector< std::string > &args)
Definition GraphColoringAllocator.h:13
constexpr const char * name(Diagnostic::Level level)
Definition Diagnostic.h:38