in SharpGen/Transform/MethodTransform.cs [161:189]
private void TransformOutParametersToReturnValues(CsCallable method)
{
if (method.HasReturnTypeValue)
return;
var outCsParameter = method.Parameters.Single(x => x.IsOut && x.Relations.Count == 0);
if (outCsParameter.IsArray)
return;
var outCppParameter = outCsParameter.CppElement;
if (outCppParameter is not CppParameter {Attribute: var attribute})
return;
if ((attribute & ParamAttribute.Buffer) == ParamAttribute.Buffer)
return;
if ((attribute & ParamAttribute.Fast) == ParamAttribute.Fast)
return;
if ((attribute & ParamAttribute.Value) == ParamAttribute.Value)
return;
outCsParameter.MarkUsedAsReturn();
if (outCppParameter.Rule.ParameterUsedAsReturnType == true)
Logger.Message("Parameter [{0}] has redundant return rule specification", outCppParameter.FullName);
}