MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Hpp / determineSubStruct

Method determineSubStruct

generator/VulkanHppGenerator.cpp:1700–1728  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1698}
1699
1700std::string VulkanHppGenerator::determineSubStruct( std::pair<std::string, StructData> const & structure ) const
1701{
1702 if ( structure.second.members.front().name != "sType" )
1703 {
1704 // check if sd is a substruct of structure
1705 auto isSubStruct = [&structure]( std::pair<std::string, StructData> const & sd ) noexcept
1706 {
1707 // member-by-member comparison of type and name
1708 auto memberIt = structure.second.members.begin();
1709 auto isMember = [&memberIt]( MemberData const & md ) noexcept
1710 {
1711 if ( ( md.type == memberIt->type ) && ( md.name == memberIt->name ) )
1712 {
1713 ++memberIt;
1714 return true;
1715 }
1716 return false;
1717 };
1718
1719 return ( sd.second.xmlLine < structure.second.xmlLine ) && ( sd.second.members.size() < structure.second.members.size() ) &&
1720 std::ranges::all_of( sd.second.members, isMember );
1721 };
1722
1723 // look for a struct in m_structs that starts identically to structure
1724 auto structIt = std::ranges::find_if( m_structs, isSubStruct );
1725 return ( structIt == m_structs.end() ) ? "" : structIt->first;
1726 }
1727 return "";
1728}
1729
1730std::map<size_t, VulkanHppGenerator::VectorParamData> VulkanHppGenerator::determineVectorParams( std::vector<ParamData> const & params ) const
1731{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected