aboutsummaryrefslogtreecommitdiff
path: root/tools/ccc/ccclib/Arguments.py
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-01-07 18:54:26 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-01-07 18:54:26 +0000
commit39cbfaadbcd0008492fc1ea967b6cc1301a938a1 (patch)
tree2e938550e01a7ac022056faab1543a7db53065a9 /tools/ccc/ccclib/Arguments.py
parentdb439909091c5828ec229df6b31328e1fd5f67f1 (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.py40
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 '@'