]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
added listing of argument types encountered
authorGuido van Rossum <guido@python.org>
Thu, 23 Mar 1995 10:41:10 +0000 (10:41 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 23 Mar 1995 10:41:10 +0000 (10:41 +0000)
Tools/bgen/bgen/scantools.py

index 4a6fd7cb2416793313958520693b08c4b8579a28..ff76d6c9dc1b207fd754dba73138ecca96ca17c0 100644 (file)
@@ -44,10 +44,27 @@ class Scanner:
                self.initpatterns()
                self.compilepatterns()
                self.initosspecifics()
+               self.initusedtypes()
                if output:
                        self.setoutput(output, defsoutput)
                if input:
                        self.setinput(input)
+       
+       def initusedtypes(self):
+               self.usedtypes = {}
+       
+       def typeused(self, type, mode):
+               if not self.usedtypes.has_key(type):
+                       self.usedtypes[type] = {}
+               self.usedtypes[type][mode] = None
+       
+       def reportusedtypes(self):
+               types = self.usedtypes.keys()
+               types.sort()
+               for type in types:
+                       modes = self.usedtypes[type].keys()
+                       modes.sort()
+                       print type, string.join(modes)
 
        def initsilent(self):
                self.silent = 0
@@ -330,6 +347,7 @@ class Scanner:
                                        continue
                except EOFError:
                        self.error("Uncaught EOF error")
+               self.reportusedtypes()
 
        def dosymdef(self):
                name, defn = self.sym.group('name', 'defn')
@@ -448,10 +466,12 @@ class Scanner:
                return new
 
        def generate(self, type, name, arglist):
+               self.typeused(type, 'return')
                classname, listname = self.destination(type, name, arglist)
                if not self.specfile: return
                self.specfile.write("f = %s(%s, %s,\n" % (classname, type, `name`))
                for atype, aname, amode in arglist:
+                       self.typeused(atype, amode)
                        self.specfile.write("    (%s, %s, %s),\n" %
                                            (atype, `aname`, amode))
                self.specfile.write(")\n")