Index: ppapi/generators/idl_c_proto.py |
=================================================================== |
--- ppapi/generators/idl_c_proto.py (revision 163185) |
+++ ppapi/generators/idl_c_proto.py (working copy) |
@@ -95,6 +95,13 @@ |
'store': '%s', |
'return': '%s' |
}, |
+ 'Interface': { |
+ 'in': 'const %s*', |
+ 'inout': '%s*', |
+ 'out': '%s**', |
+ 'return': '%s*', |
+ 'store': '%s*' |
+ }, |
'Struct': { |
'in': 'const %s*', |
'inout': '%s*', |
@@ -243,6 +250,7 @@ |
typeref = node |
if typeref is None: |
+ node.Error('No type at release %s.' % release) |
raise CGenError('No type for %s' % node) |
# If the type is a (BuiltIn) Type then return it's name |
@@ -252,8 +260,13 @@ |
if name is None: name = typeref.GetName() |
name = '%s%s' % (prefix, name) |
+ # For Interfaces, use the name + version |
+ elif typeref.IsA('Interface'): |
+ rel = typeref.first_release[release] |
+ name = 'struct %s%s' % (prefix, self.GetStructName(typeref, rel, True)) |
+ |
# For structures, preceed with 'struct' or 'union' as appropriate |
- elif typeref.IsA('Interface', 'Struct'): |
+ elif typeref.IsA('Struct'): |
if typeref.GetProperty('union'): |
name = 'union %s%s' % (prefix, typeref.GetName()) |
else: |
@@ -427,8 +440,14 @@ |
# Define a Typedef. |
def DefineTypedef(self, node, releases, prefix='', comment=False): |
__pychecker__ = 'unusednames=comment' |
- release = releases[0] |
- out = 'typedef %s;\n' % self.GetSignature(node, release, 'return', |
+ build_list = node.GetUniqueReleases(releases) |
+ |
+ # TODO(noelallen) : Bug 157017 finish multiversion support |
+ if len(build_list) != 1: |
+ node.Error('Can not support multiple versions of node.') |
+ assert len(build_list) == 1 |
+ |
+ out = 'typedef %s;\n' % self.GetSignature(node, build_list[0], 'return', |
prefix, True) |
self.Log('DefineTypedef: %s' % out) |
return out |
@@ -440,6 +459,7 @@ |
name = '%s%s' % (prefix, node.GetName()) |
notypedef = node.GetProperty('notypedef') |
unnamed = node.GetProperty('unnamed') |
+ |
if unnamed: |
out = 'enum {' |
elif notypedef: |
@@ -505,6 +525,13 @@ |
out = '' |
build_list = node.GetUniqueReleases(releases) |
+ # TODO(noelallen) : Bug 157017 finish multiversion support |
+ if node.IsA('Struct'): |
+ if len(build_list) != 1: |
+ node.Error('Can not support multiple versions of node.') |
+ assert len(build_list) == 1 |
+ |
+ |
if node.IsA('Interface'): |
# Build the most recent one versioned, with comments |
out = self.DefineStructInternals(node, build_list[-1], |
@@ -654,13 +681,13 @@ |
if GetOption('test'): |
return TestFiles(filenames) |
ast = ParseFiles(filenames) |
+ cgen = CGen() |
for f in ast.GetListOf('File'): |
if f.GetProperty('ERRORS') > 0: |
print 'Skipping %s' % f.GetName() |
continue |
- print DefineDepends(node) |
for node in f.GetChildren()[2:]: |
- print Define(node, comment=True, prefix='tst_') |
+ print cgen.Define(node, comment=True, prefix='tst_') |
if __name__ == '__main__': |