From 9aa679e5e850f4a040b75905d303c8feb34b7d6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20S=C3=BC=C3=9Fenbach?= Date: Thu, 28 Sep 2023 13:23:31 +0200 Subject: [PATCH] Add support of attribute "type" for a enums in an extension, storing them as a constant. (#1668) --- VulkanHppGenerator.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index 84ccc6f..27c114f 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -13841,9 +13841,10 @@ void VulkanHppGenerator::readRequireEnum( { "extnumber", {} }, { "offset", {} }, { "protect", { "VK_ENABLE_BETA_EXTENSIONS" } }, + { "type", { "uint32_t" } }, { "value", {} } } ); - std::string api, bitpos, extends, name, offset, protect, value; + std::string api, bitpos, extends, name, offset, protect, type, value; for ( auto const & attribute : attributes ) { if ( attribute.first == "api" ) @@ -13870,6 +13871,10 @@ void VulkanHppGenerator::readRequireEnum( { protect = attribute.second; } + else if (attribute.first == "type") + { + type = attribute.second; + } else if ( attribute.first == "value" ) { value = attribute.second; @@ -13892,6 +13897,11 @@ void VulkanHppGenerator::readRequireEnum( checkForError( m_types.insert( { name, TypeData{ TypeCategory::Constant, { requiredBy }, line } } ).second, line, "required enum <" + name + "> specified by value <" + value + "> is already specified" ); + if (type == "uint32_t") + { + assert( !m_constants.contains( name ) ); + m_constants[name] = { type, value, line }; + } } } }