Running clang-format on CommandLine.h and CommandLine.cpp.

No functional changes, I'm just going to be doing a lot of work in these files and it would be helpful if they had more current LLVM style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225817 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Bieneman
2015-01-13 19:14:20 +00:00
parent 0ba9a7e4bb
commit 33943f870f
2 changed files with 695 additions and 653 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -44,7 +44,8 @@ using namespace cl;
//===----------------------------------------------------------------------===//
// Template instantiations and anchors.
//
namespace llvm { namespace cl {
namespace llvm {
namespace cl {
TEMPLATE_INSTANTIATION(class basic_parser<bool>);
TEMPLATE_INSTANTIATION(class basic_parser<boolOrDefault>);
TEMPLATE_INSTANTIATION(class basic_parser<int>);
@@ -60,7 +61,8 @@ TEMPLATE_INSTANTIATION(class opt<int>);
TEMPLATE_INSTANTIATION(class opt<std::string>);
TEMPLATE_INSTANTIATION(class opt<char>);
TEMPLATE_INSTANTIATION(class opt<bool>);
} } // end namespace llvm::cl
}
} // end namespace llvm::cl
// Pin the vtables to this file.
void GenericOptionValue::anchor() {}
@@ -87,19 +89,16 @@ static char ProgramName[80] = "<premain>";
static const char *ProgramOverview = nullptr;
// This collects additional help to be printed.
static ManagedStatic<std::vector<const char*> > MoreHelp;
static ManagedStatic<std::vector<const char *>> MoreHelp;
extrahelp::extrahelp(const char *Help)
: morehelp(Help) {
extrahelp::extrahelp(const char *Help) : morehelp(Help) {
MoreHelp->push_back(Help);
}
static bool OptionListChanged = false;
// MarkOptionsChanged - Internal helper function.
void cl::MarkOptionsChanged() {
OptionListChanged = true;
}
void cl::MarkOptionsChanged() { OptionListChanged = true; }
/// RegisteredOptionList - This is the list of the command line options that
/// have statically constructed themselves.
@@ -127,7 +126,7 @@ void Option::removeArgument() {
}
// This collects the different option categories that have been registered.
typedef SmallPtrSet<OptionCategory*,16> OptionCatSet;
typedef SmallPtrSet<OptionCategory *, 16> OptionCatSet;
static ManagedStatic<OptionCatSet> RegisteredOptionCategories;
// Initialise the general option category.
@@ -138,7 +137,8 @@ void OptionCategory::registerCategory() {
RegisteredOptionCategories->end(),
[this](const OptionCategory *Category) {
return getName() == Category->getName();
}) == 0 && "Duplicate option categories");
}) == 0 &&
"Duplicate option categories");
RegisteredOptionCategories->insert(this);
}
@@ -149,11 +149,11 @@ void OptionCategory::registerCategory() {
/// GetOptionInfo - Scan the list of registered options, turning them into data
/// structures that are easier to handle.
static void GetOptionInfo(SmallVectorImpl<Option*> &PositionalOpts,
SmallVectorImpl<Option*> &SinkOpts,
StringMap<Option*> &OptionsMap) {
static void GetOptionInfo(SmallVectorImpl<Option *> &PositionalOpts,
SmallVectorImpl<Option *> &SinkOpts,
StringMap<Option *> &OptionsMap) {
bool HadErrors = false;
SmallVector<const char*, 16> OptionNames;
SmallVector<const char *, 16> OptionNames;
Option *CAOpt = nullptr; // The ConsumeAfter option if it exists.
for (Option *O = RegisteredOptionList; O; O = O->getNextRegisteredOption()) {
// If this option wants to handle multiple option names, get the full set.
@@ -201,31 +201,32 @@ static void GetOptionInfo(SmallVectorImpl<Option*> &PositionalOpts,
report_fatal_error("inconsistency in registered CommandLine options");
}
/// LookupOption - Lookup the option specified by the specified option on the
/// command line. If there is a value specified (after an equal sign) return
/// that as well. This assumes that leading dashes have already been stripped.
static Option *LookupOption(StringRef &Arg, StringRef &Value,
const StringMap<Option*> &OptionsMap) {
const StringMap<Option *> &OptionsMap) {
// Reject all dashes.
if (Arg.empty()) return nullptr;
if (Arg.empty())
return nullptr;
size_t EqualPos = Arg.find('=');
// If we have an equals sign, remember the value.
if (EqualPos == StringRef::npos) {
// Look up the option.
StringMap<Option*>::const_iterator I = OptionsMap.find(Arg);
StringMap<Option *>::const_iterator I = OptionsMap.find(Arg);
return I != OptionsMap.end() ? I->second : nullptr;
}
// If the argument before the = is a valid option name, we match. If not,
// return Arg unmolested.
StringMap<Option*>::const_iterator I =
StringMap<Option *>::const_iterator I =
OptionsMap.find(Arg.substr(0, EqualPos));
if (I == OptionsMap.end()) return nullptr;
if (I == OptionsMap.end())
return nullptr;
Value = Arg.substr(EqualPos+1);
Value = Arg.substr(EqualPos + 1);
Arg = Arg.substr(0, EqualPos);
return I->second;
}
@@ -235,10 +236,11 @@ static Option *LookupOption(StringRef &Arg, StringRef &Value,
/// (after an equal sign) return that as well. This assumes that leading dashes
/// have already been stripped.
static Option *LookupNearestOption(StringRef Arg,
const StringMap<Option*> &OptionsMap,
const StringMap<Option *> &OptionsMap,
std::string &NearestString) {
// Reject all dashes.
if (Arg.empty()) return nullptr;
if (Arg.empty())
return nullptr;
// Split on any equal sign.
std::pair<StringRef, StringRef> SplitArg = Arg.split('=');
@@ -248,10 +250,11 @@ static Option *LookupNearestOption(StringRef Arg,
// Find the closest match.
Option *Best = nullptr;
unsigned BestDistance = 0;
for (StringMap<Option*>::const_iterator it = OptionsMap.begin(),
ie = OptionsMap.end(); it != ie; ++it) {
for (StringMap<Option *>::const_iterator it = OptionsMap.begin(),
ie = OptionsMap.end();
it != ie; ++it) {
Option *O = it->second;
SmallVector<const char*, 16> OptionNames;
SmallVector<const char *, 16> OptionNames;
O->getExtraOptionNames(OptionNames);
if (O->ArgStr[0])
OptionNames.push_back(O->ArgStr);
@@ -292,8 +295,8 @@ static bool CommaSeparateAndAddOccurrence(Option *Handler, unsigned pos,
if (Handler->addOccurrence(pos, ArgName, Val.substr(0, Pos), MultiArg))
return true;
// Erase the portion before the comma, AND the comma.
Val = Val.substr(Pos+1);
Value.substr(Pos+1); // Increment the original value pointer as well.
Val = Val.substr(Pos + 1);
Value.substr(Pos + 1); // Increment the original value pointer as well.
// Check for another comma.
Pos = Val.find(',');
}
@@ -320,7 +323,7 @@ static inline bool ProvideOption(Option *Handler, StringRef ArgName,
switch (Handler->getValueExpectedFlag()) {
case ValueRequired:
if (!Value.data()) { // No value specified?
if (i+1 >= argc)
if (i + 1 >= argc)
return Handler->error("requires a value!");
// Steal the next argument, like for '-o filename'
assert(argv && "null check");
@@ -333,8 +336,8 @@ static inline bool ProvideOption(Option *Handler, StringRef ArgName,
" with ValueDisallowed modifier!");
if (Value.data())
return Handler->error("does not allow a value! '" +
Twine(Value) + "' specified.");
return Handler->error("does not allow a value! '" + Twine(Value) +
"' specified.");
break;
case ValueOptional:
break;
@@ -355,7 +358,7 @@ static inline bool ProvideOption(Option *Handler, StringRef ArgName,
}
while (NumAdditionalVals > 0) {
if (i+1 >= argc)
if (i + 1 >= argc)
return Handler->error("not enough values!");
assert(argv && "null check");
Value = argv[++i];
@@ -373,7 +376,6 @@ static bool ProvidePositionalOption(Option *Handler, StringRef Arg, int i) {
return ProvideOption(Handler, Handler->ArgStr, Arg, 0, nullptr, Dummy);
}
// Option predicates...
static inline bool isGrouping(const Option *O) {
return O->getFormattingFlag() == cl::Grouping;
@@ -389,16 +391,16 @@ static inline bool isPrefixedOrGrouping(const Option *O) {
// otherwise return null.
//
static Option *getOptionPred(StringRef Name, size_t &Length,
bool (*Pred)(const Option*),
const StringMap<Option*> &OptionsMap) {
bool (*Pred)(const Option *),
const StringMap<Option *> &OptionsMap) {
StringMap<Option*>::const_iterator OMI = OptionsMap.find(Name);
StringMap<Option *>::const_iterator OMI = OptionsMap.find(Name);
// Loop while we haven't found an option and Name still has at least two
// characters in it (so that the next iteration will not be the empty
// string.
while (OMI == OptionsMap.end() && Name.size() > 1) {
Name = Name.substr(0, Name.size()-1); // Chop off the last character.
Name = Name.substr(0, Name.size() - 1); // Chop off the last character.
OMI = OptionsMap.find(Name);
}
@@ -413,15 +415,18 @@ static Option *getOptionPred(StringRef Name, size_t &Length,
/// with at least one '-') does not fully match an available option. Check to
/// see if this is a prefix or grouped option. If so, split arg into output an
/// Arg/Value pair and return the Option to parse it with.
static Option *HandlePrefixedOrGroupedOption(StringRef &Arg, StringRef &Value,
static Option *
HandlePrefixedOrGroupedOption(StringRef &Arg, StringRef &Value,
bool &ErrorParsing,
const StringMap<Option*> &OptionsMap) {
if (Arg.size() == 1) return nullptr;
const StringMap<Option *> &OptionsMap) {
if (Arg.size() == 1)
return nullptr;
// Do the lookup!
size_t Length = 0;
Option *PGOpt = getOptionPred(Arg, Length, isPrefixedOrGrouping, OptionsMap);
if (!PGOpt) return nullptr;
if (!PGOpt)
return nullptr;
// If the option is a prefixed option, then the value is simply the
// rest of the name... so fall through to later processing, by
@@ -447,8 +452,8 @@ static Option *HandlePrefixedOrGroupedOption(StringRef &Arg, StringRef &Value,
assert(PGOpt->getValueExpectedFlag() != cl::ValueRequired &&
"Option can not be cl::Grouping AND cl::ValueRequired!");
int Dummy = 0;
ErrorParsing |= ProvideOption(PGOpt, OneArgName,
StringRef(), 0, nullptr, Dummy);
ErrorParsing |=
ProvideOption(PGOpt, OneArgName, StringRef(), 0, nullptr, Dummy);
// Get the next grouping option.
PGOpt = getOptionPred(Arg, Length, isGrouping, OptionsMap);
@@ -458,8 +463,6 @@ static Option *HandlePrefixedOrGroupedOption(StringRef &Arg, StringRef &Value,
return PGOpt;
}
static bool RequiresValue(const Option *O) {
return O->getNumOccurrencesFlag() == cl::Required ||
O->getNumOccurrencesFlag() == cl::OneOrMore;
@@ -470,17 +473,11 @@ static bool EatsUnboundedNumberOfValues(const Option *O) {
O->getNumOccurrencesFlag() == cl::OneOrMore;
}
static bool isWhitespace(char C) {
return strchr(" \t\n\r\f\v", C);
}
static bool isWhitespace(char C) { return strchr(" \t\n\r\f\v", C); }
static bool isQuote(char C) {
return C == '\"' || C == '\'';
}
static bool isQuote(char C) { return C == '\"' || C == '\''; }
static bool isGNUSpecial(char C) {
return strchr("\\\"\' ", C);
}
static bool isGNUSpecial(char C) { return strchr("\\\"\' ", C); }
void cl::TokenizeGNUCommandLine(StringRef Src, StringSaver &Saver,
SmallVectorImpl<const char *> &NewArgv,
@@ -495,7 +492,8 @@ void cl::TokenizeGNUCommandLine(StringRef Src, StringSaver &Saver,
NewArgv.push_back(nullptr);
++I;
}
if (I == E) break;
if (I == E)
break;
}
// Backslashes can escape backslashes, spaces, and other quotes. Otherwise
@@ -516,7 +514,8 @@ void cl::TokenizeGNUCommandLine(StringRef Src, StringSaver &Saver,
Token.push_back(Src[I]);
++I;
}
if (I == E) break;
if (I == E)
break;
continue;
}
@@ -691,7 +690,7 @@ bool cl::ExpandResponseFiles(StringSaver &Saver, TokenizerCallback Tokenizer,
bool AllExpanded = true;
// Don't cache Argv.size() because it can change.
for (unsigned I = 0; I != Argv.size(); ) {
for (unsigned I = 0; I != Argv.size();) {
const char *Arg = Argv[I];
// Check if it is an EOL marker
if (Arg == nullptr) {
@@ -728,12 +727,13 @@ bool cl::ExpandResponseFiles(StringSaver &Saver, TokenizerCallback Tokenizer,
}
namespace {
class StrDupSaver : public StringSaver {
std::vector<char*> Dups;
public:
class StrDupSaver : public StringSaver {
std::vector<char *> Dups;
public:
~StrDupSaver() {
for (std::vector<char *>::iterator I = Dups.begin(), E = Dups.end();
I != E; ++I) {
for (std::vector<char *>::iterator I = Dups.begin(), E = Dups.end(); I != E;
++I) {
char *Dup = *I;
free(Dup);
}
@@ -743,7 +743,7 @@ namespace {
Dups.push_back(Dup);
return Dup;
}
};
};
}
/// ParseEnvironmentOptions - An alternative entry point to the
@@ -775,16 +775,15 @@ void cl::ParseEnvironmentOptions(const char *progName, const char *envVar,
ParseCommandLineOptions(newArgc, &newArgv[0], Overview);
}
void cl::ParseCommandLineOptions(int argc, const char * const *argv,
void cl::ParseCommandLineOptions(int argc, const char *const *argv,
const char *Overview) {
// Process all registered options.
SmallVector<Option*, 4> PositionalOpts;
SmallVector<Option*, 4> SinkOpts;
StringMap<Option*> Opts;
SmallVector<Option *, 4> PositionalOpts;
SmallVector<Option *, 4> SinkOpts;
StringMap<Option *> Opts;
GetOptionInfo(PositionalOpts, SinkOpts, Opts);
assert((!Opts.empty() || !PositionalOpts.empty()) &&
"No options specified!");
assert((!Opts.empty() || !PositionalOpts.empty()) && "No options specified!");
// Expand response files.
SmallVector<const char *, 20> newArgv;
@@ -820,8 +819,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// Calculate how many positional values are _required_.
bool UnboundedFound = false;
for (size_t i = ConsumeAfterOpt ? 1 : 0, e = PositionalOpts.size();
i != e; ++i) {
for (size_t i = ConsumeAfterOpt ? 1 : 0, e = PositionalOpts.size(); i != e;
++i) {
Option *Opt = PositionalOpts[i];
if (RequiresValue(Opt))
++NumPositionalRequired;
@@ -829,8 +828,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// ConsumeAfter cannot be combined with "optional" positional options
// unless there is only one positional argument...
if (PositionalOpts.size() > 2)
ErrorParsing |=
Opt->error("error - this positional option will never be matched, "
ErrorParsing |= Opt->error(
"error - this positional option will never be matched, "
"because it does not Require a value, and a "
"cl::ConsumeAfter option is active!");
} else if (UnboundedFound && !Opt->ArgStr[0]) {
@@ -851,7 +850,7 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// PositionalVals - A vector of "positional" arguments we accumulate into
// the process at the end.
//
SmallVector<std::pair<StringRef,unsigned>, 4> PositionalVals;
SmallVector<std::pair<StringRef, unsigned>, 4> PositionalVals;
// If the program has named positional arguments, and the name has been run
// across, keep track of which positional argument was named. Otherwise put
@@ -890,14 +889,14 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
}
if (!PositionalOpts.empty()) {
PositionalVals.push_back(std::make_pair(argv[i],i));
PositionalVals.push_back(std::make_pair(argv[i], i));
// All of the positional arguments have been fulfulled, give the rest to
// the consume after option... if it's specified...
//
if (PositionalVals.size() >= NumPositionalRequired && ConsumeAfterOpt) {
for (++i; i < argc; ++i)
PositionalVals.push_back(std::make_pair(argv[i],i));
PositionalVals.push_back(std::make_pair(argv[i], i));
break; // Handle outside of the argument processing loop...
}
@@ -913,7 +912,7 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// If there is a positional argument eating options, check to see if this
// option is another positional argument. If so, treat it as an argument,
// otherwise feed it to the eating positional.
ArgName = argv[i]+1;
ArgName = argv[i] + 1;
// Eat leading dashes.
while (!ArgName.empty() && ArgName[0] == '-')
ArgName = ArgName.substr(1);
@@ -925,7 +924,7 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
}
} else { // We start with a '-', must be an argument.
ArgName = argv[i]+1;
ArgName = argv[i] + 1;
// Eat leading dashes.
while (!ArgName.empty() && ArgName[0] == '-')
ArgName = ArgName.substr(1);
@@ -934,31 +933,32 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// Check to see if this "option" is really a prefixed or grouped argument.
if (!Handler)
Handler = HandlePrefixedOrGroupedOption(ArgName, Value,
ErrorParsing, Opts);
Handler =
HandlePrefixedOrGroupedOption(ArgName, Value, ErrorParsing, Opts);
// Otherwise, look for the closest available option to report to the user
// in the upcoming error.
if (!Handler && SinkOpts.empty())
NearestHandler = LookupNearestOption(ArgName, Opts,
NearestHandlerString);
NearestHandler =
LookupNearestOption(ArgName, Opts, NearestHandlerString);
}
if (!Handler) {
if (SinkOpts.empty()) {
errs() << ProgramName << ": Unknown command line argument '"
<< argv[i] << "'. Try: '" << argv[0] << " -help'\n";
errs() << ProgramName << ": Unknown command line argument '" << argv[i]
<< "'. Try: '" << argv[0] << " -help'\n";
if (NearestHandler) {
// If we know a near match, report it as well.
errs() << ProgramName << ": Did you mean '-"
<< NearestHandlerString << "'?\n";
errs() << ProgramName << ": Did you mean '-" << NearestHandlerString
<< "'?\n";
}
ErrorParsing = true;
} else {
for (SmallVectorImpl<Option*>::iterator I = SinkOpts.begin(),
E = SinkOpts.end(); I != E ; ++I)
for (SmallVectorImpl<Option *>::iterator I = SinkOpts.begin(),
E = SinkOpts.end();
I != E; ++I)
(*I)->addOccurrence(i, "", argv[i]);
}
continue;
@@ -982,8 +982,7 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
ErrorParsing = true;
} else if (!HasUnlimitedPositionals &&
PositionalVals.size() > PositionalOpts.size()) {
errs() << ProgramName
<< ": Too many positional arguments specified!\n"
errs() << ProgramName << ": Too many positional arguments specified!\n"
<< "Can specify at most " << PositionalOpts.size()
<< " positional arguments: See: " << argv[0] << " -help\n";
ErrorParsing = true;
@@ -1004,7 +1003,7 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// option even _WANTS_ any more.
//
bool Done = PositionalOpts[i]->getNumOccurrencesFlag() == cl::Required;
while (NumVals-ValNo > NumPositionalRequired && !Done) {
while (NumVals - ValNo > NumPositionalRequired && !Done) {
switch (PositionalOpts[i]->getNumOccurrencesFlag()) {
case cl::Optional:
Done = true; // Optional arguments want _at most_ one value
@@ -1048,8 +1047,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// Handle over all of the rest of the arguments to the
// cl::ConsumeAfter command line option...
for (; ValNo != PositionalVals.size(); ++ValNo)
ErrorParsing |= ProvidePositionalOption(ConsumeAfterOpt,
PositionalVals[ValNo].first,
ErrorParsing |=
ProvidePositionalOption(ConsumeAfterOpt, PositionalVals[ValNo].first,
PositionalVals[ValNo].second);
}
@@ -1072,10 +1071,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
// Note that if ReadResponseFiles == true, this must be done before the
// memory allocated for the expanded command line is free()d below.
DEBUG(dbgs() << "Args: ";
for (int i = 0; i < argc; ++i)
dbgs() << argv[i] << ' ';
dbgs() << '\n';
);
for (int i = 0; i < argc; ++i) dbgs() << argv[i] << ' ';
dbgs() << '\n';);
// Free all of the memory allocated to the map. Command line options may only
// be processed once!
@@ -1084,7 +1081,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
MoreHelp->clear();
// If we had an error processing our arguments, don't let the program execute
if (ErrorParsing) exit(1);
if (ErrorParsing)
exit(1);
}
//===----------------------------------------------------------------------===//
@@ -1092,7 +1090,8 @@ void cl::ParseCommandLineOptions(int argc, const char * const *argv,
//
bool Option::error(const Twine &Message, StringRef ArgName) {
if (!ArgName.data()) ArgName = ArgStr;
if (!ArgName.data())
ArgName = ArgStr;
if (ArgName.empty())
errs() << HelpStr; // Be nice for positional arguments
else
@@ -1102,8 +1101,8 @@ bool Option::error(const Twine &Message, StringRef ArgName) {
return true;
}
bool Option::addOccurrence(unsigned pos, StringRef ArgName,
StringRef Value, bool MultiArg) {
bool Option::addOccurrence(unsigned pos, StringRef ArgName, StringRef Value,
bool MultiArg) {
if (!MultiArg)
NumOccurrences++; // Increment the number of times we have been seen
@@ -1118,18 +1117,19 @@ bool Option::addOccurrence(unsigned pos, StringRef ArgName,
// Fall through
case OneOrMore:
case ZeroOrMore:
case ConsumeAfter: break;
case ConsumeAfter:
break;
}
return handleOccurrence(pos, ArgName, Value);
}
// getValueStr - Get the value description string, using "DefaultMsg" if nothing
// has been specified yet.
//
static const char *getValueStr(const Option &O, const char *DefaultMsg) {
if (O.ValueStr[0] == 0) return DefaultMsg;
if (O.ValueStr[0] == 0)
return DefaultMsg;
return O.ValueStr;
}
@@ -1138,9 +1138,7 @@ static const char *getValueStr(const Option &O, const char *DefaultMsg) {
//
// Return the width of the option tag for printing...
size_t alias::getOptionWidth() const {
return std::strlen(ArgStr)+6;
}
size_t alias::getOptionWidth() const { return std::strlen(ArgStr) + 6; }
static void printHelpStr(StringRef HelpStr, size_t Indent,
size_t FirstLineIndentedBy) {
@@ -1169,7 +1167,7 @@ void alias::printOptionInfo(size_t GlobalWidth) const {
size_t basic_parser_impl::getOptionWidth(const Option &O) const {
size_t Len = std::strlen(O.ArgStr);
if (const char *ValName = getValueName())
Len += std::strlen(getValueStr(O, ValName))+3;
Len += std::strlen(getValueStr(O, ValName)) + 3;
return Len + 6;
}
@@ -1190,14 +1188,13 @@ void basic_parser_impl::printOptionInfo(const Option &O,
void basic_parser_impl::printOptionName(const Option &O,
size_t GlobalWidth) const {
outs() << " -" << O.ArgStr;
outs().indent(GlobalWidth-std::strlen(O.ArgStr));
outs().indent(GlobalWidth - std::strlen(O.ArgStr));
}
// parser<bool> implementation
//
bool parser<bool>::parse(Option &O, StringRef ArgName,
StringRef Arg, bool &Value) {
bool parser<bool>::parse(Option &O, StringRef ArgName, StringRef Arg,
bool &Value) {
if (Arg == "" || Arg == "true" || Arg == "TRUE" || Arg == "True" ||
Arg == "1") {
Value = true;
@@ -1214,8 +1211,8 @@ bool parser<bool>::parse(Option &O, StringRef ArgName,
// parser<boolOrDefault> implementation
//
bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName,
StringRef Arg, boolOrDefault &Value) {
bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName, StringRef Arg,
boolOrDefault &Value) {
if (Arg == "" || Arg == "true" || Arg == "TRUE" || Arg == "True" ||
Arg == "1") {
Value = BOU_TRUE;
@@ -1232,8 +1229,8 @@ bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName,
// parser<int> implementation
//
bool parser<int>::parse(Option &O, StringRef ArgName,
StringRef Arg, int &Value) {
bool parser<int>::parse(Option &O, StringRef ArgName, StringRef Arg,
int &Value) {
if (Arg.getAsInteger(0, Value))
return O.error("'" + Arg + "' value invalid for integer argument!");
return false;
@@ -1241,8 +1238,8 @@ bool parser<int>::parse(Option &O, StringRef ArgName,
// parser<unsigned> implementation
//
bool parser<unsigned>::parse(Option &O, StringRef ArgName,
StringRef Arg, unsigned &Value) {
bool parser<unsigned>::parse(Option &O, StringRef ArgName, StringRef Arg,
unsigned &Value) {
if (Arg.getAsInteger(0, Value))
return O.error("'" + Arg + "' value invalid for uint argument!");
@@ -1252,7 +1249,8 @@ bool parser<unsigned>::parse(Option &O, StringRef ArgName,
// parser<unsigned long long> implementation
//
bool parser<unsigned long long>::parse(Option &O, StringRef ArgName,
StringRef Arg, unsigned long long &Value){
StringRef Arg,
unsigned long long &Value) {
if (Arg.getAsInteger(0, Value))
return O.error("'" + Arg + "' value invalid for uint argument!");
@@ -1271,13 +1269,13 @@ static bool parseDouble(Option &O, StringRef Arg, double &Value) {
return false;
}
bool parser<double>::parse(Option &O, StringRef ArgName,
StringRef Arg, double &Val) {
bool parser<double>::parse(Option &O, StringRef ArgName, StringRef Arg,
double &Val) {
return parseDouble(O, Arg, Val);
}
bool parser<float>::parse(Option &O, StringRef ArgName,
StringRef Arg, float &Val) {
bool parser<float>::parse(Option &O, StringRef ArgName, StringRef Arg,
float &Val) {
double dVal;
if (parseDouble(O, Arg, dVal))
return true;
@@ -1285,8 +1283,6 @@ bool parser<float>::parse(Option &O, StringRef ArgName,
return false;
}
// generic_parser_base implementation
//
@@ -1303,18 +1299,17 @@ unsigned generic_parser_base::findOption(const char *Name) {
return e;
}
// Return the width of the option tag for printing...
size_t generic_parser_base::getOptionWidth(const Option &O) const {
if (O.hasArgStr()) {
size_t Size = std::strlen(O.ArgStr)+6;
size_t Size = std::strlen(O.ArgStr) + 6;
for (unsigned i = 0, e = getNumOptions(); i != e; ++i)
Size = std::max(Size, std::strlen(getOption(i))+8);
Size = std::max(Size, std::strlen(getOption(i)) + 8);
return Size;
} else {
size_t BaseSize = 0;
for (unsigned i = 0, e = getNumOptions(); i != e; ++i)
BaseSize = std::max(BaseSize, std::strlen(getOption(i))+8);
BaseSize = std::max(BaseSize, std::strlen(getOption(i)) + 8);
return BaseSize;
}
}
@@ -1329,7 +1324,7 @@ void generic_parser_base::printOptionInfo(const Option &O,
printHelpStr(O.HelpStr, GlobalWidth, std::strlen(O.ArgStr) + 6);
for (unsigned i = 0, e = getNumOptions(); i != e; ++i) {
size_t NumSpaces = GlobalWidth-strlen(getOption(i))-8;
size_t NumSpaces = GlobalWidth - strlen(getOption(i)) - 8;
outs() << " =" << getOption(i);
outs().indent(NumSpaces) << " - " << getDescription(i) << '\n';
}
@@ -1349,12 +1344,11 @@ static const size_t MaxOptWidth = 8; // arbitrary spacing for printOptionDiff
// printGenericOptionDiff - Print the value of this option and it's default.
//
// "Generic" options have each value mapped to a name.
void generic_parser_base::
printGenericOptionDiff(const Option &O, const GenericOptionValue &Value,
const GenericOptionValue &Default,
size_t GlobalWidth) const {
void generic_parser_base::printGenericOptionDiff(
const Option &O, const GenericOptionValue &Value,
const GenericOptionValue &Default, size_t GlobalWidth) const {
outs() << " -" << O.ArgStr;
outs().indent(GlobalWidth-std::strlen(O.ArgStr));
outs().indent(GlobalWidth - std::strlen(O.ArgStr));
unsigned NumOpts = getNumOptions();
for (unsigned i = 0; i != NumOpts; ++i) {
@@ -1380,8 +1374,7 @@ printGenericOptionDiff(const Option &O, const GenericOptionValue &Value,
// printOptionDiff - Specializations for printing basic value types.
//
#define PRINT_OPT_DIFF(T) \
void parser<T>:: \
printOptionDiff(const Option &O, T V, OptionValue<T> D, \
void parser<T>::printOptionDiff(const Option &O, T V, OptionValue<T> D, \
size_t GlobalWidth) const { \
printOptionName(O, GlobalWidth); \
std::string Str; \
@@ -1390,14 +1383,15 @@ printGenericOptionDiff(const Option &O, const GenericOptionValue &Value,
SS << V; \
} \
outs() << "= " << Str; \
size_t NumSpaces = MaxOptWidth > Str.size() ? MaxOptWidth - Str.size() : 0;\
size_t NumSpaces = \
MaxOptWidth > Str.size() ? MaxOptWidth - Str.size() : 0; \
outs().indent(NumSpaces) << " (default: "; \
if (D.hasValue()) \
outs() << D.getValue(); \
else \
outs() << "*no default*"; \
outs() << ")\n"; \
} \
}
PRINT_OPT_DIFF(bool)
PRINT_OPT_DIFF(boolOrDefault)
@@ -1408,8 +1402,8 @@ PRINT_OPT_DIFF(double)
PRINT_OPT_DIFF(float)
PRINT_OPT_DIFF(char)
void parser<std::string>::
printOptionDiff(const Option &O, StringRef V, OptionValue<std::string> D,
void parser<std::string>::printOptionDiff(const Option &O, StringRef V,
OptionValue<std::string> D,
size_t GlobalWidth) const {
printOptionName(O, GlobalWidth);
outs() << "= " << V;
@@ -1423,8 +1417,8 @@ printOptionDiff(const Option &O, StringRef V, OptionValue<std::string> D,
}
// Print a placeholder for options that don't yet support printOptionDiff().
void basic_parser_impl::
printOptionNoValue(const Option &O, size_t GlobalWidth) const {
void basic_parser_impl::printOptionNoValue(const Option &O,
size_t GlobalWidth) const {
printOptionName(O, GlobalWidth);
outs() << "= *cannot print option value*\n";
}
@@ -1434,19 +1428,18 @@ printOptionNoValue(const Option &O, size_t GlobalWidth) const {
//
static int OptNameCompare(const void *LHS, const void *RHS) {
typedef std::pair<const char *, Option*> pair_ty;
typedef std::pair<const char *, Option *> pair_ty;
return strcmp(((const pair_ty*)LHS)->first, ((const pair_ty*)RHS)->first);
return strcmp(((const pair_ty *)LHS)->first, ((const pair_ty *)RHS)->first);
}
// Copy Options into a vector so we can sort them as we like.
static void
sortOpts(StringMap<Option*> &OptMap,
SmallVectorImpl< std::pair<const char *, Option*> > &Opts,
static void sortOpts(StringMap<Option *> &OptMap,
SmallVectorImpl<std::pair<const char *, Option *>> &Opts,
bool ShowHidden) {
SmallPtrSet<Option*, 128> OptionSet; // Duplicate option detection.
SmallPtrSet<Option *, 128> OptionSet; // Duplicate option detection.
for (StringMap<Option*>::iterator I = OptMap.begin(), E = OptMap.end();
for (StringMap<Option *>::iterator I = OptMap.begin(), E = OptMap.end();
I != E; ++I) {
// Ignore really-hidden options.
if (I->second->getOptionHiddenFlag() == ReallyHidden)
@@ -1460,8 +1453,8 @@ sortOpts(StringMap<Option*> &OptMap,
if (!OptionSet.insert(I->second).second)
continue;
Opts.push_back(std::pair<const char *, Option*>(I->getKey().data(),
I->second));
Opts.push_back(
std::pair<const char *, Option *>(I->getKey().data(), I->second));
}
// Sort the options list alphabetically.
@@ -1473,7 +1466,8 @@ namespace {
class HelpPrinter {
protected:
const bool ShowHidden;
typedef SmallVector<std::pair<const char *, Option*>,128> StrOptionPairVector;
typedef SmallVector<std::pair<const char *, Option *>, 128>
StrOptionPairVector;
// Print the options. Opts is assumed to be alphabetically sorted.
virtual void printOptions(StrOptionPairVector &Opts, size_t MaxArgLen) {
for (size_t i = 0, e = Opts.size(); i != e; ++i)
@@ -1486,12 +1480,13 @@ public:
// Invoke the printer.
void operator=(bool Value) {
if (Value == false) return;
if (Value == false)
return;
// Get all the options.
SmallVector<Option*, 4> PositionalOpts;
SmallVector<Option*, 4> SinkOpts;
StringMap<Option*> OptMap;
SmallVector<Option *, 4> PositionalOpts;
SmallVector<Option *, 4> SinkOpts;
StringMap<Option *> OptMap;
GetOptionInfo(PositionalOpts, SinkOpts, OptMap);
StrOptionPairVector Opts;
@@ -1515,7 +1510,8 @@ public:
}
// Print the consume after option info if it exists...
if (CAOpt) outs() << " " << CAOpt->HelpStr;
if (CAOpt)
outs() << " " << CAOpt->HelpStr;
outs() << "\n\n";
@@ -1551,12 +1547,12 @@ public:
}
// Make sure we inherit our base class's operator=()
using HelpPrinter::operator= ;
using HelpPrinter::operator=;
protected:
void printOptions(StrOptionPairVector &Opts, size_t MaxArgLen) override {
std::vector<OptionCategory *> SortedCategories;
std::map<OptionCategory *, std::vector<Option *> > CategorizedOptions;
std::map<OptionCategory *, std::vector<Option *>> CategorizedOptions;
// Collect registered option categories into vector in preparation for
// sorting.
@@ -1633,9 +1629,9 @@ private:
public:
explicit HelpPrinterWrapper(HelpPrinter &UncategorizedPrinter,
CategorizedHelpPrinter &CategorizedPrinter) :
UncategorizedPrinter(UncategorizedPrinter),
CategorizedPrinter(CategorizedPrinter) { }
CategorizedHelpPrinter &CategorizedPrinter)
: UncategorizedPrinter(UncategorizedPrinter),
CategorizedPrinter(CategorizedPrinter) {}
// Invoke the printer.
void operator=(bool Value);
@@ -1650,7 +1646,6 @@ static HelpPrinter UncategorizedHiddenPrinter(true);
static CategorizedHelpPrinter CategorizedNormalPrinter(false);
static CategorizedHelpPrinter CategorizedHiddenPrinter(true);
// Declare HelpPrinter wrappers that will decide whether or not to invoke
// a categorizing help printer
static HelpPrinterWrapper WrappedNormalPrinter(UncategorizedNormalPrinter,
@@ -1661,38 +1656,36 @@ static HelpPrinterWrapper WrappedHiddenPrinter(UncategorizedHiddenPrinter,
// Define uncategorized help printers.
// -help-list is hidden by default because if Option categories are being used
// then -help behaves the same as -help-list.
static cl::opt<HelpPrinter, true, parser<bool> >
HLOp("help-list",
static cl::opt<HelpPrinter, true, parser<bool>> HLOp(
"help-list",
cl::desc("Display list of available options (-help-list-hidden for more)"),
cl::location(UncategorizedNormalPrinter), cl::Hidden, cl::ValueDisallowed);
static cl::opt<HelpPrinter, true, parser<bool> >
HLHOp("help-list-hidden",
cl::desc("Display list of all available options"),
cl::location(UncategorizedHiddenPrinter), cl::Hidden, cl::ValueDisallowed);
static cl::opt<HelpPrinter, true, parser<bool>>
HLHOp("help-list-hidden", cl::desc("Display list of all available options"),
cl::location(UncategorizedHiddenPrinter), cl::Hidden,
cl::ValueDisallowed);
// Define uncategorized/categorized help printers. These printers change their
// behaviour at runtime depending on whether one or more Option categories have
// been declared.
static cl::opt<HelpPrinterWrapper, true, parser<bool> >
HOp("help", cl::desc("Display available options (-help-hidden for more)"),
static cl::opt<HelpPrinterWrapper, true, parser<bool>>
HOp("help", cl::desc("Display available options (-help-hidden for more)"),
cl::location(WrappedNormalPrinter), cl::ValueDisallowed);
static cl::opt<HelpPrinterWrapper, true, parser<bool> >
HHOp("help-hidden", cl::desc("Display all available options"),
static cl::opt<HelpPrinterWrapper, true, parser<bool>>
HHOp("help-hidden", cl::desc("Display all available options"),
cl::location(WrappedHiddenPrinter), cl::Hidden, cl::ValueDisallowed);
static cl::opt<bool>
PrintOptions("print-options",
static cl::opt<bool> PrintOptions(
"print-options",
cl::desc("Print non-default options after command line parsing"),
cl::Hidden, cl::init(false));
static cl::opt<bool>
PrintAllOptions("print-all-options",
cl::desc("Print all option values after command line parsing"),
cl::Hidden, cl::init(false));
static cl::opt<bool> PrintAllOptions(
"print-all-options",
cl::desc("Print all option values after command line parsing"), cl::Hidden,
cl::init(false));
void HelpPrinterWrapper::operator=(bool Value) {
if (Value == false)
@@ -1707,23 +1700,23 @@ void HelpPrinterWrapper::operator=(bool Value) {
HLOp.setHiddenFlag(NotHidden);
CategorizedPrinter = true; // Invoke categorized printer
}
else
} else
UncategorizedPrinter = true; // Invoke uncategorized printer
}
// Print the value of each option.
void cl::PrintOptionValues() {
if (!PrintOptions && !PrintAllOptions) return;
if (!PrintOptions && !PrintAllOptions)
return;
// Get all the options.
SmallVector<Option*, 4> PositionalOpts;
SmallVector<Option*, 4> SinkOpts;
StringMap<Option*> OptMap;
SmallVector<Option *, 4> PositionalOpts;
SmallVector<Option *, 4> SinkOpts;
StringMap<Option *> OptMap;
GetOptionInfo(PositionalOpts, SinkOpts, OptMap);
SmallVector<std::pair<const char *, Option*>, 128> Opts;
sortOpts(OptMap, Opts, /*ShowHidden*/true);
SmallVector<std::pair<const char *, Option *>, 128> Opts;
sortOpts(OptMap, Opts, /*ShowHidden*/ true);
// Compute the maximum argument length...
size_t MaxArgLen = 0;
@@ -1736,7 +1729,7 @@ void cl::PrintOptionValues() {
static void (*OverrideVersionPrinter)() = nullptr;
static std::vector<void (*)()>* ExtraVersionPrinters = nullptr;
static std::vector<void (*)()> *ExtraVersionPrinters = nullptr;
namespace {
class VersionPrinter {
@@ -1758,7 +1751,8 @@ public:
OS << " with assertions";
#endif
std::string CPU = sys::getHostCPUName();
if (CPU == "generic") CPU = "(unknown)";
if (CPU == "generic")
CPU = "(unknown)";
OS << ".\n"
#if (ENABLE_TIMESTAMPS == 1)
<< " Built " << __DATE__ << " (" << __TIME__ << ").\n"
@@ -1767,7 +1761,8 @@ public:
<< " Host CPU: " << CPU << '\n';
}
void operator=(bool OptionWasSpecified) {
if (!OptionWasSpecified) return;
if (!OptionWasSpecified)
return;
if (OverrideVersionPrinter != nullptr) {
(*OverrideVersionPrinter)();
@@ -1790,12 +1785,11 @@ public:
};
} // End anonymous namespace
// Define the --version option that prints out the LLVM version for the tool
static VersionPrinter VersionPrinterInstance;
static cl::opt<VersionPrinter, true, parser<bool> >
VersOp("version", cl::desc("Display the version of this program"),
static cl::opt<VersionPrinter, true, parser<bool>>
VersOp("version", cl::desc("Display the version of this program"),
cl::location(VersionPrinterInstance), cl::ValueDisallowed);
// Utility function for printing the help message.
@@ -1818,13 +1812,9 @@ void cl::PrintHelpMessage(bool Hidden, bool Categorized) {
}
/// Utility function for printing version number.
void cl::PrintVersionMessage() {
VersionPrinterInstance.print();
}
void cl::PrintVersionMessage() { VersionPrinterInstance.print(); }
void cl::SetVersionPrinter(void (*func)()) {
OverrideVersionPrinter = func;
}
void cl::SetVersionPrinter(void (*func)()) { OverrideVersionPrinter = func; }
void cl::AddExtraVersionPrinter(void (*func)()) {
if (!ExtraVersionPrinters)
@@ -1833,11 +1823,10 @@ void cl::AddExtraVersionPrinter(void (*func)()) {
ExtraVersionPrinters->push_back(func);
}
void cl::getRegisteredOptions(StringMap<Option*> &Map)
{
void cl::getRegisteredOptions(StringMap<Option *> &Map) {
// Get all the options.
SmallVector<Option*, 4> PositionalOpts; //NOT USED
SmallVector<Option*, 4> SinkOpts; //NOT USED
SmallVector<Option *, 4> PositionalOpts; // NOT USED
SmallVector<Option *, 4> SinkOpts; // NOT USED
assert(Map.size() == 0 && "StringMap must be empty");
GetOptionInfo(PositionalOpts, SinkOpts, Map);
return;