Commit b8c68634 authored by Jack Jansen's avatar Jack Jansen

Added support for generating a single module from multiple .h files.

Allow /* */ comments within function prototypes.
parent 5f884c05
...@@ -251,7 +251,7 @@ if missing: raise "Missing Types" ...@@ -251,7 +251,7 @@ if missing: raise "Missing Types"
self.asplit_pat = "^\(<type>.*[^a-zA-Z0-9_]\)\(<name>[a-zA-Z0-9_]+\)$" self.asplit_pat = "^\(<type>.*[^a-zA-Z0-9_]\)\(<name>[a-zA-Z0-9_]+\)$"
self.comment1_pat = "\(<rest>.*\)//.*" self.comment1_pat = "\(<rest>.*\)//.*"
# note that the next pattern only removes comments that are wholly within one line # 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): def compilepatterns(self):
for name in dir(self): for name in dir(self):
...@@ -328,6 +328,16 @@ if missing: raise "Missing Types" ...@@ -328,6 +328,16 @@ if missing: raise "Missing Types"
return file return file
def setinput(self, scan = sys.stdin): 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() self.closescan()
if scan: if scan:
if type(scan) == StringType: if type(scan) == StringType:
...@@ -339,6 +349,7 @@ if missing: raise "Missing Types" ...@@ -339,6 +349,7 @@ if missing: raise "Missing Types"
self.scanfile = file self.scanfile = file
self.scanmine = mine self.scanmine = mine
self.lineno = 0 self.lineno = 0
return 1
def openinput(self, filename): def openinput(self, filename):
if not os.path.isabs(filename): if not os.path.isabs(filename):
...@@ -360,6 +371,8 @@ if missing: raise "Missing Types" ...@@ -360,6 +371,8 @@ if missing: raise "Missing Types"
raise Error, "input file not set" raise Error, "input file not set"
self.line = self.scanfile.readline() self.line = self.scanfile.readline()
if not self.line: if not self.line:
if self._nextinput():
return self.getline()
raise EOFError raise EOFError
self.lineno = self.lineno + 1 self.lineno = self.lineno + 1
return self.line return self.line
...@@ -388,8 +401,8 @@ if missing: raise "Missing Types" ...@@ -388,8 +401,8 @@ if missing: raise "Missing Types"
except EOFError: break except EOFError: break
if self.comment1.match(line) >= 0: if self.comment1.match(line) >= 0:
line = self.comment1.group('rest') line = self.comment1.group('rest')
if self.comment2.match(line) >= 0: while self.comment2.match(line) >= 0:
line = self.comment2.group('rest') line = self.comment2.group('rest1')+self.comment2.group('rest2')
if self.defsfile and self.sym.match(line) >= 0: if self.defsfile and self.sym.match(line) >= 0:
self.dosymdef() self.dosymdef()
continue continue
...@@ -412,6 +425,10 @@ if missing: raise "Missing Types" ...@@ -412,6 +425,10 @@ if missing: raise "Missing Types"
raw = self.line raw = self.line
while self.tail.search(raw) < 0: while self.tail.search(raw) < 0:
line = self.getline() 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 raw = raw + line
self.processrawspec(raw) self.processrawspec(raw)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment