Lines Matching defs:Option
1 //===- OptTable.cpp - Option Table Implementation -------------------------===//
9 #include "llvm/Option/OptTable.h"
12 #include "llvm/Option/Arg.h"
13 #include "llvm/Option/ArgList.h"
14 #include "llvm/Option/OptSpecifier.h"
15 #include "llvm/Option/Option.h"
72 assert(((A.Kind == Option::JoinedClass) ^ (B.Kind == Option::JoinedClass)) &&
74 return B.Kind == Option::JoinedClass;
86 OptSpecifier::OptSpecifier(const Option *Opt) : ID(Opt->getID()) {}
96 if (Kind == Option::InputClass) {
99 } else if (Kind == Option::UnknownClass) {
102 } else if (Kind != Option::GroupClass) {
113 Option::OptionClass Kind = (Option::OptionClass) getInfo(i + 1).Kind;
114 assert((Kind != Option::InputClass && Kind != Option::UnknownClass &&
115 Kind != Option::GroupClass) &&
143 const Option OptTable::getOption(OptSpecifier Opt) const {
146 return Option(nullptr, nullptr);
148 return Option(&getInfo(id), this);
175 // Returns true if one of the Prefixes + In.Names matches Option
176 static bool optionMatches(const OptTable::Info &In, StringRef Option) {
178 if (Option.ends_with(In.getName()))
179 if (Option.slice(0, Option.size() - In.getName().size()) == Prefix)
188 OptTable::suggestValueCompletions(StringRef Option, StringRef Arg) const {
192 if (!In.Values || !optionMatches(In, Option))
231 unsigned OptTable::findNearest(StringRef Option, std::string &NearestString,
236 Option, NearestString, MinimumLength, MaximumDistance,
242 unsigned OptTable::findNearest(StringRef Option, std::string &NearestString,
247 Option, NearestString, MinimumLength, MaximumDistance,
258 StringRef Option, std::string &NearestString, unsigned MinimumLength,
261 assert(!Option.empty());
296 std::tie(NormalizedName, RHS) = Option.split(Last);
297 if (Option.find(Last) == NormalizedName.size())
300 NormalizedName = Option;
367 Option Opt(Start, this);
376 if (ArgSize == 2 && Opt.getKind() == Option::FlagClass)
384 Option Opt(Fallback, this);
410 return internalParseOneArg(Args, Index, [VisibilityMask](const Option &Opt) {
419 Args, Index, [FlagsToInclude, FlagsToExclude](const Option &Opt) {
430 std::function<bool(const Option &)> ExcludeOption) const {
464 Option Opt(Start, this);
496 [VisibilityMask](const Option &Opt) {
508 [FlagsToInclude, FlagsToExclude](const Option &Opt) {
520 std::function<bool(const Option &)> ExcludeOption) const {
600 const Option O = Opts.getOption(Id);
605 case Option::GroupClass: case Option::InputClass: case Option::UnknownClass:
608 case Option::MultiArgClass:
622 case Option::FlagClass:
625 case Option::ValuesClass:
628 case Option::SeparateClass: case Option::JoinedOrSeparateClass:
629 case Option::RemainingArgsClass: case Option::RemainingArgsJoinedClass:
632 case Option::JoinedClass: case Option::CommaJoinedClass:
633 case Option::JoinedAndSeparateClass:
666 const std::string &Option = Opt.Name;
668 int FirstLinePad = OptionFieldWidth - int(Option.size());
669 OS.indent(InitialPad) << Option;
747 if (getOptionKind(Id) == Option::GroupClass)
761 const Option Alias = getOption(Id).getAlias();