diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-12 01:32:10 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-12 01:32:10 +0000 |
commit | d377522ba694e52128b419c98dabae7086ccf9c6 (patch) | |
tree | 223ab4052f3b59f5e0db61c6b6cb27afc5e04187 | |
parent | 35adb754b618655941d033328240d1799abcb48f (diff) |
Driver: Add default index (=0) for Arg::getValue and add Arg::claim
(will be used to emit "command line argument unused" diagnostics).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66756 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Driver/Arg.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/include/clang/Driver/Arg.h b/include/clang/Driver/Arg.h index ba72aac719..95086c10ac 100644 --- a/include/clang/Driver/Arg.h +++ b/include/clang/Driver/Arg.h @@ -53,6 +53,11 @@ namespace driver { /// ArgList. unsigned Index; + /// Flag indicating whether this argument was used to effect + /// compilation; used for generating "argument unused" + /// diagnostics. + bool Claimed; + protected: Arg(ArgClass Kind, const Option *Opt, unsigned Index); @@ -67,11 +72,17 @@ namespace driver { unsigned getIndex() const { return Index; } virtual unsigned getNumValues() const = 0; - virtual const char *getValue(const ArgList &Args, unsigned N) const = 0; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const = 0; /// render - Append the argument onto the given array as strings. virtual void render(const ArgList &Args, ArgStringList &Output) const = 0; + /// claim - Set the Arg claimed bit. + + // FIXME: We need to deal with derived arguments and set the bit + // in the original argument; not the derived one. + void claim() { Claimed = true; } + static bool classof(const Arg *) { return true; } void dump() const; @@ -85,7 +96,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return 0; } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::FlagClass; @@ -101,7 +112,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return 1; } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::PositionalClass; @@ -118,7 +129,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return 1; } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::JoinedClass; @@ -137,7 +148,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return NumValues; } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::SeparateClass; @@ -160,7 +171,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return Values.size(); } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::CommaJoinedClass; @@ -177,7 +188,7 @@ namespace driver { virtual void render(const ArgList &Args, ArgStringList &Output) const; virtual unsigned getNumValues() const { return 2; } - virtual const char *getValue(const ArgList &Args, unsigned N) const; + virtual const char *getValue(const ArgList &Args, unsigned N=0) const; static bool classof(const Arg *A) { return A->getKind() == Arg::JoinedAndSeparateClass; |