mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Added support of Attribute "bitpos" for extends of an enum; made generator survive an "usage" element in an extension.
This commit is contained in:
parent
6163c6e8ca
commit
30ad5085ef
@ -958,10 +958,10 @@ void readExtensionRequire(tinyxml2::XMLElement * element, VkData & vkData, std::
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
std::string value = child->Value();
|
std::string value = child->Value();
|
||||||
assert( child->Attribute( "name" ) );
|
|
||||||
|
|
||||||
if ( value == "command" )
|
if ( value == "command" )
|
||||||
{
|
{
|
||||||
|
assert(child->Attribute("name"));
|
||||||
std::string name = stripCommand(child->Attribute("name"));
|
std::string name = stripCommand(child->Attribute("name"));
|
||||||
std::map<std::string, CommandData>::iterator cit = vkData.commands.find(name);
|
std::map<std::string, CommandData>::iterator cit = vkData.commands.find(name);
|
||||||
assert(cit != vkData.commands.end());
|
assert(cit != vkData.commands.end());
|
||||||
@ -969,6 +969,7 @@ void readExtensionRequire(tinyxml2::XMLElement * element, VkData & vkData, std::
|
|||||||
}
|
}
|
||||||
else if (value == "type")
|
else if (value == "type")
|
||||||
{
|
{
|
||||||
|
assert(child->Attribute("name"));
|
||||||
std::string name = strip(child->Attribute("name"), "Vk");
|
std::string name = strip(child->Attribute("name"), "Vk");
|
||||||
std::map<std::string, EnumData>::iterator eit = vkData.enums.find(name);
|
std::map<std::string, EnumData>::iterator eit = vkData.enums.find(name);
|
||||||
if (eit != vkData.enums.end())
|
if (eit != vkData.enums.end())
|
||||||
@ -1012,14 +1013,15 @@ void readExtensionRequire(tinyxml2::XMLElement * element, VkData & vkData, std::
|
|||||||
// TODO process enums which don't extend existing enums
|
// TODO process enums which don't extend existing enums
|
||||||
if (child->Attribute("extends"))
|
if (child->Attribute("extends"))
|
||||||
{
|
{
|
||||||
|
assert(child->Attribute("name"));
|
||||||
assert(vkData.enums.find(getEnumName(child->Attribute("extends"))) != vkData.enums.end());
|
assert(vkData.enums.find(getEnumName(child->Attribute("extends"))) != vkData.enums.end());
|
||||||
assert(!!child->Attribute("offset") ^ !!child->Attribute("value")); // either offset or value has to be defined; no both of them!
|
assert(!!child->Attribute("bitpos") + !!child->Attribute("offset") + !!child->Attribute("value") == 1);
|
||||||
vkData.enums[getEnumName(child->Attribute("extends"))].addEnum(child->Attribute("name"), child->Attribute("offset") ? tag : "" );
|
vkData.enums[getEnumName(child->Attribute("extends"))].addEnum(child->Attribute("name"), child->Attribute("offset") ? tag : "" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
assert("unknown attribute, check me");
|
assert(value=="usage");
|
||||||
}
|
}
|
||||||
} while ( child = child->NextSiblingElement() );
|
} while ( child = child->NextSiblingElement() );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user