Filter aliases of enum values that originally belong to aliases of the enum class. (#483)

This commit is contained in:
Andreas Süßenbach
2020-01-14 16:05:05 +01:00
committed by Markus Tavenrath
parent e49f02013a
commit a75cf874c7
2 changed files with 29 additions and 61 deletions

View File

@@ -4157,8 +4157,20 @@ void VulkanHppGenerator::readRequireEnum(tinyxml2::XMLElement const* element, st
// add this enum name to the list of aliases
checkAttributes(attributes, element->GetLineNum(), { { "alias",{} },{ "extends",{} },{ "name",{} } }, { { "comment",{} } });
std::string valueName = createEnumValueName(nameIt->second, prefix, postfix, enumIt->second.isBitmask, tag);
if (!enumIt->second.alias.empty())
{
prefix = getEnumPrefix(enumIt->second.alias, enumIt->second.isBitmask);
postfix = getEnumPostfix(enumIt->second.alias, m_tags, prefix);
if (endsWith(nameIt->second, postfix))
{
valueName = createEnumValueName(nameIt->second, prefix, postfix, enumIt->second.isBitmask, tag);
}
}
assert(std::find_if(enumIt->second.aliases.begin(), enumIt->second.aliases.end(), [&valueName](std::pair<std::string, std::string> const& aliasPair) { return valueName == aliasPair.second; }) == enumIt->second.aliases.end());
enumIt->second.aliases.push_back(std::make_pair(nameIt->second, valueName));
if (std::find_if(enumIt->second.values.begin(), enumIt->second.values.end(), [&valueName](EnumValueData const& evd) { return evd.vkValue == valueName; }) == enumIt->second.values.end())
{
enumIt->second.aliases.push_back(std::make_pair(nameIt->second, valueName));
}
}
else
{