Filter multiple required types for function debugReportObjectType (#2184)

This commit is contained in:
Andreas Süßenbach 2025-06-12 23:12:20 +02:00 committed by GitHub
parent 7fc625d3ce
commit 87eaf785f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8760,7 +8760,7 @@ ${objectTypeCases}
}
)" };
auto const generateObjectTypeCases = [this]( std::vector<RequireData> const & requireData, std::string const & title )
auto const generateObjectTypeCases = [this]( std::vector<RequireData> const & requireData, std::string const & title, std::set<std::string> & listedTypes )
{
static const std::string objectTypeCaseTemplate =
" case VULKAN_HPP_NAMESPACE::ObjectType::${objectType} : return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::${debugReportObjectType};\n";
@ -8769,6 +8769,8 @@ ${objectTypeCases}
for ( auto const & require : requireData )
{
for ( auto const & type : require.types )
{
if ( listedTypes.insert( type.name ).second ) // only handle yet unlisted types
{
auto handleIt = m_handles.find( type.name );
if ( handleIt != m_handles.end() )
@ -8779,17 +8781,19 @@ ${objectTypeCases}
}
}
}
}
return addTitleAndProtection( title, objectTypeCases );
};
std::string objectTypeCases;
std::set<std::string> 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 } } );