From 87eaf785f8e9abab62b80a220e17f25a1158a10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20S=C3=BC=C3=9Fenbach?= Date: Thu, 12 Jun 2025 23:12:20 +0200 Subject: [PATCH] Filter multiple required types for function debugReportObjectType (#2184) --- VulkanHppGenerator.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index f949e6e..2c51159 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -8760,7 +8760,7 @@ ${objectTypeCases} } )" }; - auto const generateObjectTypeCases = [this]( std::vector const & requireData, std::string const & title ) + auto const generateObjectTypeCases = [this]( std::vector const & requireData, std::string const & title, std::set & listedTypes ) { static const std::string objectTypeCaseTemplate = " case VULKAN_HPP_NAMESPACE::ObjectType::${objectType} : return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::${debugReportObjectType};\n"; @@ -8770,12 +8770,15 @@ ${objectTypeCases} { for ( auto const & type : require.types ) { - auto handleIt = m_handles.find( type.name ); - if ( handleIt != m_handles.end() ) + if ( listedTypes.insert( type.name ).second ) // only handle yet unlisted types { - objectTypeCases += replaceWithMap( objectTypeCaseTemplate, - { { "debugReportObjectType", generateDebugReportObjectType( handleIt->second.objTypeEnum ) }, - { "objectType", generateEnumValueName( "VkObjectType", handleIt->second.objTypeEnum, false ) } } ); + auto handleIt = m_handles.find( type.name ); + if ( handleIt != m_handles.end() ) + { + objectTypeCases += replaceWithMap( objectTypeCaseTemplate, + { { "debugReportObjectType", generateDebugReportObjectType( handleIt->second.objTypeEnum ) }, + { "objectType", generateEnumValueName( "VkObjectType", handleIt->second.objTypeEnum, false ) } } ); + } } } } @@ -8783,13 +8786,14 @@ ${objectTypeCases} }; std::string objectTypeCases; + std::set listedTypes; for ( auto const & feature : m_features ) { - objectTypeCases += generateObjectTypeCases( feature.requireData, feature.name ); + objectTypeCases += generateObjectTypeCases( feature.requireData, feature.name, listedTypes ); } for ( auto const & extension : m_extensions ) { - objectTypeCases += generateObjectTypeCases( extension.requireData, extension.name ); + objectTypeCases += generateObjectTypeCases( extension.requireData, extension.name, listedTypes ); } return replaceWithMap( objectTypeToDebugReportObjectTypeTemplate, { { "objectTypeCases", objectTypeCases } } );