diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index 9cbfe36..1a5d9f2 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -901,7 +901,7 @@ void VulkanHppGenerator::appendArguments( std::string & str, } else if ( beginsWith( commandData.params[i].type.type, "Vk" ) ) { - appendArgumentVulkanType( str, commandData.params[i] ); + appendArgumentVulkanType( str, commandData.params[i], returnParamIndex == i ); } else { @@ -956,7 +956,9 @@ void VulkanHppGenerator::appendArgumentVector( std::string & str, } } -void VulkanHppGenerator::appendArgumentVulkanType( std::string & str, ParamData const & paramData ) const +void VulkanHppGenerator::appendArgumentVulkanType( std::string & str, + ParamData const & paramData, + bool isLocalVariable ) const { // this parameter is a vulkan type if ( !paramData.type.postfix.empty() || !paramData.arraySizes.empty() ) @@ -968,15 +970,15 @@ void VulkanHppGenerator::appendArgumentVulkanType( std::string & str, ParamData appendReinterpretCast( str, paramData.type.prefix.find( "const" ) != std::string::npos, paramData.type.type, false ); str += "( "; - if ( paramData.optional ) + if ( isLocalVariable || !paramData.optional ) { - // for an optional parameter, we need also a static_cast from optional type to const-pointer to pure type - str += "static_cast( " + parameterName + " )"; + // those parameters can just use the pointer + str += ( paramData.arraySizes.empty() ? "&" : "" ) + parameterName; } else { - // other parameters can just use the pointer - str += ( paramData.arraySizes.empty() ? "&" : "" ) + parameterName; + // for an optional parameter, we need also a static_cast from optional type to const-pointer to pure type + str += "static_cast( " + parameterName + " )"; } str += " )"; } diff --git a/VulkanHppGenerator.hpp b/VulkanHppGenerator.hpp index e7a7c4b..5dd869a 100644 --- a/VulkanHppGenerator.hpp +++ b/VulkanHppGenerator.hpp @@ -267,7 +267,7 @@ private: bool twoStep, bool firstCall, bool singular ) const; - void appendArgumentVulkanType( std::string & str, ParamData const & paramData ) const; + void appendArgumentVulkanType( std::string & str, ParamData const & paramData, bool isLocalVariable ) const; void appendBitmask( std::string & os, std::string const & bitmaskName, std::string const & bitmaskType,