diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-06-09 22:31:08 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-06-09 22:31:08 +0000 |
commit | 532c1ec307b8689e95896a11ce5ae4661fa9e5d3 (patch) | |
tree | c1fd8b938ea54addf57b6abea6a3d83388a270f2 /lib/Driver/Arg.cpp | |
parent | e375c4a02ac6e18b166a067b8226e15a1ab009e7 (diff) |
Driver: Eliminate Arg subclasses, which are now unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105762 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Arg.cpp')
-rw-r--r-- | lib/Driver/Arg.cpp | 97 |
1 files changed, 23 insertions, 74 deletions
diff --git a/lib/Driver/Arg.cpp b/lib/Driver/Arg.cpp index 8220cf7ff9..83d0d26c25 100644 --- a/lib/Driver/Arg.cpp +++ b/lib/Driver/Arg.cpp @@ -16,12 +16,26 @@ using namespace clang::driver; -Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index, - const Arg *_BaseArg) - : Kind(_Kind), Opt(_Opt), BaseArg(_BaseArg), Index(_Index), +Arg::Arg(const Option *_Opt, unsigned _Index, const Arg *_BaseArg) + : Opt(_Opt), BaseArg(_BaseArg), Index(_Index), Claimed(false), OwnsValues(false) { } +Arg::Arg(const Option *_Opt, unsigned _Index, + const char *Value0, const Arg *_BaseArg) + : Opt(_Opt), BaseArg(_BaseArg), Index(_Index), + Claimed(false), OwnsValues(false) { + Values.push_back(Value0); +} + +Arg::Arg(const Option *_Opt, unsigned _Index, + const char *Value0, const char *Value1, const Arg *_BaseArg) + : Opt(_Opt), BaseArg(_BaseArg), Index(_Index), + Claimed(false), OwnsValues(false) { + Values.push_back(Value0); + Values.push_back(Value1); +} + Arg::~Arg() { if (OwnsValues) { for (unsigned i = 0, e = Values.size(); i != e; ++i) @@ -31,28 +45,19 @@ Arg::~Arg() { void Arg::dump() const { llvm::errs() << "<"; - switch (Kind) { - default: - assert(0 && "Invalid kind"); -#define P(N) case N: llvm::errs() << #N; break - P(FlagClass); - P(PositionalClass); - P(JoinedClass); - P(SeparateClass); - P(CommaJoinedClass); - P(JoinedAndSeparateClass); -#undef P - } llvm::errs() << " Opt:"; Opt->dump(); llvm::errs() << " Index:" << Index; - if (isa<CommaJoinedArg>(this) || isa<SeparateArg>(this)) - llvm::errs() << " NumValues:" << getNumValues(); + llvm::errs() << " Values: ["; + for (unsigned i = 0, e = Values.size(); i != e; ++i) { + if (i) llvm::errs() << ", "; + llvm::errs() << "'" << Values[i] << "'"; + } - llvm::errs() << ">\n"; + llvm::errs() << "]>\n"; } std::string Arg::getAsString(const ArgList &Args) const { @@ -114,59 +119,3 @@ void Arg::render(const ArgList &Args, ArgStringList &Output) const { break; } } - -FlagArg::FlagArg(const Option *Opt, unsigned Index, const Arg *BaseArg) - : Arg(FlagClass, Opt, Index, BaseArg) { -} - -PositionalArg::PositionalArg(const Option *Opt, unsigned Index, - const char *Value0, const Arg *BaseArg) - : Arg(PositionalClass, Opt, Index, BaseArg) { - getValues().push_back(Value0); -} - -JoinedArg::JoinedArg(const Option *Opt, unsigned Index, const char *Value0, - const Arg *BaseArg) - : Arg(JoinedClass, Opt, Index, BaseArg) { - getValues().push_back(Value0); -} - -CommaJoinedArg::CommaJoinedArg(const Option *Opt, unsigned Index, - const char *Str, const Arg *BaseArg) - : Arg(CommaJoinedClass, Opt, Index, BaseArg) { - const char *Prev = Str; - for (;; ++Str) { - char c = *Str; - - if (!c || c == ',') { - if (Prev != Str) { - char *Value = new char[Str - Prev + 1]; - memcpy(Value, Prev, Str - Prev); - Value[Str - Prev] = '\0'; - getValues().push_back(Value); - } - - if (!c) - break; - - Prev = Str + 1; - } - } - - setOwnsValues(true); -} - -SeparateArg::SeparateArg(const Option *Opt, unsigned Index, const char *Value0, - const Arg *BaseArg) - : Arg(SeparateClass, Opt, Index, BaseArg) { - getValues().push_back(Value0); -} - -JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index, - const char *Value0, - const char *Value1, - const Arg *BaseArg) - : Arg(JoinedAndSeparateClass, Opt, Index, BaseArg) { - getValues().push_back(Value0); - getValues().push_back(Value1); -} |