| Index: ppapi/generators/idl_c_proto.py
|
| diff --git a/ppapi/generators/idl_c_proto.py b/ppapi/generators/idl_c_proto.py
|
| index 584cfaa813871311e8502976b92ef7a58a5e5f21..861f86f2efbaa8e07d062f40255a4727ceb6f1b0 100644
|
| --- a/ppapi/generators/idl_c_proto.py
|
| +++ b/ppapi/generators/idl_c_proto.py
|
| @@ -342,7 +342,7 @@ class CGen(object):
|
| # rtype - The store or return type of the object.
|
| # name - The name of the object.
|
| # arrays - A list of array dimensions as [] or [<fixed_num>].
|
| - # args - None of not a function, otherwise a list of parameters.
|
| + # args - None if not a function, otherwise a list of parameters.
|
| #
|
| def GetComponents(self, node, release, mode):
|
| self.LogEnter('GetComponents mode %s for %s %s' % (mode, node, release))
|
| @@ -375,17 +375,23 @@ class CGen(object):
|
| return (rtype, name, arrayspec, callspec)
|
|
|
|
|
| - def Compose(self, rtype, name, arrayspec, callspec, prefix, func_as_ptr):
|
| + def Compose(self, rtype, name, arrayspec, callspec, prefix, func_as_ptr,
|
| + ptr_prefix, include_name):
|
| self.LogEnter('Compose: %s %s' % (rtype, name))
|
| arrayspec = ''.join(arrayspec)
|
| - name = '%s%s%s' % (prefix, name, arrayspec)
|
| + if not include_name:
|
| + name = prefix + arrayspec
|
| + else:
|
| + name = prefix + name + arrayspec
|
| if callspec is None:
|
| out = '%s %s' % (rtype, name)
|
| else:
|
| params = []
|
| for ptype, pname, parray, pspec in callspec:
|
| - params.append(self.Compose(ptype, pname, parray, pspec, '', True))
|
| - if func_as_ptr: name = '(*%s)' % name
|
| + params.append(self.Compose(ptype, pname, parray, pspec, '', True,
|
| + ptr_prefix='', include_name=True))
|
| + if func_as_ptr:
|
| + name = '(%s*%s)' % (ptr_prefix, name)
|
| out = '%s %s(%s)' % (rtype, name, ', '.join(params))
|
| self.LogExit('Exit Compose: %s' % out)
|
| return out
|
| @@ -396,11 +402,18 @@ class CGen(object):
|
| # Returns the 'C' style signature of the object
|
| # prefix - A prefix for the object's name
|
| # func_as_ptr - Formats a function as a function pointer
|
| + # ptr_prefix - A prefix that goes before the "*" for a function pointer
|
| + # include_name - If true, include member name in the signature.
|
| + # If false, leave it out. In any case, prefix and ptr_prefix
|
| + # are always included.
|
| #
|
| - def GetSignature(self, node, release, mode, prefix='', func_as_ptr=True):
|
| - self.LogEnter('GetSignature %s %s as func=%s' % (node, mode, func_as_ptr))
|
| + def GetSignature(self, node, release, mode, prefix='', func_as_ptr=True,
|
| + ptr_prefix='', include_name=True):
|
| + self.LogEnter('GetSignature %s %s as func=%s' %
|
| + (node, mode, func_as_ptr))
|
| rtype, name, arrayspec, callspec = self.GetComponents(node, release, mode)
|
| - out = self.Compose(rtype, name, arrayspec, callspec, prefix, func_as_ptr)
|
| + out = self.Compose(rtype, name, arrayspec, callspec, prefix,
|
| + func_as_ptr, ptr_prefix, include_name)
|
| self.LogExit('Exit GetSignature: %s' % out)
|
| return out
|
|
|
| @@ -451,12 +464,22 @@ class CGen(object):
|
| self.LogExit('Exit DefineMember')
|
| return out
|
|
|
| - def DefineStructInternals(self, node, release, suffix='', comment=True):
|
| + def GetStructName(self, node, release, include_version=False):
|
| + suffix = ''
|
| + if include_version:
|
| + ver_num = node.GetVersion(release)
|
| + suffix = ('_%s' % ver_num).replace('.', '_')
|
| + return node.GetName() + suffix
|
| +
|
| + def DefineStructInternals(self, node, release,
|
| + include_version=False, comment=True):
|
| out = ''
|
| if node.GetProperty('union'):
|
| - out += 'union %s%s {\n' % (node.GetName(), suffix)
|
| + out += 'union %s {\n' % (
|
| + self.GetStructName(node, release, include_version))
|
| else:
|
| - out += 'struct %s%s {\n' % (node.GetName(), suffix)
|
| + out += 'struct %s {\n' % (
|
| + self.GetStructName(node, release, include_version))
|
|
|
| # Generate Member Functions
|
| members = []
|
| @@ -476,13 +499,13 @@ class CGen(object):
|
| build_list = node.GetUniqueReleases(releases)
|
|
|
| # Build the most recent one with comments
|
| - out = self.DefineStructInternals(node, build_list[-1], comment=True)
|
| + out = self.DefineStructInternals(node, build_list[-1],
|
| + include_version=False, comment=True)
|
|
|
| # Build the rest without comments and with the version number appended
|
| for rel in build_list[0:-1]:
|
| - ver_num = node.GetVersion(rel)
|
| - ver = ("_%s" % ver_num).replace('.', '_')
|
| - out += '\n' + self.DefineStructInternals(node, rel, suffix=ver,
|
| + out += '\n' + self.DefineStructInternals(node, rel,
|
| + include_version=True,
|
| comment=False)
|
|
|
| self.LogExit('Exit DefineStruct')
|
|
|