From 1cb4290b89d362d4daef7a32a19bd3b5c1c5a0cd Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 5 Jul 2011 16:56:25 +0000 Subject: [PATCH] StringRef'ize clang::drive::Option::getName(), from Zach Wheeler! llvm-svn: 134418 --- clang/include/clang/Driver/Option.h | 7 ++++--- clang/lib/Driver/Arg.cpp | 2 +- clang/lib/Driver/ArgList.cpp | 4 ++-- clang/lib/Driver/Option.cpp | 16 ++++++++-------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/clang/include/clang/Driver/Option.h b/clang/include/clang/Driver/Option.h index 9625465f48f4..9dfa4614009f 100644 --- a/clang/include/clang/Driver/Option.h +++ b/clang/include/clang/Driver/Option.h @@ -11,6 +11,7 @@ #define CLANG_DRIVER_OPTION_H_ #include "clang/Driver/OptSpecifier.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Support/Casting.h" using llvm::isa; using llvm::cast; @@ -64,7 +65,7 @@ namespace driver { OptSpecifier ID; /// The option name. - const char *Name; + llvm::StringRef Name; /// Group this option is a member of, if any. const OptionGroup *Group; @@ -103,7 +104,7 @@ namespace driver { unsigned getID() const { return ID.getID(); } OptionClass getKind() const { return Kind; } - const char *getName() const { return Name; } + llvm::StringRef getName() const { return Name; } const OptionGroup *getGroup() const { return Group; } const Option *getAlias() const { return Alias; } @@ -143,7 +144,7 @@ namespace driver { /// getRenderName - Return the name to use when rendering this /// option. - const char *getRenderName() const { + llvm::StringRef getRenderName() const { return getUnaliasedOption()->getName(); } diff --git a/clang/lib/Driver/Arg.cpp b/clang/lib/Driver/Arg.cpp index f1177cf97e28..39b7e5556494 100644 --- a/clang/lib/Driver/Arg.cpp +++ b/clang/lib/Driver/Arg.cpp @@ -113,7 +113,7 @@ void Arg::render(const ArgList &Args, ArgStringList &Output) const { break; case Option::RenderSeparateStyle: - Output.push_back(getOption().getName()); + Output.push_back(getOption().getName().data()); for (unsigned i = 0, e = getNumValues(); i != e; ++i) Output.push_back(getValue(Args, i)); break; diff --git a/clang/lib/Driver/ArgList.cpp b/clang/lib/Driver/ArgList.cpp index 596e2a7529cb..b8af9cc47e09 100644 --- a/clang/lib/Driver/ArgList.cpp +++ b/clang/lib/Driver/ArgList.cpp @@ -287,9 +287,9 @@ Arg *DerivedArgList::MakeSeparateArg(const Arg *BaseArg, const Option *Opt, Arg *DerivedArgList::MakeJoinedArg(const Arg *BaseArg, const Option *Opt, llvm::StringRef Value) const { - unsigned Index = BaseArgs.MakeIndex(Opt->getName() + Value.str()); + unsigned Index = BaseArgs.MakeIndex(Opt->getName().str() + Value.str()); Arg *A = new Arg(Opt, Index, - BaseArgs.getArgString(Index) + strlen(Opt->getName()), + BaseArgs.getArgString(Index) + Opt->getName().size(), BaseArg); SynthesizedArgs.push_back(A); return A; diff --git a/clang/lib/Driver/Option.cpp b/clang/lib/Driver/Option.cpp index a992cef3d239..90d21a3d0b17 100644 --- a/clang/lib/Driver/Option.cpp +++ b/clang/lib/Driver/Option.cpp @@ -144,7 +144,7 @@ FlagOption::FlagOption(OptSpecifier ID, const char *Name, Arg *FlagOption::accept(const ArgList &Args, unsigned &Index) const { // Matches iff this is an exact match. // FIXME: Avoid strlen. - if (strlen(getName()) != strlen(Args.getArgString(Index))) + if (getName().size() != strlen(Args.getArgString(Index))) return 0; return new Arg(getUnaliasedOption(), Index++); @@ -157,7 +157,7 @@ JoinedOption::JoinedOption(OptSpecifier ID, const char *Name, Arg *JoinedOption::accept(const ArgList &Args, unsigned &Index) const { // Always matches. - const char *Value = Args.getArgString(Index) + strlen(getName()); + const char *Value = Args.getArgString(Index) + getName().size(); return new Arg(getUnaliasedOption(), Index++, Value); } @@ -170,7 +170,7 @@ CommaJoinedOption::CommaJoinedOption(OptSpecifier ID, const char *Name, Arg *CommaJoinedOption::accept(const ArgList &Args, unsigned &Index) const { // Always matches. - const char *Str = Args.getArgString(Index) + strlen(getName()); + const char *Str = Args.getArgString(Index) + getName().size(); Arg *A = new Arg(getUnaliasedOption(), Index++); // Parse out the comma separated values. @@ -205,7 +205,7 @@ SeparateOption::SeparateOption(OptSpecifier ID, const char *Name, Arg *SeparateOption::accept(const ArgList &Args, unsigned &Index) const { // Matches iff this is an exact match. // FIXME: Avoid strlen. - if (strlen(getName()) != strlen(Args.getArgString(Index))) + if (getName().size() != strlen(Args.getArgString(Index))) return 0; Index += 2; @@ -225,7 +225,7 @@ MultiArgOption::MultiArgOption(OptSpecifier ID, const char *Name, Arg *MultiArgOption::accept(const ArgList &Args, unsigned &Index) const { // Matches iff this is an exact match. // FIXME: Avoid strlen. - if (strlen(getName()) != strlen(Args.getArgString(Index))) + if (getName().size() != strlen(Args.getArgString(Index))) return 0; Index += 1 + NumArgs; @@ -250,8 +250,8 @@ Arg *JoinedOrSeparateOption::accept(const ArgList &Args, unsigned &Index) const { // If this is not an exact match, it is a joined arg. // FIXME: Avoid strlen. - if (strlen(getName()) != strlen(Args.getArgString(Index))) { - const char *Value = Args.getArgString(Index) + strlen(getName()); + if (getName().size() != strlen(Args.getArgString(Index))) { + const char *Value = Args.getArgString(Index) + getName().size(); return new Arg(this, Index++, Value); } @@ -279,6 +279,6 @@ Arg *JoinedAndSeparateOption::accept(const ArgList &Args, return 0; return new Arg(getUnaliasedOption(), Index - 2, - Args.getArgString(Index-2)+strlen(getName()), + Args.getArgString(Index-2)+getName().size(), Args.getArgString(Index-1)); }