From: Jacek Caban jacek@codeweavers.com
--- dlls/winevulkan/make_vulkan | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index c7f422c3c64..493c9ad59ea 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -583,7 +583,7 @@ class VkFunction(object):
params = [] for param in command.findall("param"): - vk_param = VkParam.from_xml(param, types) + vk_param = VkParam.from_xml(param, types, params) params.append(vk_param)
return VkFunction(_type=func_type, name=func_name, params=params) @@ -1082,11 +1082,12 @@ class VkHandle(object):
class VkVariable(object): def __init__(self, const=False, type_info=None, type=None, name=None, pointer=None, array_len=None, - dyn_array_len=None, object_type=None, optional=False, returnedonly=False): + dyn_array_len=None, object_type=None, optional=False, returnedonly=False, parent=None): self.const = const self.type_info = type_info self.type = type self.name = name + self.parent = parent self.pointer = pointer self.array_len = array_len self.dyn_array_len = dyn_array_len @@ -1214,10 +1215,10 @@ class VkVariable(object): class VkMember(VkVariable): def __init__(self, const=False, struct_fwd_decl=False,_type=None, pointer=None, name=None, array_len=None, dyn_array_len=None, optional=False, values=None, object_type=None, bit_width=None, - returnedonly=False): + returnedonly=False, parent=None): VkVariable.__init__(self, const=const, type=_type, name=name, pointer=pointer, array_len=array_len, dyn_array_len=dyn_array_len, object_type=object_type, optional=optional, - returnedonly=returnedonly) + returnedonly=returnedonly, parent=parent) self.struct_fwd_decl = struct_fwd_decl self.values = values self.bit_width = bit_width @@ -1236,7 +1237,7 @@ class VkMember(VkVariable): self.name, self.array_len, self.dyn_array_len)
@staticmethod - def from_xml(member, returnedonly): + def from_xml(member, returnedonly, parent): """ Helper function for parsing a member tag within a struct or union. """
name_elem = member.find("name") @@ -1301,7 +1302,8 @@ class VkMember(VkVariable):
return VkMember(const=const, struct_fwd_decl=struct_fwd_decl, _type=member_type, pointer=pointer, name=name_elem.text, array_len=array_len, dyn_array_len=dyn_array_len, optional=optional, - values=values, object_type=object_type, bit_width=bit_width, returnedonly=returnedonly) + values=values, object_type=object_type, bit_width=bit_width, returnedonly=returnedonly, + parent=parent)
def copy(self, input, output, direction, conv, unwrap): """ Helper method for use by conversion logic to generate a C-code statement to copy this member. @@ -1450,10 +1452,11 @@ class VkMember(VkVariable): class VkParam(VkVariable): """ Helper class which describes a parameter to a function call. """
- def __init__(self, type_info, const=None, pointer=None, name=None, array_len=None, dyn_array_len=None, object_type=None, optional=False): + def __init__(self, type_info, const=None, pointer=None, name=None, parent=None, array_len=None, + dyn_array_len=None, object_type=None, optional=False): VkVariable.__init__(self, const=const, type_info=type_info, type=type_info["name"], name=name, pointer=pointer, array_len=array_len, dyn_array_len=dyn_array_len, - object_type=object_type, optional=optional) + object_type=object_type, optional=optional, parent=parent)
self._set_format_string()
@@ -1461,7 +1464,7 @@ class VkParam(VkVariable): return "{0} {1} {2} {3} {4} {5}".format(self.const, self.type, self.pointer, self.name, self.array_len, self.dyn_array_len)
@staticmethod - def from_xml(param, types): + def from_xml(param, types, parent): """ Helper function to create VkParam from xml. """
# Parameter parsing is slightly tricky. All the data is contained within @@ -1496,7 +1499,9 @@ class VkParam(VkVariable): if type_info is None: LOGGER.err("type info not found for: {0}".format(type_elem.text))
- return VkParam(type_info, const=const, pointer=pointer, name=name, array_len=array_len, dyn_array_len=dyn_array_len, object_type=object_type, optional=optional) + return VkParam(type_info, const=const, pointer=pointer, name=name, array_len=array_len, + dyn_array_len=dyn_array_len, object_type=object_type, optional=optional, + parent=parent)
def _set_format_string(self): """ Internal helper function to be used by constructor to set format string. """ @@ -1757,7 +1762,7 @@ class VkStruct(Sequence):
members = [] for member in struct.findall("member"): - vk_member = VkMember.from_xml(member, returnedonly) + vk_member = VkMember.from_xml(member, returnedonly, members) members.append(vk_member)
return VkStruct(name, members, returnedonly, structextends, union=union)