diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-01-07 18:54:26 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-01-07 18:54:26 +0000 |
commit | 39cbfaadbcd0008492fc1ea967b6cc1301a938a1 (patch) | |
tree | 2e938550e01a7ac022056faab1543a7db53065a9 /tools/ccc/ccclib/Arguments.py | |
parent | db439909091c5828ec229df6b31328e1fd5f67f1 (diff) |
ccc: Make proper synthetic arguments in places we have to construct
"fake" options, allowing Tools to be oblivious to whether an argument
is real or synthetic. This kills off DerivedArg & a number of FIXMEs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61871 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/ccc/ccclib/Arguments.py')
-rw-r--r-- | tools/ccc/ccclib/Arguments.py | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/tools/ccc/ccclib/Arguments.py b/tools/ccc/ccclib/Arguments.py index 06367890ab..934cc72667 100644 --- a/tools/ccc/ccclib/Arguments.py +++ b/tools/ccc/ccclib/Arguments.py @@ -189,23 +189,6 @@ class JoinedAndSeparateValuesArg(Arg): return ([self.opt.name + self.getJoinedValue(args)] + [self.getSeparateValue(args)]) -class DerivedArg(ValueArg): - """DerivedArg - A synthesized argument which does not correspend - to an item in the argument vector.""" - - def __init__(self, value): - # FIXME: The UnknownOption() here is a total hack so we can - # rely on arg.opt not being nil. Ok for now since DerivedArg - # is dying. - super(DerivedArg, self).__init__(-1, UnknownOption()) - self.value = value - - def getValue(self, args): - return self.value - - def render(self, args): - return [self.value] - ### class InputIndex: @@ -220,7 +203,8 @@ class ArgList: """ArgList - Collect an input argument vector along with a set of parsed Args and supporting information.""" - def __init__(self, argv): + def __init__(self, parser, argv): + self.parser = parser self.argv = list(argv) self.syntheticArgv = [] self.lastArgs = {} @@ -240,11 +224,27 @@ class ArgList: raise RuntimeError,'Unknown source ID for index.' - def getSyntheticIndex(self, *strings): + def makeIndex(self, *strings): pos = len(self.syntheticArgv) self.syntheticArgv.extend(strings) return InputIndex(1, pos) + def makeFlagArg(self, option): + return Arg(self.makeIndex(option.name), + option) + + def makeInputArg(self, string): + return PositionalArg(self.makeIndex(string), + self.parser.inputOption) + + def makeUnknownArg(self, string): + return PositionalArg(self.makeIndex(string), + self.parser.unknownOption) + + def makeSeparateArg(self, string, option): + return SeparateValueArg(self.makeIndex(option.name, string), + option) + # Support use as a simple arg list. def __iter__(self): @@ -483,7 +483,7 @@ class OptionParser: iargs = enumerate(argv) it = iter(iargs) - args = ArgList(argv) + args = ArgList(self, argv) for pos,a in it: i = InputIndex(0, pos) # FIXME: Handle '@' |