Skip to content

Commit f21caac

Browse files
authored
Add some potentially missing enum value flavours (#2484)
1 parent cd3d089 commit f21caac

File tree

2 files changed

+466
-190
lines changed

2 files changed

+466
-190
lines changed

VulkanHppGenerator.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5815,6 +5815,34 @@ std::string VulkanHppGenerator::generateEnum( std::pair<std::string, EnumData> c
58155815
mapIt->second +
58165816
">" );
58175817
}
5818+
5819+
if ( ( enumName != enumData.first ) && ( findTag( enumName ) != findTag( enumData.first ) ) )
5820+
{
5821+
// the enum value was introduced with a tagged enum, but is now an alias of an enum with a different, potentially empty, tag
5822+
// even though, there has never been this generated with that tag, we add a tagged version here for consistency reasons
5823+
assert( findTag( valueAlias.name ) == findTag( enumName ) );
5824+
aliasName = generateEnumValueName( enumData.first, valueAlias.name, enumData.second.isBitmask );
5825+
std::tie( mapIt, inserted ) = valueToNameMap.insert( { aliasName, valueAlias.name } );
5826+
if ( inserted )
5827+
{
5828+
enumValues += " " + aliasName + " = " + valueAlias.name + ",\n";
5829+
}
5830+
else
5831+
{
5832+
// some aliases are so close to the original, that no new entry can be generated!
5833+
assert( mapIt->second != valueAlias.name );
5834+
checkForError( ( mapIt->second == value.name ) ||
5835+
std::ranges::any_of( value.aliases, [mapIt]( auto const & eav ) { return eav.name == mapIt->second; } ),
5836+
valueAlias.xmlLine,
5837+
"generated enum alias value name <" +
5838+
aliasName +
5839+
">, generated from <" +
5840+
valueAlias.name +
5841+
"> is already generated from different enum value <" +
5842+
mapIt->second +
5843+
">" );
5844+
}
5845+
}
58185846
}
58195847
}
58205848

0 commit comments

Comments
 (0)