15 instantiations of TypePositionInfo
Microsoft.Interop.ComInterfaceGenerator (3)
VirtualMethodPointerStubGenerator.cs (3)
131elements.Add(new TypePositionInfo(new PointerTypeInfo("void*", "void*", false), methodStub.ManagedThisMarshallingInfo) 152elements.Add(new TypePositionInfo(methodStub.TypeKeyOwner, methodStub.ManagedThisMarshallingInfo) 177new TypePositionInfo(
Microsoft.Interop.JavaScript.JSImportGenerator (2)
JSExportGenerator.cs (1)
158ImmutableArray<TypePositionInfo> allElements = signatureElements.Add(new TypePositionInfo(
JSImportGenerator.cs (1)
116TypePositionInfo nativeOnlyParameterTemplate = new TypePositionInfo(
Microsoft.Interop.SourceGeneration (10)
BoundGenerators.cs (1)
20IBoundMarshallingGenerator defaultBoundGenerator = fallbackGenerator.Bind(new TypePositionInfo(SpecialTypeInfo.Void, NoMarshallingInfo.Instance), context);
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (1)
196var elementInfo = new TypePositionInfo(marshallerData.CollectionElementType, marshallerData.CollectionElementMarshallingInfo)
Marshalling\StatefulMarshallingStrategy.cs (1)
241new TypePositionInfo(SpecialTypeInfo.Int32, NoMarshallingInfo.Instance)
Marshalling\StatelessMarshallingStrategy.cs (1)
241new TypePositionInfo(SpecialTypeInfo.Int32, NoMarshallingInfo.Instance)
MarshallingInfoParser.cs (2)
318info = new TypePositionInfo(SpecialTypeInfo.Void, NoMarshallingInfo.Instance); 347info = new TypePositionInfo(SpecialTypeInfo.Void, NoMarshallingInfo.Instance);
MethodSignatureElementInfoProvider.cs (1)
34info = new TypePositionInfo(
SignatureContext.cs (2)
138TypePositionInfo retTypeInfo = new(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(method.ReturnType), marshallingInfoParser.ParseMarshallingInfo(method.ReturnType, returnAttributes)); 159return new TypePositionInfo(errorInfo.ManagedType, errorInfo.MarshallingInfo)
TypePositionInfo.cs (1)
89var typeInfo = new TypePositionInfo(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(paramSymbol.Type), marshallingInfo)
353 references to TypePositionInfo
Microsoft.Interop.ComInterfaceGenerator (62)
Analyzers\ConvertComImportToGeneratedComInterfaceAnalyzer.cs (4)
176private static bool HasUnsupportedMarshalAsInfo(TypePositionInfo info) 192private readonly Func<TypePositionInfo, StubCodeContext, ResolvedGenerator> _func; 194public CallbackGeneratorResolver(Func<TypePositionInfo, StubCodeContext, ResolvedGenerator> func) 199public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) => _func(info, context);
ComInterfaceGenerator.cs (4)
244TypePositionInfo? managedReturnInfo = signatureContext.ElementTypeInformation.FirstOrDefault(e => e.IsManagedReturnPosition); 258TypePositionInfo? managedReturnInfo = signatureContext.ElementTypeInformation.FirstOrDefault(e => e.IsManagedReturnPosition); 274foreach (TypePositionInfo parameter in signatureContext.ManagedParameters) 789ImmutableArray<TypePositionInfo> managedParams = sigContext.ManagedParameters.ToImmutableArray();
Marshallers\ComInterfaceDispatchMarshallingResolver.cs (7)
13public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 29public ManagedTypeInfo AsNativeType(TypePositionInfo info) => 34public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 46public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => SignatureBehavior.NativeType; 47public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) => ValueBoundaryBehavior.NativeIdentifier; 48public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 50public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true;
Marshallers\KeepAliveThisMarshaller.cs (6)
10public ManagedTypeInfo AsNativeType(TypePositionInfo info) => info.ManagedType; 11public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 21public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => SignatureBehavior.NativeType; 22public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier; 23public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 26public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => false;
Marshallers\ManagedHResultExceptionGeneratorResolver.cs (13)
13public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 32public ManagedTypeInfo AsNativeType(TypePositionInfo info) => info.ManagedType; 33public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 48public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => SignatureBehavior.NativeType; 49public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier; 50public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 52public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => false; 57public ManagedTypeInfo AsNativeType(TypePositionInfo info) => info.ManagedType; 58public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 72public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => SignatureBehavior.NativeType; 73public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) => ValueBoundaryBehavior.ManagedIdentifier; 74public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 76public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => false;
Marshallers\ObjectUnwrapperResolver.cs (7)
12public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 28public ManagedTypeInfo AsNativeType(TypePositionInfo info) => new PointerTypeInfo("void*", "void*", false); 29public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 43public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => SignatureBehavior.NativeType; 44public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) => ValueBoundaryBehavior.NativeIdentifier; 45public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 47public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true;
Marshallers\StructAsHResultMarshallerFactory.cs (7)
12public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 25public ManagedTypeInfo AsNativeType(TypePositionInfo info) => SpecialTypeInfo.Int32; 27public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 50public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 55public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 65public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 68public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true;
VirtualMethodPointerStubGenerator.cs (14)
26ImmutableArray<TypePositionInfo> elements = methodStub.VtableIndexData.ImplicitThisParameter 126private static ImmutableArray<TypePositionInfo> AddManagedToUnmanagedImplicitThis(SourceAvailableIncrementalMethodStubGenerationContext methodStub) 128ImmutableArray<TypePositionInfo> originalElements = methodStub.SignatureContext.ElementTypeInformation; 129var elements = ImmutableArray.CreateBuilder<TypePositionInfo>(originalElements.Length + 2); 136foreach (TypePositionInfo element in originalElements) 140NativeIndex = TypePositionInfo.IncrementIndex(element.NativeIndex) 147private static ImmutableArray<TypePositionInfo> AddUnmanagedToManagedImplicitElementInfos(IncrementalMethodStubGenerationContext methodStub) 149ImmutableArray<TypePositionInfo> originalElements = methodStub.SignatureContext.ElementTypeInformation; 150var elements = ImmutableArray.CreateBuilder<TypePositionInfo>(originalElements.Length + 2); 157foreach (TypePositionInfo element in originalElements) 159TypePositionInfo unmanagedToManagedElement = element; 170NativeIndex = TypePositionInfo.IncrementIndex(unmanagedToManagedElement.NativeIndex) 182ManagedIndex = TypePositionInfo.ExceptionIndex, 183NativeIndex = TypePositionInfo.ReturnIndex,
Microsoft.Interop.JavaScript.JSImportGenerator (34)
JSExportGenerator.cs (7)
157ImmutableArray<TypePositionInfo> signatureElements = incrementalContext.SignatureContext.SignatureContext.ElementTypeInformation; 158ImmutableArray<TypePositionInfo> allElements = signatureElements.Add(new TypePositionInfo( 166ManagedIndex = TypePositionInfo.ExceptionIndex, 179ManagedIndex = TypePositionInfo.ReturnIndex, 231ImmutableArray<TypePositionInfo> signatureElements, 236foreach (TypePositionInfo nativeArgument in signatureElements.Where(static element => element.NativeIndex != TypePositionInfo.UnsetIndex).OrderBy(static element => element.NativeIndex))
JSGeneratorFactory.cs (5)
17public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 29if (MarshallerHelpers.GetMarshalDirection(info, context) != MarshalDirection.UnmanagedToManaged && info.ManagedIndex == TypePositionInfo.UnsetIndex) 38public static (MarshalerType BaseType, IEnumerable<MarshalerType>? SubTypes) GetMarshallerTypeForBinding(TypePositionInfo info, StubCodeContext context) 46private static ResolvedGeneratorAndType Create(TypePositionInfo info, JSMarshallingInfo jsMarshalingInfo, StubCodeContext context) 91private static ResolvedGeneratorAndType Create(TypePositionInfo info, StubCodeContext context, bool isToJs, KnownManagedType marshaledType, KnownManagedType[] argumentTypes, JSTypeFlags jsType, SequenceEqualImmutableArray<JSTypeFlags>? jsTypeArguments)
JSImportGenerator.cs (7)
113ImmutableArray<TypePositionInfo> originalElementInfo = incrementalContext.SignatureContext.SignatureContext.ElementTypeInformation; 114ImmutableArray<TypePositionInfo>.Builder typeInfoBuilder = ImmutableArray.CreateBuilder<TypePositionInfo>(originalElementInfo.Length + NumImplicitArguments); 116TypePositionInfo nativeOnlyParameterTemplate = new TypePositionInfo( 120ManagedIndex = TypePositionInfo.UnsetIndex, 135foreach (TypePositionInfo info in originalElementInfo) 138TypePositionInfo updatedInfo = info with
JSMarshallingInfo.cs (4)
21private SequenceEqualImmutableArray<TypePositionInfo> _elementDependencies = new(ImmutableArray<TypePositionInfo>.Empty); 22public override IEnumerable<TypePositionInfo> ElementDependencies => _elementDependencies; 24public JSMarshallingInfo AddElementDependencies(IEnumerable<TypePositionInfo> elementDependencies)
JSSignatureContext.cs (1)
55foreach (var param in sigContext.ElementTypeInformation)
Marshaling\BaseJSGenerator.cs (2)
8internal abstract class BaseJSGenerator(TypePositionInfo info, StubCodeContext codeContext) : IBoundMarshallingGenerator 12public TypePositionInfo TypeInfo => info;
Marshaling\FuncJSGenerator.cs (1)
9internal sealed class FuncJSGenerator(TypePositionInfo info, StubCodeContext context, bool isAction, MarshalerType[] argumentMarshalerTypes) : BaseJSGenerator(info, context)
Marshaling\ImplicitArgumentGenerator.cs (1)
6internal sealed class ImplicitArgumentGenerator(TypePositionInfo info, StubCodeContext codeContext) : BaseJSGenerator(info, codeContext)
Marshaling\PrimitiveJSGenerator.cs (1)
8internal sealed class PrimitiveJSGenerator(TypePositionInfo info, StubCodeContext context, MarshalerType elementMarshallerType) : BaseJSGenerator(info, context)
Marshaling\TaskJSGenerator.cs (1)
8internal sealed class TaskJSGenerator(TypePositionInfo info, StubCodeContext context, MarshalerType resultMarshalerType) : BaseJSGenerator(info, context)
NoSpanAndTaskMixingResolver.cs (1)
15public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
SignatureBindingHelpers.cs (3)
12public static string CreateSignaturesArgument(ImmutableArray<TypePositionInfo> elements, StubCodeContext context) 17foreach (TypePositionInfo element in elements.Where(static element => element.NativeIndex != TypePositionInfo.UnsetIndex).OrderBy(static element => element.NativeIndex))
Microsoft.Interop.LibraryImportGenerator (4)
Analyzers\ConvertToLibraryImportAnalyzer.cs (3)
201private static bool HasUnsupportedMarshalAsInfo(TypePositionInfo info) 230private sealed class CallbackGeneratorResolver(Func<TypePositionInfo, StubCodeContext, ResolvedGenerator> func) : IMarshallingGeneratorResolver 232public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) => func(info, context);
ForwarderResolver.cs (1)
14public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) => ResolvedGenerator.Resolved(s_forwarder.Bind(info, context));
Microsoft.Interop.LibraryImportGenerator.Downlevel (1)
ForwarderResolver.cs (1)
14public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) => ResolvedGenerator.Resolved(s_forwarder.Bind(info, context));
Microsoft.Interop.SourceGeneration (252)
BoundGenerators.cs (17)
18public static BoundGenerators Create(ImmutableArray<TypePositionInfo> elementTypeInfo, IMarshallingGeneratorResolver generatorResolver, StubCodeContext context, IUnboundMarshallingGenerator fallbackGenerator, out ImmutableArray<GeneratorDiagnostic> generatorBindingDiagnostics) 30TypePositionInfo? errorHandlingInfo = null; 32foreach (TypePositionInfo argType in elementTypeInfo) 55if (!TypePositionInfo.IsSpecialIndex(argType.ManagedIndex)) 59if (!TypePositionInfo.IsSpecialIndex(argType.NativeIndex)) 87else if (!TypePositionInfo.IsSpecialIndex(errorHandlingInfo.NativeIndex)) 101else if (errorHandlingInfo.NativeIndex is not (TypePositionInfo.UnsetIndex or TypePositionInfo.ExceptionIndex)) 130if (overlappedMarshaller is null && !TypePositionInfo.IsSpecialIndex(errorHandlingInfo.NativeIndex)) 180static IEnumerable<(bool IsManagedIndex, int Index)> GetInfoDependencies(TypePositionInfo info) 183if (info.ManagedIndex == TypePositionInfo.UnsetIndex) 191static (bool IsManagedIndex, int Index) GetInfoIndex(TypePositionInfo info) 202if (info.ManagedIndex != TypePositionInfo.UnsetIndex) 209IBoundMarshallingGenerator? FindOverlappedMarshaller(TypePositionInfo info) 218return TypePositionInfo.IsSpecialIndex(info.NativeIndex) 224IBoundMarshallingGenerator CreateGenerator(TypePositionInfo p, IMarshallingGeneratorResolver factory) 266public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
ComInterfaceMarshallingInfoProvider.cs (1)
35TypePositionInfo? iidParameterIndexInfo = null)
DefaultIdentifierContext.cs (5)
15private readonly TypePositionInfo? _errorHandlingOverlappedPosition; 21TypePositionInfo? errorHandlingOverlappedPosition = null) 29public override (string managed, string native) GetIdentifiers(TypePositionInfo info) 34ManagedIndex: TypePositionInfo.ErrorIndex, 73public override string GetAdditionalIdentifier(TypePositionInfo info, string name)
EmptyElementInfoProvider.cs (2)
22public bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info) 28public bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info)
LinearCollectionElementIdentifierContext.cs (4)
12private readonly TypePositionInfo _elementInfo; 29TypePositionInfo elementInfo, 46public override (string managed, string native) GetIdentifiers(TypePositionInfo info) 63public override string GetAdditionalIdentifier(TypePositionInfo info, string name)
ManagedToNativeStubGenerator.cs (4)
31ImmutableArray<TypePositionInfo> argTypes, 43TypePositionInfo? errorHandlingInfo = argTypes.FirstOrDefault(static info => info.IsErrorHandlingPosition); 44TypePositionInfo? errorHandlingOverlappedPosition = errorHandlingInfo is null 87public string GetNativeIdentifier(TypePositionInfo info)
MarshalAsParser.cs (8)
60TypePositionInfo? IidParameterIndexInfo) : MarshalAsInfo(UnmanagedType, CharEncoding) 62public override IEnumerable<TypePositionInfo> ElementDependencies 69if (IidParameterIndexInfo is { ManagedIndex: int paramIndex } && !TypePositionInfo.IsSpecialIndex(paramIndex)) 143TypePositionInfo? iidParameterIndexInfo = null; 150if (!elementInfoProvider.TryGetInfoForParamIndex(attributeData, (short)sizeParamIndexArg.Value!, marshallingInfoCallback, out TypePositionInfo paramIndexInfo)) 219TypePositionInfo? iidParameterIndexInfo = null; 257private static bool IsGuidType(TypePositionInfo info) 263private static bool IsValidIidParameter(TypePositionInfo info)
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (11)
39public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 49private GeneratorDiagnostic.NotSupported? ValidateCountInfo(TypePositionInfo info, CountInfo count, StubCodeContext context, out bool countInfoRequiresCast) 56SizeAndParamIndexInfo(_, TypePositionInfo param) => ValidateNumElementsExpression(param, out countInfoRequiresCast), 57CountElementCountInfo(TypePositionInfo elementInfo) => ValidateNumElementsExpression(elementInfo, out countInfoRequiresCast), 64GeneratorDiagnostic.NotSupported? ValidateNumElementsExpression(TypePositionInfo paramInfo, out bool requiresCast) 115private CustomTypeMarshallerData GetMarshallerDataForTypePositionInfo(CustomTypeMarshallers marshallers, TypePositionInfo info, StubCodeContext context) 128private ResolvedGenerator CreateCustomNativeTypeMarshaller(TypePositionInfo info, StubCodeContext context, NativeMarshallingAttributeInfo marshalInfo) 191TypePositionInfo info, 196var elementInfo = new TypePositionInfo(marshallerData.CollectionElementType, marshallerData.CollectionElementMarshallingInfo) 333private static FreeStrategy GetFreeStrategy(TypePositionInfo info, StubCodeContext context) 376private GeneratorDiagnostic.NotSupported? ValidateCustomNativeTypeMarshallingSupported(TypePositionInfo info, StubCodeContext context, NativeMarshallingAttributeInfo marshalInfo)
Marshalling\BlittableMarshaller.cs (6)
8public ManagedTypeInfo AsNativeType(TypePositionInfo info) 13public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 18public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 31public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 71public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) 76public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\BlittableMarshallerResolver.cs (1)
23public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
Marshalling\BoolMarshaller.cs (6)
24public ManagedTypeInfo AsNativeType(TypePositionInfo info) 30public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 35public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 45public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 76public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true; 78public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\BreakingChangeDetector.cs (1)
17public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
Marshalling\ByValueContentsMarshalKindValidator.cs (1)
22public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
Marshalling\ByValueMarshalKindSupportDescriptor.cs (2)
11public ByValueMarshalKindSupport GetSupport(TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 62public ByValueMarshalKindSupport GetSupport(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\CharMarshaller.cs (7)
13public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 31public ManagedTypeInfo AsNativeType(TypePositionInfo info) 37public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 42public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 91public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) 97private static bool IsPinningPathSupported(TypePositionInfo info, StubCodeContext context) 105public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\CharMarshallingGeneratorResolver.cs (2)
24public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 34private ResolvedGenerator CreateCharMarshaller(TypePositionInfo info, StubCodeContext context)
Marshalling\CompositeMarshallingGeneratorResolver.cs (1)
26public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context)
Marshalling\CustomTypeMarshallingGenerator.cs (1)
18public TypePositionInfo TypeInfo => nativeTypeMarshaller.TypeInfo;
Marshalling\DelegateMarshaller.cs (6)
8public ManagedTypeInfo AsNativeType(TypePositionInfo info) 13public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 18public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 23public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 56public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true; 58public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\ElementsMarshalling.cs (9)
13TypePositionInfo TypeInfo { get; } 50SizeAndParamIndexInfo(SizeAndParamIndexInfo.UnspecifiedConstSize, TypePositionInfo param) => (GetExpressionForParam(param), false), 51SizeAndParamIndexInfo(int size, TypePositionInfo param) => ($"{GetConstSizeExpression(size)} + {GetExpressionForParam(param)}", true), 52CountElementCountInfo(TypePositionInfo elementInfo) => (GetExpressionForParam(elementInfo), false), 66string GetExpressionForParam(TypePositionInfo paramInfo) 80public static void GenerateNumElementsAssignmentFromManagedValuesSource(this IElementsMarshallingCollectionSource source, IndentedTextWriter writer, TypePositionInfo info, StubIdentifierContext context) 86public static void GenerateNumElementsAssignmentFromManagedValuesDestination(this IElementsMarshallingCollectionSource source, IndentedTextWriter writer, TypePositionInfo info, StubIdentifierContext context) 347private static bool UsesLastIndexMarshalled(TypePositionInfo info, StubCodeContext context) 353private static bool ShouldCleanUpAllElements(TypePositionInfo info, StubCodeContext context)
Marshalling\Forwarder.cs (6)
8public ManagedTypeInfo AsNativeType(TypePositionInfo info) 13public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) 18public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 23public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 27public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => false; 29public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic)
Marshalling\GeneratorDiagnostic.cs (5)
13private GeneratorDiagnostic(TypePositionInfo typePositionInfo, bool isFatal) 23public TypePositionInfo TypePositionInfo { get; } 28public sealed record NotSupported(TypePositionInfo TypePositionInfo) : GeneratorDiagnostic(TypePositionInfo, isFatal: true) 45public sealed record UnnecessaryData(TypePositionInfo TypePositionInfo, ImmutableArray<Location> UnnecessaryDataLocations) : GeneratorDiagnostic(TypePositionInfo, isFatal: false) 64public sealed record NotRecommended(TypePositionInfo TypePositionInfo) : GeneratorDiagnostic(TypePositionInfo, isFatal: false)
Marshalling\GenericFriendlyPointerIdentifierContext.cs (4)
14private readonly TypePositionInfo _adaptedInfo; 17public GenericFriendlyPointerIdentifierContext(StubIdentifierContext inner, TypePositionInfo adaptedInfo, string baseIdentifier) 25public override (string managed, string native) GetIdentifiers(TypePositionInfo info) 36public override string GetAdditionalIdentifier(TypePositionInfo info, string name) => _innerContext.GetAdditionalIdentifier(info, name);
Marshalling\ICustomTypeMarshallingStrategy.cs (1)
11TypePositionInfo TypeInfo { get; }
Marshalling\IidParameterIndexMarshallerResolver.cs (8)
8public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) 19private sealed class Marshaller(TypePositionInfo iidParameterIndexInfo) : IUnboundMarshallingGenerator 21public ManagedTypeInfo AsNativeType(TypePositionInfo info) => new PointerTypeInfo("void*", "void*", false); 23public SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info) => info.IsByRef ? SignatureBehavior.PointerToNativeType : SignatureBehavior.NativeType; 25public ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context) 28public ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic) 31public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => true; 33public void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context)
Marshalling\IMarshallingGeneratorResolver.cs (1)
17TypePositionInfo info,
Marshalling\MarshalAsMarshallingGeneratorResolver.cs (1)
35TypePositionInfo info,
Marshalling\MarshallerHelpers.cs (20)
52public static string GetMarshallerIdentifier(TypePositionInfo info, StubIdentifierContext context) 57public static string GetManagedSpanIdentifier(TypePositionInfo info, StubIdentifierContext context) 62public static string GetNativeSpanIdentifier(TypePositionInfo info, StubIdentifierContext context) 67public static string GetNumElementsIdentifier(TypePositionInfo info, StubIdentifierContext context) 72public static string GetLastIndexMarshalledIdentifier(TypePositionInfo info, StubIdentifierContext context) 82public static string GetIndexedManagedElementExpression(TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context) 92internal static bool CanUseCallerAllocatedBuffer(TypePositionInfo info, StubCodeContext context) 219public static string SkipInitOrDefaultInit(TypePositionInfo info, StubIdentifierContext context) 236public static string DefaultInit(TypePositionInfo info, StubIdentifierContext context) 250public static MarshalDirection GetMarshalDirection(TypePositionInfo info, StubCodeContext context) 312public static StubIdentifierContext.Stage GetCleanupStage(TypePositionInfo info, StubCodeContext context) 334public static void ValidateCountInfoAvailableAtCall(MarshalDirection stubDirection, TypePositionInfo info, GeneratorDiagnosticsBag generatorDiagnostics, IMethodSymbol symbol, DiagnosticDescriptor outParamDescriptor, DiagnosticDescriptor returnValueDescriptor) 342|| info.ManagedIndex is TypePositionInfo.ReturnIndex) 348Location location = TypePositionInfo.GetLocation(info, symbol); 356else if (countInfo.ElementInfo.ManagedIndex is TypePositionInfo.ReturnIndex) 358Location location = TypePositionInfo.GetLocation(info, symbol); 369public static string GetManagedParameterModifiers(TypePositionInfo typeInfo) 411public static string GetManagedArgumentRefKindKeyword(TypePositionInfo typeInfo) 429public static bool IsInStubReturnPosition(TypePositionInfo info, MarshalDirection direction) 444public static bool IsInInvocationReturnPosition(TypePositionInfo info, MarshalDirection direction)
Marshalling\MarshallingGenerator.cs (10)
82TypePositionInfo TypeInfo { get; } 150internal sealed class BoundMarshallingGenerator(TypePositionInfo info, StubCodeContext context, IUnboundMarshallingGenerator unbound) : IBoundMarshallingGenerator 156public TypePositionInfo TypeInfo => info; 183public static IBoundMarshallingGenerator Bind(this IUnboundMarshallingGenerator unbound, TypePositionInfo info, StubCodeContext context) => new BoundMarshallingGenerator(info, context, unbound); 196ManagedTypeInfo AsNativeType(TypePositionInfo info); 203SignatureBehavior GetNativeSignatureBehavior(TypePositionInfo info); 211ValueBoundaryBehavior GetValueBoundaryBehavior(TypePositionInfo info, StubCodeContext context); 226void Generate(IndentedTextWriter writer, TypePositionInfo info, StubCodeContext codeContext, StubIdentifierContext context); 235bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context); 248ByValueMarshalKindSupport SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, TypePositionInfo info, out GeneratorDiagnostic? diagnostic);
Marshalling\MarshallingGeneratorExtensions.cs (3)
92private static GeneratedParameter GenerateForwardingParameter(TypePositionInfo info, string identifier) 121TypePositionInfo info = generator.TypeInfo; 136TypePositionInfo info = generator.TypeInfo;
Marshalling\NoMarshallingInfoErrorResolver.cs (1)
15TypePositionInfo info,
Marshalling\NotSupportedResolver.cs (1)
8public ResolvedGenerator Create(TypePositionInfo info, StubCodeContext context) =>
Marshalling\ResolvedGenerator.cs (1)
25public static ResolvedGenerator NotSupported(TypePositionInfo info, StubCodeContext context, GeneratorDiagnostic.NotSupported notSupportedDiagnostic)
Marshalling\StatefulMarshallingStrategy.cs (8)
6internal sealed class StatefulValueMarshalling(TypePositionInfo info, StubCodeContext stubContext, ManagedTypeInfo marshallerType, ManagedTypeInfo unmanagedType, MarshallerShape shape) : ICustomTypeMarshallingStrategy 12public TypePositionInfo TypeInfo => info; 97public static string GetMarshallerIdentifier(TypePositionInfo info, StubIdentifierContext context) 110public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 138internal sealed class StatefulLinearCollectionSource(TypePositionInfo info, StubCodeContext codeContext) : IElementsMarshallingCollectionSource 140public TypePositionInfo TypeInfo => info; 183public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 283public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo;
Marshalling\StatelessMarshallingStrategy.cs (9)
9internal sealed class StatelessValueMarshalling(TypePositionInfo info, StubCodeContext codeContext, string marshallerType, ManagedTypeInfo unmanagedType, MarshallerShape shape) : ICustomTypeMarshallingStrategy 13public TypePositionInfo TypeInfo => info; 90public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 133public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 172internal sealed class StatelessLinearCollectionSpaceAllocator(TypePositionInfo info, StubCodeContext codeContext, string marshallerType, ManagedTypeInfo unmanagedType, MarshallerShape shape, CountInfo countInfo, bool countInfoRequiresCast) : ICustomTypeMarshallingStrategy 175public TypePositionInfo TypeInfo => info; 269internal sealed class StatelessLinearCollectionSource(TypePositionInfo info, StubCodeContext codeContext, string marshallerType) : IElementsMarshallingCollectionSource 271public TypePositionInfo TypeInfo => info; 314public TypePositionInfo TypeInfo => spaceMarshallingStrategy.TypeInfo;
Marshalling\StaticPinnableManagedValueMarshaller.cs (1)
8public TypePositionInfo TypeInfo => innerMarshallingGenerator.TypeInfo;
Marshalling\UnmanagedToManagedOwnershipTrackingStrategy.cs (6)
14public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 50public TypePositionInfo TypeInfo => innerMarshaller.TypeInfo; 97public TypePositionInfo TypeInfo => inner.TypeInfo; 131public override (string managed, string native) GetIdentifiers(TypePositionInfo info) 137public override string GetAdditionalIdentifier(TypePositionInfo info, string name) => _innerContext.GetAdditionalIdentifier(info, name); 145public static void DeclareOriginalValueIdentifier(IndentedTextWriter writer, TypePositionInfo info, StubIdentifierContext context, ManagedTypeInfo nativeType)
MarshallingAttributeInfo.cs (14)
39public virtual IEnumerable<TypePositionInfo> ElementDependencies => []; 92public sealed record CountElementCountInfo(TypePositionInfo ElementInfo) : CountInfo 97public sealed record SizeAndParamIndexInfo(int ConstSize, TypePositionInfo? ParamAtIndex) : CountInfo 101public const TypePositionInfo UnspecifiedParam = null; 116TypePositionInfo IidParameterIndexInfo) : NativeMarshallingAttributeInfo(EntryPointType, Marshallers) 118public override IEnumerable<TypePositionInfo> ElementDependencies => [IidParameterIndexInfo]; 131public override IEnumerable<TypePositionInfo> ElementDependencies 137IEnumerable<TypePositionInfo> GetElementDependencies() 139if (ElementCountInfo is CountElementCountInfo { ElementInfo: TypePositionInfo nestedCountElement }) 143if (nestedCountElement.ManagedIndex != TypePositionInfo.UnsetIndex || nestedCountElement.NativeIndex != TypePositionInfo.UnsetIndex) 151foreach (TypePositionInfo nestedElement in mode.Value.CollectionElementMarshallingInfo.ElementDependencies) 153if (nestedElement.ManagedIndex != TypePositionInfo.UnsetIndex || nestedElement.NativeIndex != TypePositionInfo.UnsetIndex)
MarshallingInfoParser.cs (7)
19public sealed record UseSiteAttributeData(int IndirectionDepth, CountInfo CountInfo, AttributeData AttributeData, TypePositionInfo? IidParameterIndexInfo = null); 118bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info); 128bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info); 144public static bool TryGetInfoForElementName(this IElementInfoProvider provider, AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, out TypePositionInfo info) 157public static bool TryGetInfoForParamIndex(this IElementInfoProvider provider, AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, out TypePositionInfo info) 300public bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, [NotNullWhen(true)] out TypePositionInfo? info) 327public bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, [NotNullWhen(true)] out TypePositionInfo? info)
MarshalUsingAttributeParser.cs (1)
103if (!elementInfoProvider.TryGetInfoForElementName(attributeData, elementName, marshallingInfoCallback, out TypePositionInfo elementInfo))
MethodSignatureElementInfoProvider.cs (5)
30public bool TryGetInfoForElementName(AttributeData attrData, string elementName, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info) 38ManagedIndex = TypePositionInfo.ReturnIndex 48info = TypePositionInfo.CreateForParameter( 61public bool TryGetInfoForParamIndex(AttributeData attrData, int paramIndex, GetMarshallingInfoCallback marshallingInfoCallback, IElementInfoProvider rootProvider, out TypePositionInfo info) 70info = TypePositionInfo.CreateForParameter(
SignatureContext.cs (32)
28public ImmutableArray<TypePositionInfo> ElementTypeInformation { get; init; } 30public IEnumerable<TypePositionInfo> ManagedParameters => ElementTypeInformation.Where(tpi => !TypePositionInfo.IsSpecialIndex(tpi.ManagedIndex)); 38foreach (TypePositionInfo typeInfo in ElementTypeInformation) 40if (!TypePositionInfo.IsSpecialIndex(typeInfo.ManagedIndex)) 71ImmutableArray<TypePositionInfo> typeInfos = GenerateTypeInformation(method, marshallingInfoParser, env, errorHandlingInfo); 93private static ImmutableArray<TypePositionInfo> GenerateTypeInformation( 118ImmutableArray<TypePositionInfo>.Builder typeInfos = ImmutableArray.CreateBuilder<TypePositionInfo>(); 126var typeInfo = TypePositionInfo.CreateForParameter(param, marshallingInfo, env.Compilation); 138TypePositionInfo retTypeInfo = new(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(method.ReturnType), marshallingInfoParser.ParseMarshallingInfo(method.ReturnType, returnAttributes)); 141ManagedIndex = TypePositionInfo.ReturnIndex, 142NativeIndex = TypePositionInfo.ReturnIndex, 154void ApplyErrorHandlingInfo(ImmutableArray<TypePositionInfo>.Builder infos, ErrorHandlingInfo errorInfo) 156TypePositionInfo CreateErrorInfo( 162RefKind = nativeIndex == TypePositionInfo.ReturnIndex ? RefKind.None : RefKind.Out, 163ManagedIndex = TypePositionInfo.ErrorIndex, 169bool MatchesManagedType(TypePositionInfo info) => info.ManagedType == errorInfo.ManagedType; 175TypePositionInfo returnInfo = infos[returnIndex]; 178infos.Add(CreateErrorInfo(TypePositionInfo.ReturnIndex)); 182infos[returnIndex] = returnInfo with { NativeIndex = TypePositionInfo.UnsetIndex }; 183infos.Add(CreateErrorInfo(TypePositionInfo.ReturnIndex)); 189TypePositionInfo hiddenReturnInfo = infos[hiddenReturnIndex]; 192infos[hiddenReturnIndex] = hiddenReturnInfo with { NativeIndex = TypePositionInfo.UnsetIndex }; 205infos.Add(CreateErrorInfo(TypePositionInfo.ReturnIndex)); 209TypePositionInfo lastParameter = GetLastManagedParameter(infos); 221static TypePositionInfo GetLastManagedParameter(ImmutableArray<TypePositionInfo>.Builder infos) 223TypePositionInfo? lastParameter = null; 224foreach (TypePositionInfo info in infos) 226if (!TypePositionInfo.IsSpecialIndex(info.ManagedIndex)
StubCodeContext.cs (1)
59public bool IsInStubReturnPosition(TypePositionInfo info)
StubIdentifierContext.cs (2)
103public virtual (string managed, string native) GetIdentifiers(TypePositionInfo info) 114public virtual string GetAdditionalIdentifier(TypePositionInfo info, string name)
TypePositionInfo.cs (4)
82public bool PositionsEqual(TypePositionInfo other) 87public static TypePositionInfo CreateForParameter(IParameterSymbol paramSymbol, MarshallingInfo marshallingInfo, Compilation compilation) 89var typeInfo = new TypePositionInfo(ManagedTypeInfo.CreateTypeInfoForTypeSymbol(paramSymbol.Type), marshallingInfo) 101public static Location GetLocation(TypePositionInfo info, IMethodSymbol methodSymbol)
UnmanagedToManagedStubGenerator.cs (1)
17ImmutableArray<TypePositionInfo> argTypes,
VariableDeclarations.cs (4)
16TypePositionInfo info = marshaller.TypeInfo; 39TypePositionInfo errorInfo = errorMarshaller.TypeInfo; 40if (errorInfo is { IsErrorHandlingPosition: true, ManagedIndex: TypePositionInfo.ErrorIndex } 67TypePositionInfo info = marshaller.TypeInfo;