Chromium Code Reviews| Index: ppapi/generators/idl_c_proto.py |
| diff --git a/ppapi/generators/idl_c_proto.py b/ppapi/generators/idl_c_proto.py |
| index f3eab9da58dbfe137bc6a115c7bce8415429967d..ef6c89805a7e74cb5a3824ade3c496793eea824c 100644 |
| --- a/ppapi/generators/idl_c_proto.py |
| +++ b/ppapi/generators/idl_c_proto.py |
| @@ -338,7 +338,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)) |
| @@ -371,7 +371,8 @@ 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, |
| + func_attributes, is_cast): |
|
jvoung - send to chromium...
2011/11/16 01:45:22
changed func_attributes to ptr_prefix
changed is_c
|
| self.LogEnter('Compose: %s %s' % (rtype, name)) |
| arrayspec = ''.join(arrayspec) |
| name = '%s%s%s' % (prefix, name, arrayspec) |
| @@ -380,8 +381,13 @@ class CGen(object): |
| 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, |
| + func_attributes='', is_cast='')) |
| + if func_as_ptr: |
| + if is_cast: |
| + name = '(%s*)' % (func_attributes) |
| + else: |
| + name = '(%s*%s)' % (func_attributes, name) |
| out = '%s %s(%s)' % (rtype, name, ', '.join(params)) |
| self.LogExit('Exit Compose: %s' % out) |
| return out |
| @@ -393,15 +399,19 @@ class CGen(object): |
| # prefix - A prefix for the object's name |
| # func_as_ptr - Formats a function as a function pointer |
| # |
| - 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, |
| + func_attributes='', is_cast=False): |
| + self.LogEnter('GetSignature %s %s as func=%s attribs=%s' % |
| + (node, mode, func_as_ptr, func_attributes)) |
| 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, func_attributes, is_cast) |
| self.LogExit('Exit GetSignature: %s' % out) |
| return out |
| # Define a Typedef. |
| - def DefineTypedef(self, node, releases, prefix='', comment=False): |
| + def DefineTypedef(self, node, releases, prefix='', comment=False, |
| + func_attributes=''): |
| __pychecker__ = 'unusednames=comment' |
| release = releases[0] |
| out = 'typedef %s;\n' % self.GetSignature(node, release, 'return', |
| @@ -444,12 +454,22 @@ class CGen(object): |
| self.LogExit('Exit DefineMember') |
| return out |
| - def DefineStructInternals(self, node, release, suffix='', comment=True): |
| + def GetStructName(self, node, release, is_latest_release=False): |
|
jvoung - send to chromium...
2011/11/16 01:45:22
changed parameter to "include_version" to be more
|
| + suffix = '' |
| + if not is_latest_release: |
| + ver_num = node.GetVersion(release) |
| + suffix = ('_%s' % ver_num).replace('.', '_') |
| + return node.GetName() + suffix |
| + |
| + def DefineStructInternals(self, node, release, |
| + is_latest_release=False, comment=True): |
| out = '' |
| if node.GetProperty('union'): |
| - out += 'union %s%s {\n' % (node.GetName(), suffix) |
| + out += 'union %s {\n' % ( |
| + self.GetStructName(node, release, is_latest_release)) |
| else: |
| - out += 'struct %s%s {\n' % (node.GetName(), suffix) |
| + out += 'struct %s {\n' % ( |
| + self.GetStructName(node, release, is_latest_release)) |
| # Generate Member Functions |
| members = [] |
| @@ -469,13 +489,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], |
| + is_latest_release=True, 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, |
| + is_latest_release=False, |
| comment=False) |
| self.LogExit('Exit DefineStruct') |