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(';')
if self.match(';'):
return
self.consume(':')
+ if self.lookahead() in ('public', 'protected'):
+ self.consume()
base = self.consume()
self.consume('{')
ret = self.parse_type()
- if self.match('__stdcall'):
+ if self.match('__stdcall', 'WINAPI'):
self.consume()
creator = 'StdFunction'
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)
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):
class Method(Function):
- def __init__(self, type, name, args):
+ def __init__(self, type, name, args, const=False):
Function.__init__(self, type, name, args, call = '__stdcall')
for index in range(len(self.args)):
self.args[index].index = index + 1
+ self.const = const
+
+ def prototype(self, name=None):
+ s = Function.prototype(self, name)
+ if self.const:
+ s += ' const'
+ return s
class String(Type):