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

Method generateStructSubConstructor

generator/VulkanHppGenerator.cpp:11724–11776  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11722}
11723
11724std::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
11778std::string VulkanHppGenerator::generateSuccessCheck( std::vector<std::string> const & successCodes ) const
11779{

Callers

nothing calls this directly

Calls 4

startLowerCaseFunction · 0.85
stripPrefixFunction · 0.85
replaceWithMapFunction · 0.85
generateListFunction · 0.85

Tested by

no test coverage detected