]> git.cworth.org Git - apitrace/blobdiff - specs/scripts/cdecl.py
Merge branch 'master' into d2d
[apitrace] / specs / scripts / cdecl.py
index d6ee05850df2159ff0e7b2246ed9be3e650c8220..940ce4424a6c948390be1f8647c704a923dba461 100755 (executable)
@@ -189,6 +189,11 @@ class DeclParser:
         value = 0
         while self.lookahead() != '}':
             type, name = self.parse_named_type()
+
+            if self.match(':'):
+                self.consume()
+                self.consume()
+
             if self.match(','):
                 self.consume(',')
             self.consume(';')
@@ -205,6 +210,8 @@ class DeclParser:
         if self.match(';'):
             return
         self.consume(':')
+        if self.lookahead() in ('public', 'protected'):
+            self.consume()
         base = self.consume()
         self.consume('{')
 
@@ -225,7 +232,7 @@ class DeclParser:
 
         ret = self.parse_type()
 
-        if self.match('__stdcall'):
+        if self.match('__stdcall', 'WINAPI'):
             self.consume()
             creator = 'StdFunction'
 
@@ -244,7 +251,10 @@ class DeclParser:
             args.append(arg)
             if self.match(','):
                 self.consume()
-        self.consume() == ')'
+        self.consume(')')
+        if self.lookahead() == 'const':
+            self.consume()
+            extra = ', const=True' + extra
         
         print '    %s(%s, "%s", [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
 
@@ -256,6 +266,12 @@ class DeclParser:
         arg = '(%s, "%s")' % (type, name)
         if 'out' in tags:
             arg = 'Out' + arg
+
+        if self.match('='):
+            self.consume()
+            while not self.match(',', ')'):
+                self.consume()
+
         return arg
 
     def parse_tags(self):