| 11396 | } |
| 11397 | |
| 11398 | std::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 '{}' |
nothing calls this directly
no test coverage detected