[PATCH 1/4] winevulkan: Generate typedefs for aliased enums
Liam Middlebrook
lmiddlebrook at nvidia.com
Fri Mar 20 21:39:29 CDT 2020
Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
Signed-off-by: Piers Daniell <pdaniell at nvidia.com>
---
dlls/winevulkan/make_vulkan | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
index a2e3eeb955..18fb4ebbf5 100755
--- a/dlls/winevulkan/make_vulkan
+++ b/dlls/winevulkan/make_vulkan
@@ -335,11 +335,15 @@ class VkEnum(object):
self.values = values
self.required = False
self.alias = alias
+ self.aliased_by = []
@staticmethod
def from_alias(enum, alias):
name = enum.attrib.get("name")
- return VkEnum(name, alias.values, alias=alias)
+ aliasee = VkEnum(name, alias.values, alias=alias)
+
+ alias.add_aliased_by(aliasee)
+ return aliasee
@staticmethod
def from_xml(enum):
@@ -386,18 +390,29 @@ class VkEnum(object):
self.values.append(value)
def definition(self):
+ if self.is_alias():
+ return ""
+
text = "typedef enum {0}\n{{\n".format(self.name)
# Print values sorted, values can have been added in a random order.
values = sorted(self.values, key=lambda value: value.value)
for value in values:
text += " {0},\n".format(value.definition())
- text += "}} {0};\n\n".format(self.name)
+ text += "}} {0};\n".format(self.name)
+
+ for aliasee in self.aliased_by:
+ text += "typedef {0} {1};\n".format(self.name, aliasee.name)
+
+ text += "\n"
return text
def is_alias(self):
return bool(self.alias)
+ def add_aliased_by(self, aliasee):
+ self.aliased_by.append(aliasee)
+
class VkEnumValue(object):
def __init__(self, name, value, hex=False):
--
2.17.1
More information about the wine-devel
mailing list