Add option for AddAllArgsTranslated to control whether output argument

should be joined or separate.

llvm-svn: 70101
This commit is contained in:
Daniel Dunbar 2009-04-26 01:07:52 +00:00
parent 7ec71da215
commit 3ba94d8778
2 changed files with 19 additions and 7 deletions

View File

@ -110,11 +110,15 @@ namespace driver {
void AddAllArgValues(ArgStringList &Output, options::ID Id0, void AddAllArgValues(ArgStringList &Output, options::ID Id0,
options::ID Id1) const; options::ID Id1) const;
// AddAllArgsTranslated - Render all the arguments matching the /// AddAllArgsTranslated - Render all the arguments matching the
// given ids, but forced to separate args and using the provided /// given ids, but forced to separate args and using the provided
// name instead of the first option value. /// name instead of the first option value.
///
/// \param Joined - If true, render the argument as joined with
/// the option specifier.
void AddAllArgsTranslated(ArgStringList &Output, options::ID Id0, void AddAllArgsTranslated(ArgStringList &Output, options::ID Id0,
const char *Translation) const; const char *Translation,
bool Joined = false) const;
/// ClaimAllArgs - Claim all arguments which match the given /// ClaimAllArgs - Claim all arguments which match the given
/// option id. /// option id.

View File

@ -124,14 +124,22 @@ void ArgList::AddAllArgValues(ArgStringList &Output, options::ID Id0,
} }
void ArgList::AddAllArgsTranslated(ArgStringList &Output, options::ID Id0, void ArgList::AddAllArgsTranslated(ArgStringList &Output, options::ID Id0,
const char *Translation) const { const char *Translation,
bool Joined) const {
// FIXME: Make fast. // FIXME: Make fast.
for (const_iterator it = begin(), ie = end(); it != ie; ++it) { for (const_iterator it = begin(), ie = end(); it != ie; ++it) {
const Arg *A = *it; const Arg *A = *it;
if (A->getOption().matches(Id0)) { if (A->getOption().matches(Id0)) {
A->claim(); A->claim();
Output.push_back(Translation);
Output.push_back(A->getValue(*this, 0)); if (Joined) {
std::string Value = Translation;
Value += A->getValue(*this, 0);
Output.push_back(MakeArgString(Value.c_str()));
} else {
Output.push_back(Translation);
Output.push_back(A->getValue(*this, 0));
}
} }
} }
} }