13 instantiations of TypePositionInfo
Microsoft.Interop.ComInterfaceGenerator (4)
ComInterfaceGenerator.cs (1)
315
new
TypePositionInfo
(SpecialTypeInfo.Int32, new ManagedHResultExceptionMarshallingInfo())
ManagedToNativeVTableMethodGenerator.cs (1)
56
newArgTypes.Add(new
TypePositionInfo
(new PointerTypeInfo("void*", "void*", false), NoMarshallingInfo.Instance)
VirtualMethodPointerStubGenerator.cs (2)
116
elements.Add(new
TypePositionInfo
(methodStub.TypeKeyOwner, methodStub.ManagedThisMarshallingInfo)
132
new
TypePositionInfo
(
Microsoft.Interop.SourceGeneration (9)
BoundGenerators.cs (1)
25
BoundGenerator defaultBoundGenerator = new BoundGenerator(new
TypePositionInfo
(SpecialTypeInfo.Void, NoMarshallingInfo.Instance), fallbackGenerator);
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (1)
308
var elementInfo = new
TypePositionInfo
(marshallerData.CollectionElementType, marshallerData.CollectionElementMarshallingInfo)
Marshalling\StatefulMarshallingStrategy.cs (1)
441
new
TypePositionInfo
(SpecialTypeInfo.Int32, NoMarshallingInfo.Instance)
Marshalling\StatelessMarshallingStrategy.cs (1)
453
new
TypePositionInfo
(SpecialTypeInfo.Int32, NoMarshallingInfo.Instance)
MarshallingInfoParser.cs (2)
316
info = new
TypePositionInfo
(SpecialTypeInfo.Void, NoMarshallingInfo.Instance);
345
info = new
TypePositionInfo
(SpecialTypeInfo.Void, NoMarshallingInfo.Instance);
MethodSignatureElementInfoProvider.cs (1)
33
info = new
TypePositionInfo
(
SignatureContext.cs (1)
122
TypePositionInfo retTypeInfo =
new
(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(method.ReturnType), marshallingInfoParser.ParseMarshallingInfo(method.ReturnType, method.GetReturnTypeAttributes()));
TypePositionInfo.cs (1)
87
var typeInfo = new
TypePositionInfo
(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(paramSymbol.Type), marshallingInfo)
498 references to TypePositionInfo
Microsoft.Interop.ComInterfaceGenerator (59)
Analyzers\ConvertComImportToGeneratedComInterfaceAnalyzer.cs (4)
175
private static bool HasUnsupportedMarshalAsInfo(
TypePositionInfo
info)
191
private readonly Func<
TypePositionInfo
, StubCodeContext, ResolvedGenerator> _func;
193
public CallbackGeneratorResolver(Func<
TypePositionInfo
, StubCodeContext, ResolvedGenerator> func)
198
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context) => _func(info, context);
ComInterfaceGenerator.cs (6)
277
ImmutableArray<
TypePositionInfo
> returnSwappedSignatureElements = signatureContext.ElementTypeInformation;
298
var
managedSignatureAsNativeOut = returnSwappedSignatureElements[i] with
301
ManagedIndex =
TypePositionInfo
.ReturnIndex,
317
NativeIndex =
TypePositionInfo
.ReturnIndex
326
TypePositionInfo
? managedReturnInfo = signatureContext.ElementTypeInformation.FirstOrDefault(e => e.IsManagedReturnPosition);
342
foreach (
TypePositionInfo
parameter in signatureContext.ManagedParameters)
ManagedToNativeVTableMethodGenerator.cs (6)
46
ImmutableArray<
TypePositionInfo
> argTypes,
55
ImmutableArray<
TypePositionInfo
>.Builder newArgTypes = ImmutableArray.CreateBuilder<
TypePositionInfo
>(argTypes.Length + 1);
61
foreach (
var
arg in argTypes)
67
TypePositionInfo
.UnsetIndex or
TypePositionInfo
.ReturnIndex => arg.NativeIndex,
Marshallers\ComInterfaceDispatchMarshallingResolver.cs (7)
19
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
24
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) =>
29
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
54
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => SignatureBehavior.NativeType;
55
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => ValueBoundaryBehavior.NativeIdentifier;
56
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
58
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
Marshallers\ManagedHResultExceptionGeneratorResolver.cs (13)
29
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
48
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => info.ManagedType;
49
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
67
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => SignatureBehavior.NativeType;
68
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier;
69
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
71
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => false;
76
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => info.ManagedType;
77
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
104
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => SignatureBehavior.NativeType;
105
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier;
106
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
108
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => false;
Marshallers\ObjectUnwrapperResolver.cs (7)
17
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
22
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => new PointerTypeInfo("void*", "void*", false);
23
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
49
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => SignatureBehavior.NativeType;
50
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => ValueBoundaryBehavior.NativeIdentifier;
51
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
53
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
Marshallers\StructAsHResultMarshallerFactory.cs (7)
17
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
30
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => SpecialTypeInfo.Int32;
32
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
79
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
84
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
94
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
97
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
UnmanagedToManagedStubGenerator.cs (1)
23
ImmutableArray<
TypePositionInfo
> argTypes,
VirtualMethodPointerStubGenerator.cs (8)
70
ImmutableArray<
TypePositionInfo
> elements = AddImplicitElementInfos(methodStub);
110
private static ImmutableArray<
TypePositionInfo
> AddImplicitElementInfos(IncrementalMethodStubGenerationContext methodStub)
112
ImmutableArray<
TypePositionInfo
> originalElements = methodStub.SignatureContext.ElementTypeInformation;
114
var elements = ImmutableArray.CreateBuilder<
TypePositionInfo
>(originalElements.Length + 2);
121
foreach (
TypePositionInfo
element in originalElements)
125
NativeIndex =
TypePositionInfo
.IncrementIndex(element.NativeIndex)
137
ManagedIndex =
TypePositionInfo
.ExceptionIndex,
138
NativeIndex =
TypePositionInfo
.ReturnIndex
Microsoft.Interop.JavaScript.JSImportGenerator (31)
JSExportCodeGenerator.cs (1)
23
ImmutableArray<
TypePositionInfo
> argTypes,
JSGeneratorFactory.cs (3)
16
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
36
bool isToJs = info.ManagedIndex !=
TypePositionInfo
.ReturnIndex ^ context is JSExportCodeContext;
96
internal static ResolvedGenerator Create(
TypePositionInfo
info, bool isToJs, KnownManagedType marshaledType, KnownManagedType[] argumentTypes, JSTypeFlags jsType, JSTypeFlags[] jsTypeArguments, Func<string, ResolvedGenerator> failWithReason)
JSImportCodeGenerator.cs (1)
30
ImmutableArray<
TypePositionInfo
> argTypes,
JSSignatureContext.cs (1)
53
foreach (
var
param in sigContext.ElementTypeInformation)
JSStubCodeContext.cs (1)
15
public override (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
Marshaling\ArrayJSGenerator.cs (1)
22
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
Marshaling\ArraySegmentJSGenerator.cs (1)
21
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
Marshaling\BaseJSGenerator.cs (7)
24
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _inner.AsNativeType(info);
25
public virtual bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _inner.UsesNativeIdentifier(info, context);
26
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => _inner.GetNativeSignatureBehavior(info);
27
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => _inner.GetValueBoundaryBehavior(info, context);
28
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
31
public virtual IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
36
public virtual IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
Marshaling\EmptyJSGenerator.cs (7)
12
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => info.ManagedType;
13
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
14
public IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<ExpressionSyntax>();
15
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => SignatureBehavior.ManagedTypeAndAttributes;
16
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier;
17
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
19
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => false;
Marshaling\FuncJSGenerator.cs (2)
26
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
32
public override IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
Marshaling\IJSMarshallingGenerator.cs (1)
11
IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context);
Marshaling\NullableJSGenerator.cs (1)
18
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
Marshaling\PrimitiveJSGenerator.cs (1)
25
public override IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
Marshaling\SpanJSGenerator.cs (1)
21
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
Marshaling\TaskJSGenerator.cs (2)
22
public override IEnumerable<ExpressionSyntax> GenerateBind(
TypePositionInfo
info, StubCodeContext context)
36
public override IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
Microsoft.Interop.LibraryImportGenerator (7)
Analyzers\ConvertToLibraryImportAnalyzer.cs (4)
186
private static bool HasUnsupportedMarshalAsInfo(
TypePositionInfo
info)
217
private readonly Func<
TypePositionInfo
, StubCodeContext, ResolvedGenerator> _func;
219
public CallbackGeneratorResolver(Func<
TypePositionInfo
, StubCodeContext, ResolvedGenerator> func)
224
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context) => _func(info, context);
ForwarderResolver.cs (1)
14
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context) => ResolvedGenerator.Resolved(s_forwarder);
LibraryImportGenerator.cs (1)
333
foreach (
TypePositionInfo
typeInfo in pinvokeStub.SignatureContext.ElementTypeInformation)
PInvokeStubCodeGenerator.cs (1)
49
ImmutableArray<
TypePositionInfo
> argTypes,
Microsoft.Interop.SourceGeneration (401)
BoundGenerators.cs (12)
17
public readonly record struct BoundGenerator(
TypePositionInfo
TypeInfo, IMarshallingGenerator Generator);
23
public static BoundGenerators Create(ImmutableArray<
TypePositionInfo
> elementTypeInfo, IMarshallingGeneratorResolver generatorResolver, StubCodeContext context, IMarshallingGenerator fallbackGenerator, out ImmutableArray<GeneratorDiagnostic> generatorBindingDiagnostics)
35
TypePositionInfo
? managedExceptionInfo = null;
37
foreach (
TypePositionInfo
argType in elementTypeInfo)
61
if (!
TypePositionInfo
.IsSpecialIndex(argType.ManagedIndex))
65
if (!
TypePositionInfo
.IsSpecialIndex(argType.NativeIndex))
132
static IEnumerable<(bool IsManagedIndex, int Index)> GetInfoDependencies(
TypePositionInfo
info)
135
if (info.ManagedIndex ==
TypePositionInfo
.UnsetIndex)
143
static (bool IsManagedIndex, int Index) GetInfoIndex(
TypePositionInfo
info)
149
if (info.ManagedIndex !=
TypePositionInfo
.UnsetIndex)
156
IMarshallingGenerator CreateGenerator(
TypePositionInfo
p, IMarshallingGeneratorResolver factory)
206
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
GeneratorDiagnosticsBag.cs (1)
29
/// <param name="locations">A provider of locations for diagnostics on <see cref="
TypePositionInfo
"/>s.</param>
LinearCollectionElementMarshallingCodeContext.cs (2)
46
public override (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
54
public override string GetAdditionalIdentifier(
TypePositionInfo
info, string name)
ManagedToNativeStubCodeContext.cs (2)
27
public override (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
47
Debug.Assert(info.ManagedIndex ==
TypePositionInfo
.UnsetIndex);
MarshalAsParser.cs (1)
143
if (!elementInfoProvider.TryGetInfoForParamIndex(attributeData, (short)sizeParamIndexArg.Value!, marshallingInfoCallback, out
TypePositionInfo
paramIndexInfo))
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (15)
46
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
88
private ExpressionOrNotSupported GetNumElementsExpressionFromMarshallingInfo(
TypePositionInfo
info, CountInfo count, StubCodeContext context)
96
case SizeAndParamIndexInfo(SizeAndParamIndexInfo.UnspecifiedConstSize,
TypePositionInfo
param):
105
case SizeAndParamIndexInfo(int size,
TypePositionInfo
param):
116
case CountElementCountInfo(
TypePositionInfo
elementInfo):
137
ExpressionOrNotSupported GetExpressionForParam(
TypePositionInfo
paramInfo, out bool isIntType)
182
static ExpressionSyntax GetIndexedNumElementsExpression(StubCodeContext context,
TypePositionInfo
numElementsInfo, out int numIndirectionLevels)
227
private CustomTypeMarshallerData GetMarshallerDataForTypePositionInfo(CustomTypeMarshallers marshallers,
TypePositionInfo
info, StubCodeContext context)
240
private ResolvedGenerator CreateCustomNativeTypeMarshaller(
TypePositionInfo
info, StubCodeContext context, NativeMarshallingAttributeInfo marshalInfo)
303
TypePositionInfo
info,
308
var
elementInfo = new TypePositionInfo(marshallerData.CollectionElementType, marshallerData.CollectionElementMarshallingInfo)
461
private static FreeStrategy GetFreeStrategy(
TypePositionInfo
info, StubCodeContext context)
487
private static ElementsMarshalling CreateElementsMarshalling(CustomTypeMarshallerData marshallerData,
TypePositionInfo
elementInfo, IMarshallingGenerator elementMarshaller, TypeSyntax unmanagedElementType, IElementsMarshallingCollectionSource collectionSource)
504
private static bool ElementTypeIsSometimesNonBlittable(
TypePositionInfo
elementInfo)
522
private GeneratorDiagnostic.NotSupported? ValidateCustomNativeTypeMarshallingSupported(
TypePositionInfo
info, StubCodeContext context, NativeMarshallingAttributeInfo marshalInfo)
Marshalling\BlittableMarshaller.cs (6)
14
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
19
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
24
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
37
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
97
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context)
102
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\BoolMarshaller.cs (6)
29
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
35
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
40
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
50
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
98
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
100
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\BreakingChangeDetector.cs (1)
17
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
Marshalling\ByValueContentsMarshalKindValidator.cs (4)
9
/// An <see cref="IMarshallingGeneratorResolver"/> implementation that wraps an inner <see cref="IMarshallingGeneratorResolver"/> instance and validates that the <see cref="
TypePositionInfo
.ByValueContentsMarshalKind"/> on the provided <see cref="
TypePositionInfo
"/> is valid in the current marshalling scenario.
22
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
28
private static ResolvedGenerator ValidateByValueMarshalKind(
TypePositionInfo
info, StubCodeContext context, ResolvedGenerator generator)
Marshalling\ByValueMarshalKindSupportDescriptor.cs (4)
12
public ByValueMarshalKindSupport GetSupport(
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
43
/// Provides an implementation of <see cref="IMarshallingGenerator.SupportsByValueMarshalKind(ByValueContentsMarshalKind,
TypePositionInfo
, StubCodeContext, out GeneratorDiagnostic?)"/> through <see cref="GetSupport(ByValueContentsMarshalKind,
TypePositionInfo
, StubCodeContext, out GeneratorDiagnostic?)"/>
72
public ByValueMarshalKindSupport GetSupport(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\CharMarshaller.cs (7)
18
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
36
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
42
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
47
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
123
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context)
129
private static bool IsPinningPathSupported(
TypePositionInfo
info, StubCodeContext context)
137
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\CharMarshallingGeneratorResolver.cs (2)
24
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
34
private ResolvedGenerator CreateCharMarshaller(
TypePositionInfo
info, StubCodeContext context)
Marshalling\CompositeMarshallingGeneratorResolver.cs (1)
26
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context)
Marshalling\CustomTypeMarshallingGenerator.cs (7)
26
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
31
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
36
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
41
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
106
private bool ShouldGenerateByValueOutMarshalling(
TypePositionInfo
info, StubCodeContext context)
115
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context)
120
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\DelegateMarshaller.cs (6)
15
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
20
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
25
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
30
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
93
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
95
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\ElementsMarshalling.cs (36)
17
InvocationExpressionSyntax GetUnmanagedValuesDestination(
TypePositionInfo
info, StubCodeContext context);
18
InvocationExpressionSyntax GetManagedValuesSource(
TypePositionInfo
info, StubCodeContext context);
19
InvocationExpressionSyntax GetUnmanagedValuesSource(
TypePositionInfo
info, StubCodeContext context);
20
InvocationExpressionSyntax GetManagedValuesDestination(
TypePositionInfo
info, StubCodeContext context);
37
public StatementSyntax GenerateClearUnmanagedDestination(
TypePositionInfo
info, StubCodeContext context)
50
public StatementSyntax GenerateClearManagedValuesDestination(
TypePositionInfo
info, StubCodeContext context)
58
public abstract StatementSyntax GenerateSetupStatement(
TypePositionInfo
info, StubCodeContext context);
59
public abstract StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
TypePositionInfo
info, StubCodeContext context);
60
public abstract StatementSyntax GenerateMarshalStatement(
TypePositionInfo
info, StubCodeContext context);
61
public abstract StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context);
63
public abstract StatementSyntax GenerateUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context);
64
public abstract StatementSyntax GenerateElementCleanupStatement(
TypePositionInfo
info, StubCodeContext context);
71
public static StatementSyntax GetNumElementsAssignmentFromManagedValuesSource(this IElementsMarshallingCollectionSource source,
TypePositionInfo
info, StubCodeContext context)
85
public static StatementSyntax GetNumElementsAssignmentFromManagedValuesDestination(this IElementsMarshallingCollectionSource source,
TypePositionInfo
info, StubCodeContext context)
115
public override StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
TypePositionInfo
info, StubCodeContext context)
139
public override StatementSyntax GenerateMarshalStatement(
TypePositionInfo
info, StubCodeContext context)
150
public override StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context)
179
public override StatementSyntax GenerateUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context)
209
public override StatementSyntax GenerateElementCleanupStatement(
TypePositionInfo
info, StubCodeContext context) => EmptyStatement();
210
public override StatementSyntax GenerateSetupStatement(
TypePositionInfo
info, StubCodeContext context) => EmptyStatement();
220
private readonly
TypePositionInfo
_elementInfo;
225
TypePositionInfo
elementInfo,
234
public override StatementSyntax GenerateMarshalStatement(
TypePositionInfo
info, StubCodeContext context)
272
public override StatementSyntax GenerateUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context)
298
public override StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
TypePositionInfo
info, StubCodeContext context)
344
public override StatementSyntax GenerateElementCleanupStatement(
TypePositionInfo
info, StubCodeContext context)
387
public override StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
TypePositionInfo
info, StubCodeContext context)
453
TypePositionInfo
info,
456
TypePositionInfo
elementInfo,
458
out
TypePositionInfo
localElementInfo,
487
TypePositionInfo
info,
490
TypePositionInfo
elementInfo,
494
var elementStatements = GenerateElementStages(info, context, elementMarshaller, elementInfo, out var elementSetupSubContext, out
var
localElementInfo, stagesToGeneratePerElement);
524
private static bool UsesLastIndexMarshalled(
TypePositionInfo
info, StubCodeContext context)
539
private static bool ShouldCleanUpAllElements(
TypePositionInfo
info, StubCodeContext context)
548
public override StatementSyntax GenerateSetupStatement(
TypePositionInfo
info, StubCodeContext context)
Marshalling\Forwarder.cs (6)
12
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
17
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
22
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
27
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
32
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => false;
34
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\GeneratorDiagnostic.cs (5)
13
private GeneratorDiagnostic(
TypePositionInfo
typePositionInfo, StubCodeContext stubCodeContext, bool isFatal)
24
public
TypePositionInfo
TypePositionInfo { get; }
30
public sealed record NotSupported(
TypePositionInfo
TypePositionInfo, StubCodeContext Context) : GeneratorDiagnostic(TypePositionInfo, Context, isFatal: true)
47
public sealed record UnnecessaryData(
TypePositionInfo
TypePositionInfo, StubCodeContext StubCodeContext, ImmutableArray<Location> UnnecessaryDataLocations) : GeneratorDiagnostic(TypePositionInfo, StubCodeContext, isFatal: false)
66
public sealed record NotRecommended(
TypePositionInfo
TypePositionInfo, StubCodeContext StubCodeContext) : GeneratorDiagnostic(TypePositionInfo, StubCodeContext, isFatal: false)
Marshalling\ICustomTypeMarshallingStrategy.cs (12)
14
ManagedTypeInfo AsNativeType(
TypePositionInfo
info);
16
IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context);
18
IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context);
20
IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context);
22
IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context);
24
IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context);
26
IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context);
28
IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context);
30
IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context);
32
IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context);
34
IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context);
36
bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context);
Marshalling\IMarshallingGeneratorResolver.cs (1)
17
TypePositionInfo
info,
Marshalling\MarshalAsMarshallingGeneratorResolver.cs (1)
35
TypePositionInfo
info,
Marshalling\MarshallerHelpers.cs (25)
64
public static string GetMarshallerIdentifier(
TypePositionInfo
info, StubCodeContext context)
69
public static string GetManagedSpanIdentifier(
TypePositionInfo
info, StubCodeContext context)
74
public static string GetNativeSpanIdentifier(
TypePositionInfo
info, StubCodeContext context)
79
public static string GetNumElementsIdentifier(
TypePositionInfo
info, StubCodeContext context)
84
public static string GetLastIndexMarshalledIdentifier(
TypePositionInfo
info, StubCodeContext context)
89
internal static bool CanUseCallerAllocatedBuffer(
TypePositionInfo
info, StubCodeContext context)
216
public static IEnumerable<
TypePositionInfo
> GetDependentElementsOfMarshallingInfo(
221
if (nestedCollection.ElementCountInfo is CountElementCountInfo { ElementInfo:
TypePositionInfo
nestedCountElement })
225
if (nestedCountElement.ManagedIndex !=
TypePositionInfo
.UnsetIndex || nestedCountElement.NativeIndex !=
TypePositionInfo
.UnsetIndex)
232
foreach (
TypePositionInfo
nestedElement in GetDependentElementsOfMarshallingInfo(mode.Value.CollectionElementMarshallingInfo))
234
if (nestedElement.ManagedIndex !=
TypePositionInfo
.UnsetIndex || nestedElement.NativeIndex !=
TypePositionInfo
.UnsetIndex)
244
public static StatementSyntax SkipInitOrDefaultInit(
TypePositionInfo
info, StubCodeContext context)
266
public static StatementSyntax DefaultInit(
TypePositionInfo
info, StubCodeContext context)
275
/// Get the marshalling direction for a given <see cref="
TypePositionInfo
"/> in a given <see cref="StubCodeContext"/>.
282
public static MarshalDirection GetMarshalDirection(
TypePositionInfo
info, StubCodeContext context)
337
public static StubCodeContext.Stage GetCleanupStage(
TypePositionInfo
info, StubCodeContext context)
359
public static void ValidateCountInfoAvailableAtCall(MarshalDirection stubDirection,
TypePositionInfo
info, GeneratorDiagnosticsBag generatorDiagnostics, IMethodSymbol symbol, DiagnosticDescriptor outParamDescriptor, DiagnosticDescriptor returnValueDescriptor)
367
|| info.ManagedIndex is
TypePositionInfo
.ReturnIndex)
373
Location location =
TypePositionInfo
.GetLocation(info, symbol);
381
else if (countInfo.ElementInfo.ManagedIndex is
TypePositionInfo
.ReturnIndex)
383
Location location =
TypePositionInfo
.GetLocation(info, symbol);
394
public static SyntaxTokenList GetManagedParameterModifiers(
TypePositionInfo
typeInfo)
437
public static SyntaxToken GetManagedArgumentRefKindKeyword(
TypePositionInfo
typeInfo)
Marshalling\MarshallingGenerator.cs (13)
11
/// An enumeration describing how a <see cref="
TypePositionInfo
"/> should be represented in its corresponding native signature element (parameter, field, or return value).
21
/// The native signature should be the type returned by <see cref="IMarshallingGenerator.AsNativeType(
TypePositionInfo
)"/> passed by value.
26
/// The native signature should be a pointer to the type returned by <see cref="IMarshallingGenerator.AsNativeType(
TypePositionInfo
)"/> passed by value.
32
/// An enumeration describing how a <see cref="
TypePositionInfo
"/> should be represented in its corresponding native signature element (parameter, field, or return value).
42
/// The native identifier provided by <see cref="StubCodeContext.GetIdentifiers(
TypePositionInfo
)"/> should be passed by value.
47
/// The address of the native identifier provided by <see cref="StubCodeContext.GetIdentifiers(
TypePositionInfo
)"/> should be passed by value.
52
/// The native identifier provided by <see cref="StubCodeContext.GetIdentifiers(
TypePositionInfo
)"/> should be cast to the native type.
90
ManagedTypeInfo AsNativeType(
TypePositionInfo
info);
97
SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info);
105
ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context);
119
IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context);
131
bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context);
145
ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic);
Marshalling\MarshallingGeneratorExtensions.cs (7)
20
public static TypeSyntax AsReturnType(this IMarshallingGenerator generator,
TypePositionInfo
info)
36
public static AttributeListSyntax? GenerateAttributesForReturnType(this IMarshallingGenerator generator,
TypePositionInfo
info)
60
public static ParameterSyntax AsParameter(this IMarshallingGenerator generator,
TypePositionInfo
info, StubCodeContext context)
105
private static ParameterSyntax GenerateForwardingParameter(
TypePositionInfo
info, string identifier)
140
public static ArgumentSyntax AsArgument(this IMarshallingGenerator generator,
TypePositionInfo
info, StubCodeContext context)
154
public static ArgumentSyntax AsManagedArgument(this IMarshallingGenerator generator,
TypePositionInfo
info, StubCodeContext context)
164
public static ExpressionSyntax GenerateNativeByRefInitialization(this IMarshallingGenerator generator,
TypePositionInfo
info, StubCodeContext context)
Marshalling\NoMarshallingInfoErrorResolver.cs (1)
15
TypePositionInfo
info,
Marshalling\NotSupportedResolver.cs (1)
8
public ResolvedGenerator Create(
TypePositionInfo
info, StubCodeContext context) =>
Marshalling\StatefulMarshallingStrategy.cs (53)
27
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
32
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
34
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
48
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
62
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
77
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
91
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
106
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
121
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context)
135
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
157
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context)
173
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context)
184
public static string GetMarshallerIdentifier(
TypePositionInfo
info, StubCodeContext context)
206
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
211
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
216
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
221
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
249
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
254
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context)
259
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
264
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context)
269
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
274
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context)
279
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
280
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
285
public InvocationExpressionSyntax GetUnmanagedValuesDestination(
TypePositionInfo
info, StubCodeContext context)
295
public InvocationExpressionSyntax GetManagedValuesSource(
TypePositionInfo
info, StubCodeContext context)
305
public InvocationExpressionSyntax GetUnmanagedValuesSource(
TypePositionInfo
info, StubCodeContext context)
317
public InvocationExpressionSyntax GetManagedValuesDestination(
TypePositionInfo
info, StubCodeContext context)
355
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
357
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
371
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
385
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
387
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
416
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
417
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
418
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
419
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
447
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
483
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
485
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
500
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
502
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
519
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
535
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
537
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateMarshalStatements(info, context);
539
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
540
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
541
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
542
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateSetupStatements(info, context);
544
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalStatements(info, context);
546
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
548
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.UsesNativeIdentifier(info, context);
Marshalling\StatelessMarshallingStrategy.cs (64)
29
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
34
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
36
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
38
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
40
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
60
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
99
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
104
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
124
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context)
129
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
134
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context)
139
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context)
163
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
164
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateCleanupCallerAllocatedResourcesStatements(info, context);
165
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateCleanupCalleeAllocatedResourcesStatements(info, context);
166
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
168
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
249
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
250
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
251
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateSetupStatements(info, context);
252
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
253
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalStatements(info, context);
254
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.UsesNativeIdentifier(info, context);
256
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
270
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
272
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
291
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
310
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
311
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateMarshalStatements(info, context);
312
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
313
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
314
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
315
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateSetupStatements(info, context);
316
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
317
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalStatements(info, context);
318
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.UsesNativeIdentifier(info, context);
339
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
344
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
358
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
378
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
408
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
438
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
439
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
440
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
441
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
459
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
461
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
496
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
508
public InvocationExpressionSyntax GetUnmanagedValuesDestination(
TypePositionInfo
info, StubCodeContext context)
526
public InvocationExpressionSyntax GetManagedValuesSource(
TypePositionInfo
info, StubCodeContext context)
539
public InvocationExpressionSyntax GetUnmanagedValuesSource(
TypePositionInfo
info, StubCodeContext context)
557
public InvocationExpressionSyntax GetManagedValuesDestination(
TypePositionInfo
info, StubCodeContext context)
599
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _unmanagedType;
601
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
635
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
668
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _spaceMarshallingStrategy.GenerateGuaranteedUnmarshalStatements(info, context);
670
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
700
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _spaceMarshallingStrategy.GenerateNotifyForSuccessfulInvokeStatements(info, context);
701
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _spaceMarshallingStrategy.GeneratePinnedMarshalStatements(info, context);
702
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _spaceMarshallingStrategy.GeneratePinStatements(info, context);
704
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
715
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => Array.Empty<StatementSyntax>();
717
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context)
754
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => true;
Marshalling\StaticPinnableManagedValueMarshaller.cs (8)
24
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context)
42
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info)
47
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info)
52
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
62
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context)
71
private static bool IsPinningPathSupported(
TypePositionInfo
info, StubCodeContext context)
76
private IEnumerable<StatementSyntax> GeneratePinningPath(
TypePositionInfo
info, StubCodeContext context)
103
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
Marshalling\UnmanagedToManagedOwnershipTrackingStrategy.cs (35)
13
/// Marshalling strategy that introduces a variable to hold the initial value of the provided <see cref="
TypePositionInfo
"/> and a variable to track if the original value has been replaced.
25
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
27
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateCleanupCallerAllocatedResourcesStatements(info, context);
28
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateCleanupCalleeAllocatedResourcesStatements(info, context);
30
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
31
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context)
48
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
49
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
51
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
52
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context)
73
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
75
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalStatements(info, context);
76
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.UsesNativeIdentifier(info, context);
92
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _innerMarshaller.AsNativeType(info);
94
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
107
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
TypePositionInfo
info, StubCodeContext context)
120
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateGuaranteedUnmarshalStatements(info, context);
121
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateMarshalStatements(info, context);
123
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(info, context);
124
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinnedMarshalStatements(info, context);
126
public IEnumerable<StatementSyntax> GeneratePinStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GeneratePinStatements(info, context);
127
public IEnumerable<StatementSyntax> GenerateSetupStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateSetupStatements(info, context);
129
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalCaptureStatements(info, context);
131
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.GenerateUnmarshalStatements(info, context);
132
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _innerMarshaller.UsesNativeIdentifier(info, context);
136
/// Marshalling strategy to cache the initial value of a given <see cref="
TypePositionInfo
"/> in a local variable and cleanup that value in the cleanup stage.
148
public ManagedTypeInfo AsNativeType(
TypePositionInfo
info) => _inner.AsNativeType(info);
149
public IEnumerable<StatementSyntax> Generate(
TypePositionInfo
info, StubCodeContext context)
179
public SignatureBehavior GetNativeSignatureBehavior(
TypePositionInfo
info) => _inner.GetNativeSignatureBehavior(info);
180
public ValueBoundaryBehavior GetValueBoundaryBehavior(
TypePositionInfo
info, StubCodeContext context) => _inner.GetValueBoundaryBehavior(info, context);
181
public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind,
TypePositionInfo
info, StubCodeContext context, out GeneratorDiagnostic? diagnostic)
183
public bool UsesNativeIdentifier(
TypePositionInfo
info, StubCodeContext context) => _inner.UsesNativeIdentifier(info, context);
203
public override (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
209
public override string GetAdditionalIdentifier(
TypePositionInfo
info, string name) => _innerContext.GetAdditionalIdentifier(info, name);
219
public static StatementSyntax DeclareOriginalValueIdentifier(
TypePositionInfo
info, StubCodeContext context, ManagedTypeInfo nativeType)
MarshallingAttributeInfo.cs (3)
100
public sealed record CountElementCountInfo(
TypePositionInfo
ElementInfo) : CountInfo
105
public sealed record SizeAndParamIndexInfo(int ConstSize,
TypePositionInfo
? ParamAtIndex) : CountInfo
109
public const
TypePositionInfo
UnspecifiedParam = null;
MarshallingInfoParser.cs (22)
109
/// Get a <see cref="
TypePositionInfo
"/> instance for the given element name.
112
/// <param name="elementName">The element name to retrieve a <see cref="
TypePositionInfo
"/> instance for.</param>
113
/// <param name="marshallingInfoCallback">A callback to retrieve marshalling info to put into the <see cref="
TypePositionInfo
"/>.</param>
116
/// <returns><c>true</c> if a <see cref="
TypePositionInfo
"/> instance could be created for the type; otherwise <c>false</c></returns>
117
bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out
TypePositionInfo
info);
119
/// Get a <see cref="
TypePositionInfo
"/> instance for the given element index.
122
/// <param name="paramIndex">The element index to retrieve a <see cref="
TypePositionInfo
"/> instance for.</param>
123
/// <param name="marshallingInfoCallback">A callback to retrieve marshalling info to put into the <see cref="
TypePositionInfo
"/>.</param>
126
/// <returns><c>true</c> if a <see cref="
TypePositionInfo
"/> instance could be created for the type; otherwise <c>false</c></returns>
127
bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out
TypePositionInfo
info);
136
/// Get a <see cref="
TypePositionInfo
"/> instance for the given element name.
139
/// <param name="elementName">The element name to retrieve a <see cref="
TypePositionInfo
"/> instance for.</param>
140
/// <param name="marshallingInfoCallback">A callback to retrieve marshalling info to put into the <see cref="
TypePositionInfo
"/>.</param>
142
/// <returns><c>true</c> if a <see cref="
TypePositionInfo
"/> instance could be created for the type; otherwise <c>false</c></returns>
143
public static bool TryGetInfoForElementName(this IElementInfoProvider provider, AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, out
TypePositionInfo
info)
149
/// Get a <see cref="
TypePositionInfo
"/> instance for the given element index.
152
/// <param name="paramIndex">The element index to retrieve a <see cref="
TypePositionInfo
"/> instance for.</param>
153
/// <param name="marshallingInfoCallback">A callback to retrieve marshalling info to put into the <see cref="
TypePositionInfo
"/>.</param>
155
/// <returns><c>true</c> if a <see cref="
TypePositionInfo
"/> instance could be created for the type; otherwise <c>false</c></returns>
156
public static bool TryGetInfoForParamIndex(this IElementInfoProvider provider, AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, out
TypePositionInfo
info)
298
public bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, [NotNullWhen(true)] out
TypePositionInfo
? info)
325
public bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, [NotNullWhen(true)] out
TypePositionInfo
? info)
MarshalUsingAttributeParser.cs (1)
103
if (!elementInfoProvider.TryGetInfoForElementName(attributeData, elementName, marshallingInfoCallback, out
TypePositionInfo
elementInfo))
MethodSignatureElementInfoProvider.cs (5)
29
public bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out
TypePositionInfo
info)
37
ManagedIndex =
TypePositionInfo
.ReturnIndex
47
info =
TypePositionInfo
.CreateForParameter(
60
public bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out
TypePositionInfo
info)
69
info =
TypePositionInfo
.CreateForParameter(
NativeToManagedStubCodeContext.cs (1)
30
public override (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
SignatureContext.cs (15)
30
public ImmutableArray<
TypePositionInfo
> ElementTypeInformation { get; init; }
32
public IEnumerable<
TypePositionInfo
> ManagedParameters => ElementTypeInformation.Where(tpi => !
TypePositionInfo
.IsSpecialIndex(tpi.ManagedIndex));
40
foreach (
TypePositionInfo
typeInfo in ElementTypeInformation)
42
if (typeInfo.ManagedIndex !=
TypePositionInfo
.UnsetIndex
43
&& typeInfo.ManagedIndex !=
TypePositionInfo
.ReturnIndex)
62
ImmutableArray<
TypePositionInfo
> typeInfos = GenerateTypeInformation(method, marshallingInfoParser, env);
101
private static ImmutableArray<
TypePositionInfo
> GenerateTypeInformation(
108
ImmutableArray<
TypePositionInfo
>.Builder typeInfos = ImmutableArray.CreateBuilder<
TypePositionInfo
>();
113
var
typeInfo =
TypePositionInfo
.CreateForParameter(param, marshallingInfo, env.Compilation);
122
TypePositionInfo
retTypeInfo = new(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(method.ReturnType), marshallingInfoParser.ParseMarshallingInfo(method.ReturnType, method.GetReturnTypeAttributes()));
125
ManagedIndex =
TypePositionInfo
.ReturnIndex,
126
NativeIndex =
TypePositionInfo
.ReturnIndex,
StubCodeContext.cs (4)
45
/// <see cref="IMarshallingGenerator.AsArgument(
TypePositionInfo
)"/> should provide the
127
public virtual (string managed, string native) GetIdentifiers(
TypePositionInfo
info)
138
public virtual string GetAdditionalIdentifier(
TypePositionInfo
info, string name)
148
public bool IsInStubReturnPosition(
TypePositionInfo
info)
TypePositionInfo.cs (3)
83
public static
TypePositionInfo
CreateForParameter(IParameterSymbol paramSymbol, MarshallingInfo marshallingInfo, Compilation compilation)
87
var
typeInfo = new TypePositionInfo(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(paramSymbol.Type), marshallingInfo)
100
public static Location GetLocation(
TypePositionInfo
info, IMethodSymbol methodSymbol)
VariableDeclarations.cs (2)
23
TypePositionInfo
info = marshaller.TypeInfo;
86
TypePositionInfo
info = marshaller.TypeInfo;