Пример #1
0
 /// <summary>
 /// Gets the return type for the unmanaged signature that represents the provided <paramref name="info"/>.
 /// </summary>
 /// <param name="generator">The marshalling generator for this <paramref name="info"/></param>
 /// <param name="info">Object to marshal</param>
 public static TypeSyntax AsReturnType(this IMarshallingGenerator generator, TypePositionInfo info)
 {
     return(generator.GetNativeSignatureBehavior(info) switch
     {
         SignatureBehavior.ManagedTypeAndAttributes => info.ManagedType.Syntax,
         SignatureBehavior.NativeType => generator.AsNativeType(info),
         SignatureBehavior.PointerToNativeType => PointerType(generator.AsNativeType(info)),
         _ => throw new InvalidOperationException()
     });
Пример #2
0
 /// <summary>
 /// Gets a parameter for the unmanaged signature that represents the provided <paramref name="info"/>.
 /// </summary>
 /// <param name="generator">The marshalling generator for this <paramref name="info"/></param>
 /// <param name="info">Object to marshal</param>
 public static ParameterSyntax AsParameter(this IMarshallingGenerator generator, TypePositionInfo info)
 {
     SignatureBehavior behavior = generator.GetNativeSignatureBehavior(info);
     if (behavior == SignatureBehavior.ManagedTypeAndAttributes)
     {
         return GenerateForwardingParameter(info);
     }
     return Parameter(Identifier(info.InstanceIdentifier))
         .WithType(behavior switch
         {
             SignatureBehavior.NativeType => generator.AsNativeType(info),
             SignatureBehavior.PointerToNativeType => PointerType(generator.AsNativeType(info)),
             _ => throw new InvalidOperationException()
         });
 public TypeSyntax AsNativeType(TypePositionInfo info)
 {
     return(_manualMarshallingGenerator.AsNativeType(info));
 }
Пример #4
0
 public TypeSyntax AsNativeType(TypePositionInfo info) => _inner.AsNativeType(info);