4 types derived from StubIdentifierContext
Microsoft.Interop.SourceGeneration (4)
DefaultIdentifierContext.cs (1)
8
public sealed record DefaultIdentifierContext :
StubIdentifierContext
LinearCollectionElementIdentifierContext.cs (1)
9
internal sealed record LinearCollectionElementIdentifierContext :
StubIdentifierContext
Marshalling\GenericFriendlyPointerIdentifierContext.cs (1)
11
internal sealed record GenericFriendlyPointerIdentifierContext :
StubIdentifierContext
Marshalling\UnmanagedToManagedOwnershipTrackingStrategy.cs (1)
181
file sealed record OwnedValueCodeContext :
StubIdentifierContext
340 references to StubIdentifierContext
Microsoft.Interop.ComInterfaceGenerator (13)
Marshallers\ComInterfaceDispatchMarshallingResolver.cs (2)
40
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
42
if (context.CurrentStage !=
StubIdentifierContext
.Stage.Unmarshal)
Marshallers\KeepAliveThisMarshaller.cs (2)
18
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
20
if (context.CurrentStage !=
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke)
Marshallers\ManagedHResultExceptionGeneratorResolver.cs (4)
38
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
42
if (context.CurrentStage !=
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke)
66
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
70
if (context.CurrentStage !=
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke)
Marshallers\ObjectUnwrapperResolver.cs (2)
34
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
38
if (context.CurrentStage !=
StubIdentifierContext
.Stage.Unmarshal)
Marshallers\StructAsHResultMarshallerFactory.cs (3)
32
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
38
case
StubIdentifierContext
.Stage.Marshal:
56
case
StubIdentifierContext
.Stage.Unmarshal:
Microsoft.Interop.JavaScript.JSImportGenerator (17)
Marshaling\BaseJSGenerator.cs (2)
37
public virtual IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
40
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Setup
Marshaling\FuncJSGenerator.cs (5)
16
public override IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
30
if (context.CurrentStage ==
StubIdentifierContext
.Stage.UnmarshalCapture && CodeContext.Direction == MarshalDirection.ManagedToUnmanaged && TypeInfo.IsManagedReturnPosition)
35
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Marshal && CodeContext.Direction == MarshalDirection.UnmanagedToManaged && TypeInfo.IsManagedReturnPosition)
40
if (context.CurrentStage ==
StubIdentifierContext
.Stage.PinnedMarshal && CodeContext.Direction == MarshalDirection.ManagedToUnmanaged && !TypeInfo.IsManagedReturnPosition)
45
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Unmarshal && CodeContext.Direction == MarshalDirection.UnmanagedToManaged && !TypeInfo.IsManagedReturnPosition)
Marshaling\ImplicitArgumentGenerator.cs (2)
17
public override IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
19
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Setup)
Marshaling\PrimitiveJSGenerator.cs (3)
15
public override IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
26
if (context.CurrentStage ==
StubIdentifierContext
.Stage.UnmarshalCapture && marshalDirection is MarshalDirection.UnmanagedToManaged or MarshalDirection.Bidirectional)
31
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Marshal && marshalDirection is MarshalDirection.ManagedToUnmanaged or MarshalDirection.Bidirectional)
Marshaling\TaskJSGenerator.cs (5)
14
public override IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
25
if (context.CurrentStage ==
StubIdentifierContext
.Stage.UnmarshalCapture && CodeContext.Direction == MarshalDirection.ManagedToUnmanaged && TypeInfo.IsManagedReturnPosition)
32
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Marshal && CodeContext.Direction == MarshalDirection.UnmanagedToManaged && TypeInfo.IsManagedReturnPosition)
39
if (context.CurrentStage ==
StubIdentifierContext
.Stage.PinnedMarshal && CodeContext.Direction == MarshalDirection.ManagedToUnmanaged && !TypeInfo.IsManagedReturnPosition)
46
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Unmarshal && CodeContext.Direction == MarshalDirection.UnmanagedToManaged && !TypeInfo.IsManagedReturnPosition)
Microsoft.Interop.SourceGeneration (310)
BoundGenerators.cs (1)
205
public (ParameterListSyntax ParameterList, TypeSyntax ReturnType, AttributeListSyntax? ReturnTypeAttributes) GenerateTargetMethodSignatureData(
StubIdentifierContext
context)
GeneratedStatements.cs (34)
29
public static GeneratedStatements Create(BoundGenerators marshallers,
StubIdentifierContext
context)
33
Setup = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Setup }),
34
Marshal = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Marshal }),
35
Pin = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Pin }).Cast<FixedStatementSyntax>().ToImmutableArray(),
36
PinnedMarshal = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.PinnedMarshal }),
38
Unmarshal = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.UnmarshalCapture })
39
.AddRange(GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Unmarshal })),
40
NotifyForSuccessfulInvoke = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke }),
41
GuaranteedUnmarshal = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.GuaranteedUnmarshal }),
42
CleanupCallerAllocated = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.CleanupCallerAllocated }),
43
CleanupCalleeAllocated = GenerateStatementsForStubContext(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.CleanupCalleeAllocated }),
48
public static GeneratedStatements Create(BoundGenerators marshallers, StubCodeContext codeContext,
StubIdentifierContext
context, ExpressionSyntax expressionToInvoke)
56
InvokeStatement = GenerateStatementForNativeInvoke(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Invoke }, expressionToInvoke)
63
InvokeStatement = GenerateStatementForManagedInvoke(marshallers, context with { CurrentStage =
StubIdentifierContext
.Stage.Invoke }, expressionToInvoke)
72
private static ImmutableArray<StatementSyntax> GenerateStatementsForStubContext(BoundGenerators marshallers,
StubIdentifierContext
context)
91
private static ExpressionStatementSyntax GenerateStatementForNativeInvoke(BoundGenerators marshallers,
StubIdentifierContext
context, ExpressionSyntax expressionToInvoke)
93
if (context.CurrentStage !=
StubIdentifierContext
.Stage.Invoke)
125
private static ExpressionStatementSyntax GenerateStatementForManagedInvoke(BoundGenerators marshallers,
StubIdentifierContext
context, ExpressionSyntax expressionToInvoke)
127
if (context.CurrentStage !=
StubIdentifierContext
.Stage.Invoke)
152
private static ImmutableArray<CatchClauseSyntax> GenerateCatchClauseForManagedException(BoundGenerators marshallers,
StubIdentifierContext
context)
165
managedExceptionMarshaller.Generate(context with { CurrentStage =
StubIdentifierContext
.Stage.Marshal }));
167
managedExceptionMarshaller.Generate(context with { CurrentStage =
StubIdentifierContext
.Stage.PinnedMarshal }));
175
private static SyntaxTriviaList GenerateStageTrivia(
StubIdentifierContext
.Stage stage)
179
StubIdentifierContext
.Stage.Setup => "Perform required setup.",
180
StubIdentifierContext
.Stage.Marshal => "Convert managed data to native data.",
181
StubIdentifierContext
.Stage.Pin => "Pin data in preparation for calling the P/Invoke.",
182
StubIdentifierContext
.Stage.PinnedMarshal => "Convert managed data to native data that requires the managed data to be pinned.",
183
StubIdentifierContext
.Stage.Invoke => "Call the P/Invoke.",
184
StubIdentifierContext
.Stage.UnmarshalCapture => "Capture the native data into marshaller instances in case conversion to managed data throws an exception.",
185
StubIdentifierContext
.Stage.Unmarshal => "Convert native data to managed data.",
186
StubIdentifierContext
.Stage.CleanupCallerAllocated => "Perform cleanup of caller allocated resources.",
187
StubIdentifierContext
.Stage.CleanupCalleeAllocated => "Perform cleanup of callee allocated resources.",
188
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke => "Keep alive any managed objects that need to stay alive across the call.",
189
StubIdentifierContext
.Stage.GuaranteedUnmarshal => "Convert native data to managed data even in the case of an exception during the non-cleanup phases.",
LinearCollectionElementIdentifierContext.cs (3)
11
private readonly
StubIdentifierContext
_globalContext;
20
/// Create a <see cref="
StubIdentifierContext
"/> for marshalling elements of an collection.
28
StubIdentifierContext
globalContext,
ManagedToNativeStubGenerator.cs (1)
66
_context = new DefaultIdentifierContext(ReturnIdentifier, $"{ReturnIdentifier}{
StubIdentifierContext
.GeneratedNativeIdentifierSuffix}", MarshalDirection.ManagedToUnmanaged)
Marshalling\BlittableMarshaller.cs (5)
37
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
46
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Pin)
69
case
StubIdentifierContext
.Stage.Setup:
71
case
StubIdentifierContext
.Stage.Marshal:
82
case
StubIdentifierContext
.Stage.Unmarshal:
Marshalling\BoolMarshaller.cs (4)
50
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
56
case
StubIdentifierContext
.Stage.Setup:
58
case
StubIdentifierContext
.Stage.Marshal:
75
case
StubIdentifierContext
.Stage.Unmarshal:
Marshalling\CharMarshaller.cs (5)
47
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
53
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Pin)
86
case
StubIdentifierContext
.Stage.Setup:
88
case
StubIdentifierContext
.Stage.Marshal:
104
case
StubIdentifierContext
.Stage.Unmarshal:
Marshalling\CustomTypeMarshallingGenerator.cs (11)
26
public IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
33
case
StubIdentifierContext
.Stage.Setup:
35
case
StubIdentifierContext
.Stage.Marshal:
42
case
StubIdentifierContext
.Stage.Pin:
48
case
StubIdentifierContext
.Stage.PinnedMarshal:
54
case
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke:
60
case
StubIdentifierContext
.Stage.UnmarshalCapture:
66
case
StubIdentifierContext
.Stage.Unmarshal:
73
case
StubIdentifierContext
.Stage.GuaranteedUnmarshal:
80
case
StubIdentifierContext
.Stage.CleanupCallerAllocated:
82
case
StubIdentifierContext
.Stage.CleanupCalleeAllocated:
Marshalling\DelegateMarshaller.cs (5)
30
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
36
case
StubIdentifierContext
.Stage.Setup:
38
case
StubIdentifierContext
.Stage.Marshal:
57
case
StubIdentifierContext
.Stage.Unmarshal:
79
case
StubIdentifierContext
.Stage.NotifyForSuccessfulInvoke:
Marshalling\ElementsMarshalling.cs (51)
21
InvocationExpressionSyntax GetUnmanagedValuesDestination(
StubIdentifierContext
context);
22
InvocationExpressionSyntax GetManagedValuesSource(
StubIdentifierContext
context);
23
InvocationExpressionSyntax GetUnmanagedValuesSource(
StubIdentifierContext
context);
24
InvocationExpressionSyntax GetManagedValuesDestination(
StubIdentifierContext
context);
41
public StatementSyntax GenerateClearUnmanagedDestination(
StubIdentifierContext
context)
54
public StatementSyntax GenerateClearManagedValuesDestination(
StubIdentifierContext
context)
62
public static ExpressionSyntax GenerateNumElementsExpression(CountInfo count, bool countInfoRequiresCast, StubCodeContext codeContext,
StubIdentifierContext
context)
102
public abstract StatementSyntax GenerateSetupStatement(
StubIdentifierContext
context);
103
public abstract StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
StubIdentifierContext
context);
104
public abstract StatementSyntax GenerateMarshalStatement(
StubIdentifierContext
context);
105
public abstract StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
StubIdentifierContext
context);
107
public abstract StatementSyntax GenerateUnmarshalStatement(
StubIdentifierContext
context);
108
public abstract StatementSyntax GenerateElementCleanupStatement(
StubIdentifierContext
context);
113
public static StatementSyntax GetNumElementsAssignmentFromManagedValuesSource(this IElementsMarshallingCollectionSource source, TypePositionInfo info,
StubIdentifierContext
context)
127
public static StatementSyntax GetNumElementsAssignmentFromManagedValuesDestination(this IElementsMarshallingCollectionSource source, TypePositionInfo info,
StubIdentifierContext
context)
150
public override StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
StubIdentifierContext
context)
174
public override StatementSyntax GenerateMarshalStatement(
StubIdentifierContext
context)
185
public override StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
StubIdentifierContext
context)
214
public override StatementSyntax GenerateUnmarshalStatement(
StubIdentifierContext
context)
244
public override StatementSyntax GenerateElementCleanupStatement(
StubIdentifierContext
context) => EmptyStatement();
245
public override StatementSyntax GenerateSetupStatement(
StubIdentifierContext
context) => EmptyStatement();
256
public override StatementSyntax GenerateMarshalStatement(
StubIdentifierContext
context)
290
StubIdentifierContext
.Stage.Marshal));
294
public override StatementSyntax GenerateUnmarshalStatement(
StubIdentifierContext
context)
316
StubIdentifierContext
.Stage.UnmarshalCapture,
StubIdentifierContext
.Stage.Unmarshal));
319
public override StatementSyntax GenerateManagedToUnmanagedByValueOutUnmarshalStatement(
StubIdentifierContext
context)
361
StubIdentifierContext
.Stage.UnmarshalCapture,
StubIdentifierContext
.Stage.Unmarshal));
364
public override StatementSyntax GenerateElementCleanupStatement(
StubIdentifierContext
context)
405
public override StatementSyntax GenerateUnmanagedToManagedByValueOutMarshalStatement(
StubIdentifierContext
context)
445
StubIdentifierContext
.Stage[] stagesToGenerate;
450
stagesToGenerate = [
StubIdentifierContext
.Stage.Marshal,
StubIdentifierContext
.Stage.PinnedMarshal];
454
stagesToGenerate = [
StubIdentifierContext
.Stage.Marshal,
StubIdentifierContext
.Stage.PinnedMarshal,
StubIdentifierContext
.Stage.CleanupCallerAllocated,
StubIdentifierContext
.Stage.CleanupCalleeAllocated];
469
StubIdentifierContext
context,
472
params
StubIdentifierContext
.Stage[] stagesToGeneratePerElement)
484
CurrentStage =
StubIdentifierContext
.Stage.Setup,
490
StubIdentifierContext
identifierContext = elementSetupSubContext;
501
foreach (
StubIdentifierContext
.Stage stage in stagesToGeneratePerElement)
503
var
elementIdentifierContext = identifierContext with { CurrentStage = stage };
513
elementStatements.InsertRange(0, elementMarshaller.Generate(identifierContext with { CurrentStage =
StubIdentifierContext
.Stage.Setup }));
536
if (stagesToGeneratePerElement.Any(stage => stage is
StubIdentifierContext
.Stage.Marshal or
StubIdentifierContext
.Stage.PinnedMarshal))
559
StubIdentifierContext
context,
562
params
StubIdentifierContext
.Stage[] stagesToGeneratePerElement)
574
if (UsesLastIndexMarshalled(CollectionSource.TypeInfo, CollectionSource.CodeContext) && stagesToGeneratePerElement.Contains(
StubIdentifierContext
.Stage.Marshal))
608
public override StatementSyntax GenerateSetupStatement(
StubIdentifierContext
context)
Marshalling\Forwarder.cs (1)
27
public IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
Marshalling\GenericFriendlyPointerIdentifierContext.cs (2)
13
private readonly
StubIdentifierContext
_innerContext;
17
public GenericFriendlyPointerIdentifierContext(
StubIdentifierContext
inner, TypePositionInfo adaptedInfo, string baseIdentifier)
Marshalling\ICustomTypeMarshallingStrategy.cs (10)
20
IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context);
22
IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context);
24
IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context);
26
IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context);
28
IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context);
30
IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context);
32
IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context);
34
IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context);
36
IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context);
38
IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context);
Marshalling\MarshallerHelpers.cs (13)
64
public static string GetMarshallerIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
69
public static string GetManagedSpanIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
74
public static string GetNativeSpanIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
79
public static string GetNumElementsIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
84
public static string GetLastIndexMarshalledIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
94
public static ExpressionSyntax GetIndexedManagedElementExpression(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context)
233
public static StatementSyntax SkipInitOrDefaultInit(TypePositionInfo info,
StubIdentifierContext
context)
255
public static StatementSyntax DefaultInit(TypePositionInfo info,
StubIdentifierContext
context)
326
public static
StubIdentifierContext
.Stage GetCleanupStage(TypePositionInfo info, StubCodeContext context)
332
return
StubIdentifierContext
.Stage.CleanupCallerAllocated;
336
MarshalDirection.UnmanagedToManaged =>
StubIdentifierContext
.Stage.CleanupCalleeAllocated,
337
MarshalDirection.ManagedToUnmanaged =>
StubIdentifierContext
.Stage.CleanupCallerAllocated,
338
MarshalDirection.Bidirectional =>
StubIdentifierContext
.Stage.CleanupCallerAllocated,
Marshalling\MarshallingGenerator.cs (11)
42
/// The native identifier provided by <see cref="
StubIdentifierContext
.GetIdentifiers(TypePositionInfo)"/> should be passed by value.
47
/// The address of the native identifier provided by <see cref="
StubIdentifierContext
.GetIdentifiers(TypePositionInfo)"/> should be passed by value.
52
/// The native identifier provided by <see cref="
StubIdentifierContext
.GetIdentifiers(TypePositionInfo)"/> should be cast to the native type.
119
/// <see cref="
StubIdentifierContext
.CurrentStage" /> of <paramref name="context"/>.
120
/// For <see cref="
StubIdentifierContext
.Stage.Pin"/>, any statements not of type
123
IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context);
132
/// <see cref="
StubIdentifierContext
.CurrentStage" /> of <paramref name="context"/> may not be valid.
170
public IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context) => unbound.Generate(TypeInfo, CodeContext, context);
228
/// <see cref="
StubIdentifierContext
.CurrentStage" /> of <paramref name="context"/>.
229
/// For <see cref="
StubIdentifierContext
.Stage.Pin"/>, any statements not of type
232
IEnumerable<StatementSyntax> Generate(TypePositionInfo info, StubCodeContext codeContext,
StubIdentifierContext
context);
Marshalling\MarshallingGeneratorExtensions.cs (4)
59
public static ParameterSyntax AsParameter(this IBoundMarshallingGenerator generator,
StubIdentifierContext
context)
139
public static ArgumentSyntax AsArgument(this IBoundMarshallingGenerator generator,
StubIdentifierContext
context)
154
public static ArgumentSyntax AsManagedArgument(this IBoundMarshallingGenerator generator,
StubIdentifierContext
context)
165
public static ExpressionSyntax GenerateNativeByRefInitialization(this IBoundMarshallingGenerator generator,
StubIdentifierContext
context)
Marshalling\StatefulMarshallingStrategy.cs (49)
25
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
27
if (MarshallerHelpers.GetCleanupStage(info, stubContext) is not
StubIdentifierContext
.Stage.CleanupCallerAllocated)
39
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
41
if (MarshallerHelpers.GetCleanupStage(info, stubContext) is not
StubIdentifierContext
.Stage.CleanupCalleeAllocated)
53
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context)
68
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
82
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context)
97
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
112
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context)
126
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
148
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context)
164
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context)
175
public static string GetMarshallerIdentifier(TypePositionInfo info,
StubIdentifierContext
context)
188
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
193
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
198
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
226
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context)
231
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context)
236
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
241
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context)
246
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
257
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
258
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
267
public InvocationExpressionSyntax GetUnmanagedValuesDestination(
StubIdentifierContext
context)
277
public InvocationExpressionSyntax GetManagedValuesSource(
StubIdentifierContext
context)
287
public InvocationExpressionSyntax GetUnmanagedValuesSource(
StubIdentifierContext
context)
299
public InvocationExpressionSyntax GetManagedValuesDestination(
StubIdentifierContext
context)
325
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
339
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
353
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
355
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
384
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
385
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
386
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
387
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
422
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
458
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
474
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
481
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCallerAllocated)
491
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
498
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCalleeAllocated)
508
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
510
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateMarshalStatements(context);
512
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
513
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
514
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
515
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateSetupStatements(context);
517
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalStatements(context);
519
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
Marshalling\StatelessMarshallingStrategy.cs (60)
27
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
29
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
31
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context)
51
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
98
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context)
103
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
123
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context)
128
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
133
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context)
138
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context)
152
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateCleanupCallerAllocatedResourcesStatements(context);
153
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateCleanupCalleeAllocatedResourcesStatements(context);
154
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
156
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
237
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
238
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
239
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateSetupStatements(context);
240
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
241
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalStatements(context);
244
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
257
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
259
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCallerAllocated)
276
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
278
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCalleeAllocated)
295
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
296
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateMarshalStatements(context);
297
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
298
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
299
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
300
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateSetupStatements(context);
301
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
302
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalStatements(context);
316
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
319
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCallerAllocated)
335
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
337
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCalleeAllocated)
355
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context)
385
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
415
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
416
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
417
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
418
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
436
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
438
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
482
public InvocationExpressionSyntax GetUnmanagedValuesDestination(
StubIdentifierContext
context)
500
public InvocationExpressionSyntax GetManagedValuesSource(
StubIdentifierContext
context)
513
public InvocationExpressionSyntax GetUnmanagedValuesSource(
StubIdentifierContext
context)
531
public InvocationExpressionSyntax GetManagedValuesDestination(
StubIdentifierContext
context)
565
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
607
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is
StubIdentifierContext
.Stage.CleanupCallerAllocated)
616
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
640
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is
StubIdentifierContext
.Stage.CleanupCallerAllocated)
649
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => spaceMarshallingStrategy.GenerateGuaranteedUnmarshalStatements(context);
651
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
681
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => spaceMarshallingStrategy.GenerateNotifyForSuccessfulInvokeStatements(context);
682
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => spaceMarshallingStrategy.GeneratePinnedMarshalStatements(context);
683
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => spaceMarshallingStrategy.GeneratePinStatements(context);
685
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
696
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => Array.Empty<StatementSyntax>();
698
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context)
Marshalling\StaticPinnableManagedValueMarshaller.cs (3)
44
public IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
72
private IEnumerable<StatementSyntax> GeneratePinningPath(
StubIdentifierContext
context)
74
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Pin)
Marshalling\UnmanagedToManagedOwnershipTrackingStrategy.cs (31)
27
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateCleanupCallerAllocatedResourcesStatements(context);
28
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateCleanupCalleeAllocatedResourcesStatements(context);
30
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
31
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context)
48
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
49
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
51
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
52
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context)
73
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
75
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalStatements(context);
80
/// in the <see cref="
StubIdentifierContext
.Stage.CleanupCallerAllocated"/> stage.
92
public IEnumerable<StatementSyntax> GenerateCleanupCallerAllocatedResourcesStatements(
StubIdentifierContext
context)
94
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCallerAllocated)
105
public IEnumerable<StatementSyntax> GenerateCleanupCalleeAllocatedResourcesStatements(
StubIdentifierContext
context)
107
if (MarshallerHelpers.GetCleanupStage(TypeInfo, CodeContext) is not
StubIdentifierContext
.Stage.CleanupCalleeAllocated)
118
public IEnumerable<StatementSyntax> GenerateGuaranteedUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateGuaranteedUnmarshalStatements(context);
119
public IEnumerable<StatementSyntax> GenerateMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateMarshalStatements(context);
121
public IEnumerable<StatementSyntax> GenerateNotifyForSuccessfulInvokeStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateNotifyForSuccessfulInvokeStatements(context);
122
public IEnumerable<StatementSyntax> GeneratePinnedMarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinnedMarshalStatements(context);
124
public IEnumerable<StatementSyntax> GeneratePinStatements(
StubIdentifierContext
context) => innerMarshaller.GeneratePinStatements(context);
125
public IEnumerable<StatementSyntax> GenerateSetupStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateSetupStatements(context);
127
public IEnumerable<StatementSyntax> GenerateUnmarshalCaptureStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalCaptureStatements(context);
129
public IEnumerable<StatementSyntax> GenerateUnmarshalStatements(
StubIdentifierContext
context) => innerMarshaller.GenerateUnmarshalStatements(context);
134
/// Useful in scenarios where the value is always owned in all code-paths that reach the <see cref="
StubIdentifierContext
.Stage.CleanupCallerAllocated"/> stage, so additional ownership tracking is extraneous.
149
public IEnumerable<StatementSyntax> Generate(
StubIdentifierContext
context)
151
if (context.CurrentStage ==
StubIdentifierContext
.Stage.Setup)
156
if (context.CurrentStage ==
StubIdentifierContext
.Stage.CleanupCallerAllocated)
171
IEnumerable<StatementSyntax> GenerateStatementsFromInner(
StubIdentifierContext
contextForStage)
183
private readonly
StubIdentifierContext
_innerContext;
185
public OwnedValueCodeContext(
StubIdentifierContext
innerContext)
205
public static StatementSyntax DeclareOriginalValueIdentifier(TypePositionInfo info,
StubIdentifierContext
context, ManagedTypeInfo nativeType)
UnmanagedToManagedStubGenerator.cs (2)
20
private readonly
StubIdentifierContext
_context;
34
_context = new DefaultIdentifierContext(ReturnIdentifier, $"{ReturnIdentifier}{
StubIdentifierContext
.GeneratedNativeIdentifierSuffix}", MarshalDirection.UnmanagedToManaged);
VariableDeclarations.cs (4)
16
public static VariableDeclarations GenerateDeclarationsForManagedToUnmanaged(BoundGenerators marshallers,
StubIdentifierContext
context, bool initializeDeclarations)
55
static void AppendVariableDeclarations(ImmutableArray<LocalDeclarationStatementSyntax>.Builder statementsToUpdate, IBoundMarshallingGenerator marshaller,
StubIdentifierContext
context, bool initializeToDefault)
79
public static VariableDeclarations GenerateDeclarationsForUnmanagedToManaged(BoundGenerators marshallers,
StubIdentifierContext
context, bool initializeDeclarations)
112
static void AppendVariableDeclarations(ImmutableArray<LocalDeclarationStatementSyntax>.Builder statementsToUpdate, IBoundMarshallingGenerator marshaller,
StubIdentifierContext
context, bool initializeToDefault)