]> git.cworth.org Git - apitrace/blobdiff - specs/scripts/gltxt.py
Update downloads link.
[apitrace] / specs / scripts / gltxt.py
index 4ce92320114b1d52ba101739310a78baf7837b40..08b6a5774a77cf1a15f30353f30d1a658ec5f138 100755 (executable)
@@ -97,6 +97,9 @@ class TxtParser(LineParser):
     property_re = re.compile(r'^\w+:')
     prototype_re = re.compile(r'^(\w+)\((.*)\)$')
 
+    comment_start_re = re.compile(r'^/\*')
+    comment_end_re = re.compile(r'.*\*/$')
+
     def __init__(self, stream, prefix=''):
         LineParser.__init__(self, stream)
         self.prefix = prefix
@@ -133,9 +136,23 @@ class TxtParser(LineParser):
             name = line.strip()
             print '    # %s' % name
 
+    def skip_c_comments(self):
+        while not self.eof():
+            line = self.lookahead().strip()
+            mo = self.comment_start_re.match(line)
+            if not mo:
+                return
+            while not self.eof():
+                self.consume()
+                mo = self.comment_end_re.match(line)
+                if mo:
+                    return
+                line = self.lookahead().strip()
+
     def parse_procs(self):
         lines = []
         while not self.eof():
+            self.skip_c_comments()
             line = self.lookahead()
             if not line.strip():
                 self.consume()
@@ -177,7 +194,15 @@ class TxtParser(LineParser):
 
     def parse_arg(self):
         type = self.parse_type()
+        if self.tokens[0] == ')':
+            assert type == 'Void'
+            return ''
         name = self.tokens.pop(0)
+        if self.tokens[0] == '[':
+            self.tokens.pop(0)
+            n = int(self.tokens.pop(0))
+            assert self.tokens.pop(0) == ']'
+            type = 'Array(%s, %d)' % (type, n)
         return '(%s, "%s")' % (type, name)
 
     def parse_type(self):
@@ -187,7 +212,7 @@ class TxtParser(LineParser):
         if token == 'void':
             type = 'Void'
         else:
-            type = 'GL' + token
+            type = self.prefix.upper() + token
         while self.tokens[0] == '*':
             type = 'OpaquePointer(%s)' % type
             self.tokens.pop(0)