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

Method generateStructMembers

generator/VideoHppGenerator.cpp:383–434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

381}
382
383std::string VideoHppGenerator::generateStructMembers( std::pair<std::string, StructureData> const & structData ) const
384{
385 std::string members;
386 for ( auto const & member : structData.second.members )
387 {
388 members += " ";
389 std::string type;
390 if ( !member.bitCount.empty() && member.type.name.starts_with( "StdVideo" ) )
391 {
392 assert( member.type.prefix.empty() && member.type.postfix.empty() ); // never encounterd a different case
393 type = member.type.name;
394 }
395 else if ( member.arraySizes.empty() )
396 {
397 type = member.type.compose( "StdVideo", "VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE" );
398 }
399 else
400 {
401 assert( member.type.prefix.empty() && member.type.postfix.empty() );
402 type = generateStandardArrayWrapper( member.type.compose( "" ), member.arraySizes );
403 }
404 members += type + " " + member.name;
405
406 // as we don't have any meaningful default initialization values, everything can be initialized by just '{}' !
407 assert( member.arraySizes.empty() || member.bitCount.empty() );
408 if ( !member.bitCount.empty() )
409 {
410 members += " : " + member.bitCount; // except for bitfield members, where no default member initialization
411 // is supported (up to C++20)
412 }
413 else
414 {
415 members += " = ";
416 auto enumIt = m_enums.find( member.type.name );
417 if ( member.arraySizes.empty() && ( enumIt != m_enums.end() ) && member.type.postfix.empty() )
418 {
419 assert( member.type.prefix.empty() && member.arraySizes.empty() && !enumIt->second.values.empty() );
420
421 std::string prefix = toUpperCase( member.type.name ) + "_";
422 std::string valueName = "e" + toCamelCase( stripPrefix( enumIt->second.values.front().name, prefix ), true );
423
424 members += type + "::" + valueName;
425 }
426 else
427 {
428 members += "{}";
429 }
430 }
431 members += ";\n";
432 }
433 return members;
434}
435
436std::string VideoHppGenerator::generateStructs() const
437{

Callers

nothing calls this directly

Calls 5

toUpperCaseFunction · 0.85
toCamelCaseFunction · 0.85
stripPrefixFunction · 0.85
composeMethod · 0.80

Tested by

no test coverage detected