From: Daniel Dunbar Date: Wed, 4 Mar 2009 20:53:00 +0000 (+0000) Subject: Driver: Tweak Option::accept interface. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3c9cc6bfe933766a8b4177a3f69841b2344ec48a;p=clang Driver: Tweak Option::accept interface. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66066 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Option.h b/include/clang/Driver/Option.h index dea44002db..47e249c57c 100644 --- a/include/clang/Driver/Option.h +++ b/include/clang/Driver/Option.h @@ -94,7 +94,7 @@ namespace driver { /// argument. /// /// May issue a missing argument error. - virtual Arg *accept(ArgList &Args, unsigned Index) const = 0; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const = 0; void dump() const; @@ -107,7 +107,7 @@ namespace driver { public: OptionGroup(const char *Name, const OptionGroup *Group); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::GroupClass; @@ -122,7 +122,7 @@ namespace driver { public: InputOption(); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::InputClass; @@ -135,7 +135,7 @@ namespace driver { public: UnknownOption(); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::UnknownClass; @@ -149,7 +149,7 @@ namespace driver { public: FlagOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::FlagClass; @@ -162,7 +162,7 @@ namespace driver { JoinedOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::JoinedClass; @@ -175,7 +175,7 @@ namespace driver { SeparateOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::SeparateClass; @@ -188,7 +188,7 @@ namespace driver { CommaJoinedOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::CommaJoinedClass; @@ -196,6 +196,8 @@ namespace driver { static bool classof(const CommaJoinedOption *) { return true; } }; + // FIXME: Fold MultiArgOption into SeparateOption? + /// MultiArgOption - An option which takes multiple arguments (these /// are always separate arguments). class MultiArgOption : public Option { @@ -207,7 +209,7 @@ namespace driver { unsigned getNumArgs() const { return NumArgs; } - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::MultiArgClass; @@ -222,7 +224,7 @@ namespace driver { JoinedOrSeparateOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::JoinedOrSeparateClass; @@ -237,7 +239,7 @@ namespace driver { JoinedAndSeparateOption(const char *Name, const OptionGroup *Group, const Option *Alias); - virtual Arg *accept(ArgList &Args, unsigned Index) const; + virtual Arg *accept(const ArgList &Args, unsigned &Index) const; static bool classof(const Option *O) { return O->getKind() == Option::JoinedAndSeparateClass; diff --git a/lib/Driver/Option.cpp b/lib/Driver/Option.cpp index ce31b8e694..cf5c3eb0fa 100644 --- a/lib/Driver/Option.cpp +++ b/lib/Driver/Option.cpp @@ -83,7 +83,7 @@ OptionGroup::OptionGroup(const char *Name, const OptionGroup *Group) : Option(Option::GroupClass, Name, Group, 0) { } -Arg *OptionGroup::accept(ArgList &Args, unsigned Index) const { +Arg *OptionGroup::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -92,7 +92,7 @@ InputOption::InputOption() : Option(Option::InputClass, "", 0, 0) { } -Arg *InputOption::accept(ArgList &Args, unsigned Index) const { +Arg *InputOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -101,7 +101,7 @@ UnknownOption::UnknownOption() : Option(Option::UnknownClass, "", 0, 0) { } -Arg *UnknownOption::accept(ArgList &Args, unsigned Index) const { +Arg *UnknownOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -111,7 +111,7 @@ FlagOption::FlagOption(const char *Name, const OptionGroup *Group, : Option(Option::FlagClass, Name, Group, Alias) { } -Arg *FlagOption::accept(ArgList &Args, unsigned Index) const { +Arg *FlagOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -121,7 +121,7 @@ JoinedOption::JoinedOption(const char *Name, const OptionGroup *Group, : Option(Option::JoinedClass, Name, Group, Alias) { } -Arg *JoinedOption::accept(ArgList &Args, unsigned Index) const { +Arg *JoinedOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -131,7 +131,7 @@ CommaJoinedOption::CommaJoinedOption(const char *Name, const OptionGroup *Group, : Option(Option::CommaJoinedClass, Name, Group, Alias) { } -Arg *CommaJoinedOption::accept(ArgList &Args, unsigned Index) const { +Arg *CommaJoinedOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -141,7 +141,7 @@ SeparateOption::SeparateOption(const char *Name, const OptionGroup *Group, : Option(Option::SeparateClass, Name, Group, Alias) { } -Arg *SeparateOption::accept(ArgList &Args, unsigned Index) const { +Arg *SeparateOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -151,7 +151,7 @@ MultiArgOption::MultiArgOption(const char *Name, const OptionGroup *Group, : Option(Option::MultiArgClass, Name, Group, Alias), NumArgs(_NumArgs) { } -Arg *MultiArgOption::accept(ArgList &Args, unsigned Index) const { +Arg *MultiArgOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -162,7 +162,7 @@ JoinedOrSeparateOption::JoinedOrSeparateOption(const char *Name, : Option(Option::JoinedOrSeparateClass, Name, Group, Alias) { } -Arg *JoinedOrSeparateOption::accept(ArgList &Args, unsigned Index) const { +Arg *JoinedOrSeparateOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; } @@ -173,7 +173,7 @@ JoinedAndSeparateOption::JoinedAndSeparateOption(const char *Name, : Option(Option::JoinedAndSeparateClass, Name, Group, Alias) { } -Arg *JoinedAndSeparateOption::accept(ArgList &Args, unsigned Index) const { +Arg *JoinedAndSeparateOption::accept(const ArgList &Args, unsigned &Index) const { assert(0 && "FIXME"); return 0; }