]> granicus.if.org Git - python/commitdiff
Added support for generating a single module from multiple .h files.
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 12 Dec 2000 22:21:11 +0000 (22:21 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 12 Dec 2000 22:21:11 +0000 (22:21 +0000)
Allow /* */ comments within function prototypes.

Tools/bgen/bgen/scantools.py

index e51c21af145cafbba578f0e3ffa5e7cc63ee12cf..4dce73c8e8cccf2482bcf2f9f8698c268d68fd95 100644 (file)
@@ -251,7 +251,7 @@ if missing: raise "Missing Types"
                self.asplit_pat = "^\(<type>.*[^a-zA-Z0-9_]\)\(<name>[a-zA-Z0-9_]+\)$"
                self.comment1_pat = "\(<rest>.*\)//.*"
                # note that the next pattern only removes comments that are wholly within one line
-               self.comment2_pat = "\(<rest>.*\)/\*.*\*/"
+               self.comment2_pat = "\(<rest1>.*\)/\*.*\*/\(<rest2>.*\)"
 
        def compilepatterns(self):
                for name in dir(self):
@@ -328,6 +328,16 @@ if missing: raise "Missing Types"
                return file
 
        def setinput(self, scan = sys.stdin):
+               if not type(scan) in (TupleType, ListType):
+                       scan = [scan]
+               self.allscaninputs = scan
+               self._nextinput()
+               
+       def _nextinput(self):
+               if not self.allscaninputs:
+                       return 0
+               scan = self.allscaninputs[0]
+               self.allscaninputs = self.allscaninputs[1:]
                self.closescan()
                if scan:
                        if type(scan) == StringType:
@@ -339,6 +349,7 @@ if missing: raise "Missing Types"
                        self.scanfile = file
                        self.scanmine = mine
                self.lineno = 0
+               return 1
 
        def openinput(self, filename):
                if not os.path.isabs(filename):
@@ -360,6 +371,8 @@ if missing: raise "Missing Types"
                        raise Error, "input file not set"
                self.line = self.scanfile.readline()
                if not self.line:
+                       if self._nextinput():
+                               return self.getline()
                        raise EOFError
                self.lineno = self.lineno + 1
                return self.line
@@ -388,8 +401,8 @@ if missing: raise "Missing Types"
                                except EOFError: break
                                if self.comment1.match(line) >= 0:
                                        line = self.comment1.group('rest')
-                               if self.comment2.match(line) >= 0:
-                                       line = self.comment2.group('rest')
+                               while self.comment2.match(line) >= 0:
+                                       line = self.comment2.group('rest1')+self.comment2.group('rest2')
                                if self.defsfile and self.sym.match(line) >= 0:
                                        self.dosymdef()
                                        continue
@@ -412,6 +425,10 @@ if missing: raise "Missing Types"
                raw = self.line
                while self.tail.search(raw) < 0:
                        line = self.getline()
+                       if self.comment1.match(line) >= 0:
+                               line = self.comment1.group('rest')
+                       while self.comment2.match(line) >= 0:
+                               line = self.comment2.group('rest1')+self.comment2.group('rest2')
                        raw = raw + line
                self.processrawspec(raw)