[PATCH v2 2/4] winevulkan: Forward declare required structs for function pointer.

Liam Middlebrook lmiddlebrook at nvidia.com
Tue Sep 22 15:52:36 CDT 2020


Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>

On 9/22/20 7:31 AM, Georg Lehmann wrote:
> Signed-off-by: Georg Lehmann <dadschoorse at 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:
> 



More information about the wine-devel mailing list