From eb9aa3d948811ffdcbdf8a44ae65aaa7a2ad11aa Mon Sep 17 00:00:00 2001 From: asuessenbach Date: Tue, 1 Mar 2022 09:21:33 +0100 Subject: [PATCH] Add support of functions getting a pointer to void. --- VulkanHppGenerator.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index ad61a35..f35e5b2 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -5046,7 +5046,21 @@ std::string std::string VulkanHppGenerator::generateCommandVoid1Return( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition, size_t returnParam ) const { - if ( isHandleType( commandData.params[returnParam].type.type ) ) + if ( commandData.params[returnParam].type.postfix == "**" ) + { + // get a pointer to something + if ( commandData.params[returnParam].type.type == "void" ) + { + std::map vectorParams = determineVectorParams( commandData.params ); + if ( vectorParams.empty() ) + { + return generateCommandSetStandardEnhanced( definition, + generateCommandStandard( name, commandData, initialSkipCount, definition ), + generateCommandVoidGetValue( name, commandData, initialSkipCount, definition, {}, returnParam ) ); + } + } + } + else if ( isHandleType( commandData.params[returnParam].type.type ) ) { std::map vectorParams = determineVectorParams( commandData.params ); if ( vectorParams.empty() ) @@ -8333,7 +8347,19 @@ std::string VulkanHppGenerator::generateRAIIHandleCommandVoid( std::mapsecond.params[returnParamIndices[0]].type.type ) ) + if ( commandIt->second.params[returnParamIndices[0]].type.postfix == "**" ) + { + // get a pointer to something + if ( commandIt->second.params[returnParamIndices[0]].type.type == "void" ) + { + std::map vectorParams = determineVectorParams( commandIt->second.params ); + if ( vectorParams.empty() ) + { + str = generateRAIIHandleCommandVoid1ReturnValue( commandIt, initialSkipCount, vectorParams, returnParamIndices[0], definition ); + } + } + } + else if ( isHandleType( commandIt->second.params[returnParamIndices[0]].type.type ) ) { std::map vectorParams = determineVectorParams( commandIt->second.params ); if ( vectorParams.empty() )