Georg Lehmann : winevulkan: Forward declare required structs for function pointer.

Alexandre Julliard julliard at winehq.org
Wed Sep 23 15:47:14 CDT 2020


Module: wine
Branch: master
Commit: d4b162509f7d1408f933eabde3956fc8df3f86cd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d4b162509f7d1408f933eabde3956fc8df3f86cd

Author: Georg Lehmann <dadschoorse at gmail.com>
Date:   Tue Sep 22 16:31:49 2020 +0200

winevulkan: Forward declare required structs for function pointer.

Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 070d112e6e..2cddb161d6 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:




More information about the wine-cvs mailing list