From: Georg Lehmann Subject: [PATCH 2/4] winevulkan: Forward declare required structs for function pointer. Message-Id: <20200922140819.34294-2-dadschoorse@gmail.com> Date: Tue, 22 Sep 2020 16:08:17 +0200 In-Reply-To: <20200922140819.34294-1-dadschoorse@gmail.com> References: <20200922140819.34294-1-dadschoorse@gmail.com> Signed-off-by: Georg Lehmann --- 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..e6f510f287 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: -- 2.28.0