in SharpGen/Transform/InteropSignatureTransform.cs [196:234]
private InteropType GetInteropTypeForReturnValue(CsReturnValue returnValue,
PlatformDetectionType platform,
ref InteropMethodSignatureFlags flags)
{
var platformSpecificReturnTypeOverrides = (platform & PlatformDetectionType.Windows) != 0
? windowsOnlyReturnTypeOverrides
: systemvOnlyReturnTypeOverrides;
// Handle Return Type parameter
// MarshalType.Type == null, then check that it is a structure
if (returnValue.PublicType is CsStruct or CsEnum)
{
var returnQualifiedName = returnValue.PublicType.QualifiedName;
if (returnTypeOverrides.TryGetValue(returnQualifiedName, out var interopType))
{
flags |= interopType.SetFlags;
return interopType.NewType;
}
if (platformSpecificReturnTypeOverrides.TryGetValue(returnQualifiedName, out interopType))
{
flags |= interopType.SetFlags;
return interopType.NewType;
}
return returnValue.HasNativeValueType
? $"{returnValue.MarshalType.QualifiedName}.__Native"
: returnValue.MarshalType.QualifiedName;
}
if (returnValue.MarshalType is CsFundamentalType fundamentalReturn)
return fundamentalReturn;
if (returnValue.HasPointer)
return returnValue.IsInterface ? TypeRegistry.IntPtr : TypeRegistry.VoidPtr;
return null;
}