diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-17 17:51:18 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-17 17:51:18 +0000 |
commit | 3494bb1e01eb5f90d4dc9c91b912daf945da4ff5 (patch) | |
tree | 4f9dbe3288e259a2ed554bddb6670f5768f4d6dc /lib/Driver/ArgList.cpp | |
parent | d7ee349f1dd84e023d09a35fb4d40c15888a55ac (diff) |
Add ArgList::MakeArgString and make ArgList::Make* const.
- Slightly strange, but the idea is that the ArgList data structure
is primarily a list of arguments; we want to allow clients to still
add argument strings to an ArgList to avoid worrying about string
lifetimes (or unnecessary string copying).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67086 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/ArgList.cpp')
-rw-r--r-- | lib/Driver/ArgList.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/Driver/ArgList.cpp b/lib/Driver/ArgList.cpp index d32d9f2185..66fcb70885 100644 --- a/lib/Driver/ArgList.cpp +++ b/lib/Driver/ArgList.cpp @@ -44,7 +44,7 @@ Arg *ArgList::getLastArg(options::ID Id, bool Claim) const { return 0; } -unsigned ArgList::MakeIndex(const char *String0) { +unsigned ArgList::MakeIndex(const char *String0) const { unsigned Index = ArgStrings.size(); // Tuck away so we have a reliable const char *. @@ -54,7 +54,7 @@ unsigned ArgList::MakeIndex(const char *String0) { return Index; } -unsigned ArgList::MakeIndex(const char *String0, const char *String1) { +unsigned ArgList::MakeIndex(const char *String0, const char *String1) const { unsigned Index0 = MakeIndex(String0); unsigned Index1 = MakeIndex(String1); assert(Index0 + 1 == Index1 && "Unexpected non-consecutive indices!"); @@ -62,19 +62,23 @@ unsigned ArgList::MakeIndex(const char *String0, const char *String1) { return Index0; } -Arg *ArgList::MakeFlagArg(const Option *Opt) { +const char *ArgList::MakeArgString(const char *Str) const { + return getArgString(MakeIndex(Str)); +} + +Arg *ArgList::MakeFlagArg(const Option *Opt) const { return new FlagArg(Opt, MakeIndex(Opt->getName())); } -Arg *ArgList::MakePositionalArg(const Option *Opt, const char *Value) { +Arg *ArgList::MakePositionalArg(const Option *Opt, const char *Value) const { return new PositionalArg(Opt, MakeIndex(Value)); } -Arg *ArgList::MakeSeparateArg(const Option *Opt, const char *Value) { +Arg *ArgList::MakeSeparateArg(const Option *Opt, const char *Value) const { return new SeparateArg(Opt, MakeIndex(Opt->getName(), Value), 1); } -Arg *ArgList::MakeJoinedArg(const Option *Opt, const char *Value) { +Arg *ArgList::MakeJoinedArg(const Option *Opt, const char *Value) const { std::string Joined(Opt->getName()); Joined += Value; return new JoinedArg(Opt, MakeIndex(Joined.c_str())); |