From db11b8b62bdbec827c2eebd4bd8e2217c651f0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20S=C3=BC=C3=9Fenbach?= Date: Mon, 23 Jan 2023 16:41:43 +0100 Subject: [PATCH] Add support for a new type of functions. (#1492) --- VulkanHppGenerator.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index 38eee6f..e332227 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -7070,16 +7070,33 @@ std::string VulkanHppGenerator::generateRAIIHandleCommandVoid( std::mapsecond.params[returnParams[0]].type.postfix == "**" ) + if ( commandIt->second.params[returnParams[0]].type.type == "void" ) { - // get a pointer to something - if ( commandIt->second.params[returnParams[0]].type.type == "void" ) + if ( commandIt->second.params[returnParams[0]].type.postfix == "**" ) { + // get a pointer to something if ( vectorParams.empty() ) { return generateRAIIHandleCommandEnhanced( commandIt, initialSkipCount, returnParams, vectorParams, definition ); } } + else + { + switch ( vectorParams.size() ) + { + case 0: return generateRAIIHandleCommandEnhanced( commandIt, initialSkipCount, returnParams, vectorParams, definition ); + case 1: + { + auto returnVectorParamIt = vectorParams.find( returnParams[0] ); + if ( returnVectorParamIt != vectorParams.end() ) + { + return generateRAIIHandleCommandEnhanced( + commandIt, initialSkipCount, returnParams, vectorParams, definition, CommandFlavourFlagBits::singular ); + } + } + break; + } + } } else if ( isHandleType( commandIt->second.params[returnParams[0]].type.type ) ) { @@ -7088,10 +7105,6 @@ std::string VulkanHppGenerator::generateRAIIHandleCommandVoid( std::mapsecond.params[returnParams[0]].type.type == "void" ) - { - return generateRAIIHandleCommandEnhanced( commandIt, initialSkipCount, returnParams, vectorParams, definition, CommandFlavourFlagBits::singular ); - } else { auto returnVectorParamIt = vectorParams.find( returnParams[0] ); @@ -11706,7 +11719,8 @@ std::pair VulkanHppG ( strcmp( child->NextSibling()->Value(), "]" ) == 0 ), line, std::string( "array specifiation is ill-formatted: <" ) + nameData.arraySizes.back() + ">" ); - checkForError( m_constants.find( nameData.arraySizes.back() ) != m_constants.end(), line, "using unknown enum value <" + nameData.arraySizes.back() + ">" ); + checkForError( + m_constants.find( nameData.arraySizes.back() ) != m_constants.end(), line, "using unknown enum value <" + nameData.arraySizes.back() + ">" ); } else if ( value == "name" ) {