| 11722 | } |
| 11723 | |
| 11724 | std::string VulkanHppGenerator::generateStructSubConstructor( std::pair<std::string, StructData> const & structData ) const |
| 11725 | { |
| 11726 | if ( !structData.second.subStruct.empty() ) |
| 11727 | { |
| 11728 | auto const & subStruct = m_structs.find( structData.second.subStruct ); |
| 11729 | assert( subStruct != m_structs.end() ); |
| 11730 | |
| 11731 | std::string subStructArgumentName = startLowerCase( stripPrefix( subStruct->first, "Vk" ) ); |
| 11732 | |
| 11733 | std::string subCopies; |
| 11734 | bool firstArgument = true; |
| 11735 | for ( size_t i = 0; i < subStruct->second.members.size(); i++ ) |
| 11736 | { |
| 11737 | assert( structData.second.members[i].arraySizes.empty() ); |
| 11738 | static std::string const subCopiesTemplate = |
| 11739 | R"( ${separator} ${structMemberName}( ${subStructArgumentName}.${subStructMemberName} ) |
| 11740 | )"; |
| 11741 | subCopies += replaceWithMap( subCopiesTemplate, |
| 11742 | { { "separator", firstArgument ? ":" : "," }, |
| 11743 | { "structMemberName", structData.second.members[i].name }, |
| 11744 | { "subStructMemberName", subStruct->second.members[i].name }, |
| 11745 | { "subStructArgumentName", subStructArgumentName } } ); |
| 11746 | firstArgument = false; |
| 11747 | } |
| 11748 | |
| 11749 | std::vector<std::string> subArguments; |
| 11750 | for ( size_t i = subStruct->second.members.size(); i < structData.second.members.size(); i++ ) |
| 11751 | { |
| 11752 | std::string argument = generateStructConstructorArgument( structData.second.members[i], true ); |
| 11753 | if ( !argument.empty() ) |
| 11754 | { |
| 11755 | subArguments.push_back( argument ); |
| 11756 | } |
| 11757 | |
| 11758 | assert( structData.second.members[i].arraySizes.empty() ); |
| 11759 | static std::string const subCopiesTemplate = R"( , ${memberName}( ${memberName}_ ) |
| 11760 | )"; |
| 11761 | subCopies += replaceWithMap( subCopiesTemplate, { { "memberName", structData.second.members[i].name } } ); |
| 11762 | } |
| 11763 | |
| 11764 | static std::string const subStructConstructorTemplate = R"( |
| 11765 | explicit ${structName}( ${subStructName} const & ${subStructArgumentName}${subArguments} ) |
| 11766 | ${subCopies} {} |
| 11767 | )"; |
| 11768 | return replaceWithMap( subStructConstructorTemplate, |
| 11769 | { { "structName", stripPrefix( structData.first, "Vk" ) }, |
| 11770 | { "subArguments", generateList( subArguments, ", ", ", " ) }, |
| 11771 | { "subCopies", subCopies }, |
| 11772 | { "subStructArgumentName", subStructArgumentName }, |
| 11773 | { "subStructName", stripPrefix( subStruct->first, "Vk" ) } } ); |
| 11774 | } |
| 11775 | return ""; |
| 11776 | } |
| 11777 | |
| 11778 | std::string VulkanHppGenerator::generateSuccessCheck( std::vector<std::string> const & successCodes ) const |
| 11779 | { |
nothing calls this directly
no test coverage detected