diff options
Diffstat (limited to 'clang/lib/Driver/ArgList.cpp')
| -rw-r--r-- | clang/lib/Driver/ArgList.cpp | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/clang/lib/Driver/ArgList.cpp b/clang/lib/Driver/ArgList.cpp index 95805b016b1..9ca710f5095 100644 --- a/clang/lib/Driver/ArgList.cpp +++ b/clang/lib/Driver/ArgList.cpp @@ -9,6 +9,7 @@  #include "clang/Driver/ArgList.h"  #include "clang/Driver/Arg.h" +#include "clang/Driver/DriverDiagnostic.h"  #include "clang/Driver/Option.h"  #include "llvm/ADT/SmallString.h" @@ -108,6 +109,32 @@ bool ArgList::hasFlag(OptSpecifier Pos, OptSpecifier Neg, bool Default) const {    return Default;  } +llvm::StringRef ArgList::getLastArgValue(OptSpecifier Id, +                                         llvm::StringRef Default) const { +  if (Arg *A = getLastArg(Id)) +    return A->getValue(*this); +  return Default; +} + +int ArgList::getLastArgIntValue(OptSpecifier Id, int Default, +                                Diagnostic &Diags) const { +  int Res = Default; + +  if (Arg *A = getLastArg(Id)) { +    if (llvm::StringRef(A->getValue(*this)).getAsInteger(10, Res)) +      Diags.Report(diag::err_drv_invalid_int_value) +        << A->getAsString(*this) << A->getValue(*this); +  } + +  return Res; +} + +std::vector<std::string> ArgList::getAllArgValues(OptSpecifier Id) const { +  llvm::SmallVector<const char *, 16> Values; +  AddAllArgValues(Values, Id); +  return std::vector<std::string>(Values.begin(), Values.end()); +} +  void ArgList::AddLastArg(ArgStringList &Output, OptSpecifier Id) const {    if (Arg *A = getLastArg(Id)) {      A->claim(); | 

