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

Method determineDataTypes

generator/VulkanHppGenerator.cpp:1432–1471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1430}
1431
1432std::vector<std::string> VulkanHppGenerator::determineDataTypes( std::vector<VulkanHppGenerator::ParamData> const & params,
1433 std::map<size_t, VectorParamData> const & vectorParams,
1434 std::vector<size_t> const & returnParams,
1435 std::set<size_t> const & templatedParams,
1436 bool raii ) const
1437{
1438 std::vector<std::string> dataTypes;
1439 for ( auto rp : returnParams )
1440 {
1441 auto vectorParamIt = vectorParams.find( rp );
1442 if ( templatedParams.contains( rp ) )
1443 {
1444 assert( ( vectorParamIt == vectorParams.end() ) || !vectorParamIt->second.byStructure );
1445 if ( ( vectorParamIt != vectorParams.end() ) && ( params[rp].type.name == "void" ) &&
1446 std::ranges::any_of( returnParams, [&vectorParamIt]( size_t rp ) noexcept { return rp == vectorParamIt->first; } ) &&
1447 std::ranges::any_of( returnParams, [&vectorParamIt]( size_t rp ) noexcept { return rp == vectorParamIt->second.lenParam; } ) )
1448 {
1449 // sized data of type void is returned as a std::array<uint8_t>
1450 dataTypes.push_back( "uint8_t" );
1451 }
1452 else
1453 {
1454 // for all other (templated) return parameters, the dataType is the name of the parameter with prefix "p" removed and "Type" appended
1455 dataTypes.push_back( ( stripPrefix( params[rp].name, "p" ) + "Type" ) );
1456 }
1457 }
1458 else if ( ( vectorParamIt != vectorParams.end() ) && vectorParamIt->second.byStructure )
1459 {
1460 // for non-templated vector parameters, we have to distinguish between those specified by a structure and those specified by a simple length parameter
1461 dataTypes.push_back(
1462 trimEnd( stripPostfix( vectorMemberByStructure( params[rp].type.name ).type.compose( "Vk", raii ? "VULKAN_HPP_NAMESPACE" : "" ), "*" ) ) );
1463 }
1464 else
1465 {
1466 dataTypes.push_back(
1467 trimEnd( stripPostfix( params[rp].type.compose( "Vk", ( raii && m_handles.contains( params[rp].type.name ) ) ? "VULKAN_HPP_NAMESPACE" : "" ), "*" ) ) );
1468 }
1469 }
1470 return dataTypes;
1471}
1472
1473size_t VulkanHppGenerator::determineDefaultStartIndex( std::vector<ParamData> const & params, std::set<size_t> const & skippedParams ) const
1474{

Callers

nothing calls this directly

Calls 4

stripPrefixFunction · 0.85
trimEndFunction · 0.85
stripPostfixFunction · 0.85
composeMethod · 0.80

Tested by

no test coverage detected