Signed-off-by: Georg Lehmann dadschoorse@gmail.com --- dlls/winevulkan/make_vulkan | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 1b39cbb831..f4d223daad 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -805,11 +805,12 @@ class VkFunction(object):
class VkFunctionPointer(object): - def __init__(self, _type, name, members): + def __init__(self, _type, name, members, forward_decls): self.name = name self.members = members self.type = _type self.required = False + self.forward_decls = forward_decls
@staticmethod def from_xml(funcpointer): @@ -846,10 +847,19 @@ class VkFunctionPointer(object):
_type = funcpointer.text name = funcpointer.find("name").text - return VkFunctionPointer(_type, name, members) + if "requires" in funcpointer.attrib: + forward_decls = funcpointer.attrib.get("requires").split(",") + else: + forward_decls = [] + return VkFunctionPointer(_type, name, members, forward_decls)
def definition(self): - text = "{0} {1})(\n".format(self.type, self.name) + text = "" + # forward declare required structs + for decl in self.forward_decls: + text += "typedef struct {0} {0};\n".format(decl) + + text += "{0} {1})(\n".format(self.type, self.name)
first = True if len(self.members) > 0: