77 references to MarshalMode
Microsoft.Interop.LibraryImportGenerator (19)
Analyzers\CustomMarshallerAttributeAnalyzer.cs (19)
28
public const string MarshalModeKey = nameof(
MarshalMode
);
30
public static ImmutableDictionary<string, string> CreateDiagnosticPropertiesForMissingMembersDiagnostic(
MarshalMode
mode, params string[] missingMemberNames)
33
public static ImmutableDictionary<string, string> CreateDiagnosticPropertiesForMissingMembersDiagnostic(
MarshalMode
mode, IEnumerable<string> missingMemberNames)
690
|| !Enum.IsDefined(typeof(
MarshalMode
), (
MarshalMode
)marshalMode))
700
(
MarshalMode
)marshalMode,
708
private void AnalyzeMarshallerType(DiagnosticReporter diagnosticReporter, ITypeSymbol managedType,
MarshalMode
mode, INamedTypeSymbol marshallerType, bool isLinearCollectionMarshaller)
724
private void AnalyzeStatelessMarshallerType(DiagnosticReporter diagnosticReporter, ITypeSymbol managedType,
MarshalMode
mode, INamedTypeSymbol marshallerType, bool isLinearCollectionMarshaller)
747
if (shape.HasFlag(MarshallerShape.CallerAllocatedBuffer) && mode ==
MarshalMode
.ManagedToUnmanagedIn)
762
if (!(shape.HasFlag(MarshallerShape.ToUnmanaged) || (mode ==
MarshalMode
.ManagedToUnmanagedIn && shape.HasFlag(MarshallerShape.CallerAllocatedBuffer))))
973
private static DiagnosticReporter AdaptReporterForMarshalMode(DiagnosticReporter trackingReporter,
MarshalMode
mode)
975
if (mode ==
MarshalMode
.Default)
990
MissingMemberNames.CreateDiagnosticPropertiesForMissingMembersDiagnostic(
MarshalMode
.ManagedToUnmanagedIn, ShapeMemberNames.BufferSize),
1008
private void AnalyzeStatefulMarshallerType(DiagnosticReporter diagnosticReporter, ITypeSymbol managedType,
MarshalMode
mode, INamedTypeSymbol marshallerType, bool isLinearCollectionMarshaller)
1011
if (mode is
MarshalMode
.ElementIn
1012
or
MarshalMode
.ElementRef
1013
or
MarshalMode
.ElementOut)
1041
if (shape.HasFlag(MarshallerShape.CallerAllocatedBuffer) && mode ==
MarshalMode
.ManagedToUnmanagedIn)
1056
if (!(shape.HasFlag(MarshallerShape.ToUnmanaged) || (mode ==
MarshalMode
.ManagedToUnmanagedIn && shape.HasFlag(MarshallerShape.CallerAllocatedBuffer))))
Microsoft.Interop.SourceGeneration (58)
ManualTypeMarshallingHelper.cs (40)
25
ImmutableDictionary<
MarshalMode
, CustomTypeMarshallerData> Modes)
38
foreach (KeyValuePair<
MarshalMode
, CustomTypeMarshallerData> mode in Modes)
45
public CustomTypeMarshallerData GetModeOrDefault(
MarshalMode
mode)
51
if (Modes.TryGetValue(
MarshalMode
.Default, out data))
58
public bool TryGetModeOrDefault(
MarshalMode
mode, out CustomTypeMarshallerData data)
63
return Modes.TryGetValue(
MarshalMode
.Default, out data);
66
public bool IsDefinedOrDefault(
MarshalMode
mode)
68
return Modes.ContainsKey(mode) || Modes.ContainsKey(
MarshalMode
.Default);
163
Dictionary<
MarshalMode
, CustomTypeMarshallerData> modes = new();
204
var
marshalMode = (
MarshalMode
)attr.ConstructorArguments[1].Value!;
406
MarshalMode
mode,
423
public static bool ModeUsesManagedToUnmanagedShape(
MarshalMode
mode)
424
=> mode is
MarshalMode
.Default
425
or
MarshalMode
.ManagedToUnmanagedIn
426
or
MarshalMode
.ElementIn
427
or
MarshalMode
.UnmanagedToManagedOut
428
or
MarshalMode
.ElementOut
429
or
MarshalMode
.ManagedToUnmanagedRef
430
or
MarshalMode
.UnmanagedToManagedRef
431
or
MarshalMode
.ElementRef;
433
public static bool ModeUsesUnmanagedToManagedShape(
MarshalMode
mode)
434
=> mode is
MarshalMode
.Default
435
or
MarshalMode
.ManagedToUnmanagedOut
436
or
MarshalMode
.ElementOut
437
or
MarshalMode
.UnmanagedToManagedIn
438
or
MarshalMode
.ElementIn
439
or
MarshalMode
.ManagedToUnmanagedRef
440
or
MarshalMode
.UnmanagedToManagedRef
441
or
MarshalMode
.ElementRef;
447
private static bool ModeOptionallyMatchesShape(
MarshalMode
mode)
448
=> mode is
MarshalMode
.Default
449
or
MarshalMode
.ElementIn
450
or
MarshalMode
.ElementRef
451
or
MarshalMode
.ElementOut;
453
private static CustomTypeMarshallerData? GetStatelessMarshallerDataForType(ITypeSymbol marshallerType,
MarshalMode
mode, ITypeSymbol managedType, bool isLinearCollectionMarshaller, Compilation compilation, Func<ITypeSymbol, MarshallingInfo>? getMarshallingInfo)
549
MarshalMode
mode,
562
if (mode !=
MarshalMode
.Default && !shape.HasFlag(MarshallerShape.CallerAllocatedBuffer) && !shape.HasFlag(MarshallerShape.ToUnmanaged))
580
if (mode !=
MarshalMode
.Default && !shape.HasFlag(MarshallerShape.GuaranteedUnmarshal) && !shape.HasFlag(MarshallerShape.ToManaged))
596
if (mode !=
MarshalMode
.Default && ModeUsesManagedToUnmanagedShape(mode) && ModeUsesUnmanagedToManagedShape(mode) && !shape.HasFlag(MarshallerShape.ToUnmanaged))
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (3)
17
MarshalMode
ManagedToUnmanagedMode,
18
MarshalMode
BidirectionalMode,
19
MarshalMode
UnmanagedToManagedMode,
Marshalling\DefaultMarshallingGeneratorResolver.cs (9)
49
MarshalMode
.ElementIn,
50
MarshalMode
.ElementRef,
51
MarshalMode
.ElementOut,
64
?
MarshalMode
.ManagedToUnmanagedIn
65
:
MarshalMode
.UnmanagedToManagedOut,
67
?
MarshalMode
.ManagedToUnmanagedRef
68
:
MarshalMode
.UnmanagedToManagedRef,
70
?
MarshalMode
.ManagedToUnmanagedOut
71
:
MarshalMode
.UnmanagedToManagedIn,
MarshallingAttributeInfo.cs (3)
143
foreach (KeyValuePair<
MarshalMode
, CustomTypeMarshallerData> mode in Marshallers.Modes)
179
new CustomTypeMarshallers(ImmutableDictionary<
MarshalMode
, CustomTypeMarshallerData>.Empty.Add(
180
MarshalMode
.UnmanagedToManagedOut,
SafeHandleMarshallingInfoProvider.cs (3)
79
Modes = ImmutableDictionary<
MarshalMode
, CustomTypeMarshallerData>.Empty
81
MarshalMode
.ManagedToUnmanagedIn,
82
marshallers.Value.GetModeOrDefault(
MarshalMode
.ManagedToUnmanagedIn))