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

Method generateStructMembers

generator/VulkanHppGenerator.cpp:11398–11490  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11396}
11397
11398std::tuple<std::string, std::string, std::string, std::string>
11399 VulkanHppGenerator::generateStructMembers( std::pair<std::string, StructData> const & structData ) const
11400{
11401 std::string members, memberNames, memberTypes, sTypeValue;
11402 for ( auto const & member : structData.second.members )
11403 {
11404 members += " ";
11405
11406 if ( !member.deprecated.empty() )
11407 {
11408 members += "VULKAN_HPP_DEPRECATED( \"" + member.deprecated + "\" ) ";
11409 }
11410
11411 std::string type;
11412 if ( !member.bitCount.empty() && member.type.name.starts_with( "Vk" ) )
11413 {
11414 assert( member.type.prefix.empty() && member.type.postfix.empty() ); // never encounterd a different case
11415 type = member.type.name;
11416 }
11417 else if ( member.type.name.starts_with( "PFN_vk" ) )
11418 {
11419 assert( member.type.prefix.empty() && member.type.postfix.empty() ); // never encounterd a different case
11420 type = "PFN_" + stripPrefix( member.type.name, "PFN_vk" );
11421 }
11422 else if ( member.arraySizes.empty() )
11423 {
11424 type = member.type.compose( "Vk" );
11425 }
11426 else
11427 {
11428 assert( member.type.prefix.empty() && member.type.postfix.empty() );
11429 type = generateStandardArrayWrapper( member.type.compose( "Vk" ), member.arraySizes );
11430 }
11431 members += type + " " + member.name;
11432 if ( member.deprecated.empty() && !member.value.empty() )
11433 {
11434 // special handling for members with legal value: use it as the default
11435 members += " = ";
11436 if ( member.type.name == "uint32_t" )
11437 {
11438 members += member.value;
11439 }
11440 else
11441 {
11442 auto enumIt = m_enums.find( member.type.name );
11443 assert( enumIt != m_enums.end() );
11444 assert( containsByNameOrAlias( enumIt->second.values, member.value ) );
11445 std::string valueName = generateEnumValueName( enumIt->first, member.value, enumIt->second.isBitmask );
11446 members += stripPrefix( member.type.name, "Vk" ) + "::" + valueName;
11447 if ( member.name == "sType" )
11448 {
11449 sTypeValue = valueName;
11450 }
11451 }
11452 }
11453 else
11454 {
11455 // when we don't have any default initialization value, everything can be initialized by just '{}'

Callers

nothing calls this directly

Calls 5

stripPrefixFunction · 0.85
stripPostfixFunction · 0.85
composeMethod · 0.80
containsByNameOrAliasFunction · 0.70

Tested by

no test coverage detected