| 11490 | } |
| 11491 | |
| 11492 | std::string VulkanHppGenerator::generateStructSetter( std::string const & structureName, std::vector<MemberData> const & memberData, size_t index ) const |
| 11493 | { |
| 11494 | std::string str; |
| 11495 | MemberData const & member = memberData[index]; |
| 11496 | if ( member.type.name != "VkStructureType" ) // filter out StructureType, which is supposed to be immutable ! |
| 11497 | { |
| 11498 | static std::string const templateString = R"( |
| 11499 | ${deprecated}${constexpr}${structureName} & set${MemberName}( ${memberType} ${reference}${memberName}_ ) & VULKAN_HPP_NOEXCEPT |
| 11500 | { |
| 11501 | ${assignment}; |
| 11502 | return *this; |
| 11503 | } |
| 11504 | |
| 11505 | ${deprecated}${constexpr}${structureName} && set${MemberName}( ${memberType} ${reference}${memberName}_ ) && VULKAN_HPP_NOEXCEPT |
| 11506 | { |
| 11507 | ${assignment}; |
| 11508 | return std::move( *this ); |
| 11509 | } |
| 11510 | )"; |
| 11511 | |
| 11512 | std::string memberType = |
| 11513 | member.type.name.starts_with( "PFN_vk" ) |
| 11514 | ? "PFN_" + stripPrefix( member.type.name, "PFN_vk" ) |
| 11515 | : ( member.arraySizes.empty() ? member.type.compose( "Vk" ) : generateStandardArray( member.type.compose( "Vk" ), member.arraySizes ) ); |
| 11516 | bool const isReinterpretation = !member.bitCount.empty() && member.type.name.starts_with( "Vk" ); |
| 11517 | std::string assignment; |
| 11518 | if ( member.deprecated.empty() ) |
| 11519 | { |
| 11520 | if ( isReinterpretation ) |
| 11521 | { |
| 11522 | assignment = member.name + " = " + "*reinterpret_cast<" + member.type.name + "*>(&" + member.name + "_)"; |
| 11523 | } |
| 11524 | else |
| 11525 | { |
| 11526 | assignment = member.name + " = " + member.name + "_"; |
| 11527 | } |
| 11528 | } |
| 11529 | else |
| 11530 | { |
| 11531 | assignment = "detail::ignore( " + member.name + "_ )"; |
| 11532 | } |
| 11533 | |
| 11534 | str += replaceWithMap( templateString, |
| 11535 | { { "assignment", assignment }, |
| 11536 | { "constexpr", isReinterpretation ? "" : "VULKAN_HPP_CONSTEXPR_14 " }, |
| 11537 | { "deprecated", member.deprecated.empty() ? "" : "VULKAN_HPP_DEPRECATED( \"" + member.deprecated + "\" ) " }, |
| 11538 | { "memberName", member.name }, |
| 11539 | { "MemberName", startUpperCase( member.name ) }, |
| 11540 | { "memberType", memberType }, |
| 11541 | { "reference", ( member.type.postfix.empty() && m_structs.contains( member.type.name ) ) ? "const & " : "" }, |
| 11542 | { "structureName", structureName } } ); |
| 11543 | |
| 11544 | if ( hasLen( member, memberData ) ) |
| 11545 | { |
| 11546 | assert( member.type.isPointer() || !member.arraySizes.empty() ); |
| 11547 | std::string arrayName = member.type.isPointer() ? startLowerCase( stripPrefix( member.name, "p" ) ) : member.name; |
| 11548 | |
| 11549 | if ( member.lenExpressions[0] == "null-terminated" ) |
nothing calls this directly
no test coverage detected