diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 5b1aa5b5c..66abf3e0d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -3,7 +3,7 @@ true - + diff --git a/src/WinRT.Interop.Generator/Builders/DynamicCustomMappedTypeMapEntriesBuilder.cs b/src/WinRT.Interop.Generator/Builders/DynamicCustomMappedTypeMapEntriesBuilder.cs index ebd0afec8..e13f5f7b3 100644 --- a/src/WinRT.Interop.Generator/Builders/DynamicCustomMappedTypeMapEntriesBuilder.cs +++ b/src/WinRT.Interop.Generator/Builders/DynamicCustomMappedTypeMapEntriesBuilder.cs @@ -151,7 +151,7 @@ private static void WindowsRuntimeExposedType( name: (Utf8String)$"{trimTarget.Name}ComWrappersMarshallerAttribute"); // The '[ComWrappersMarshaller]' type should always exist for all custom-mapped types, throw if it doesn't - if (comWrappersMarshallerTypeReference.Import(module).Resolve() is not TypeDefinition comWrappersMarshallerType) + if (comWrappersMarshallerTypeReference.Resolve() is not TypeDefinition comWrappersMarshallerType) { throw WellKnownInteropExceptions.CustomMappedTypeComWrappersMarshallerAttributeTypeResolveError(comWrappersMarshallerTypeReference); } diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.Delegate.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.Delegate.cs index fa27beecd..c0f234908 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.Delegate.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.Delegate.cs @@ -28,7 +28,6 @@ public static class Delegate /// The for the type. /// The instance to use. /// The instance to use. - /// The interop module being built. /// Whether to use Windows.UI.Xaml projections. /// The resulting 'IID' get method for the 'IDelegate' interface. /// The resulting 'IID' get method for the boxed 'IDelegate' interface. @@ -36,7 +35,6 @@ public static void IIDs( GenericInstanceTypeSignature delegateType, InteropDefinitions interopDefinitions, InteropReferences interopReferences, - ModuleDefinition module, bool useWindowsUIXamlProjections, out MethodDefinition get_IidMethod, out MethodDefinition get_ReferenceIidMethod) @@ -46,7 +44,6 @@ public static void IIDs( name: InteropUtf8NameFactory.TypeName(delegateType), interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, iid: GuidGenerator.CreateIID(delegateType, interopReferences, useWindowsUIXamlProjections), out get_IidMethod); @@ -60,7 +57,6 @@ public static void IIDs( name: InteropUtf8NameFactory.TypeName(delegateType, "Reference"), interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, iid: GuidGenerator.CreateIID(delegateType.MakeBoxedType(), interopReferences, useWindowsUIXamlProjections), out get_ReferenceIidMethod); } @@ -100,7 +96,7 @@ public static void ImplType( // Labels for jumps CilInstruction ldloc_0_returnHResult = new(Ldloc_0); CilInstruction ldarg_0_tryStart = new(Ldarg_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Create a method body for the 'Invoke' method invokeMethod.CilMethodBody = new CilMethodBody() @@ -112,12 +108,12 @@ public static void ImplType( { // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(delegateType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(delegateType) }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToManaged.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToManaged }, { Ldarg_2 }, - { Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToManaged.Import(module) }, - { Callvirt, interopReferences.DelegateInvoke(delegateType, module).Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToManaged }, + { Callvirt, interopReferences.DelegateInvoke(delegateType, module) }, { Ldc_I4_0 }, { Stloc_0 }, { Leave_S, ldloc_0_returnHResult.CreateLabel() }, @@ -140,7 +136,7 @@ public static void ImplType( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -193,14 +189,14 @@ public static void ReferenceImplType( // Jump labels CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); // Declare 2 local variables: // [0]: 'int' (the 'HRESULT' to return) // [1]: 'WindowsRuntimeObjectReferenceValue' to use to marshal the delegate CilLocalVariable loc_0_hresult = new(module.CorLibTypeFactory.Int32); - CilLocalVariable loc_1_referenceValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_1_referenceValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); // Create a method body for the 'get_Value' method valueMethod.CilMethodBody = new CilMethodBody() @@ -220,11 +216,11 @@ public static void ReferenceImplType( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(delegateType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(delegateType) }, { Call, marshallerType.GetMethod("ConvertToUnmanaged"u8) }, { Stloc_1 }, { Ldloca_S, loc_1_referenceValue }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe }, { Stind_I }, { Ldc_I4_0 }, { Stloc_0 }, @@ -248,7 +244,7 @@ public static void ReferenceImplType( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -331,7 +327,7 @@ public static void ComWrappersCallbackType( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeObjectComWrappersCallback.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeObjectComWrappersCallback) } }; module.TopLevelTypes.Add(callbackType); @@ -346,7 +342,7 @@ public static void ComWrappersCallbackType( returnType: module.CorLibTypeFactory.Object, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.CreatedWrapperFlags.Import(module).MakeByReferenceType()])) + interopReferences.CreatedWrapperFlags.MakeByReferenceType()])) { CilOutParameterIndices = [2], CilMethodBody = new CilMethodBody @@ -358,9 +354,9 @@ public static void ComWrappersCallbackType( { Ldarg_0 }, { Call, get_IidMethod }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReferenceUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReferenceUnsafe }, { Ldftn, nativeDelegateType.GetMethod("Invoke"u8) }, - { Newobj, interopReferences.Delegate_ctor(delegateType).Import(module) }, + { Newobj, interopReferences.Delegate_ctor(delegateType) }, { Ret } } } @@ -368,7 +364,7 @@ public static void ComWrappersCallbackType( // Add and implement the 'CreateObject' method callbackType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeObjectComWrappersCallbackCreateObject.Import(module), + declaration: interopReferences.IWindowsRuntimeObjectComWrappersCallbackCreateObject, method: createObjectMethod); } @@ -397,7 +393,7 @@ public static void NativeDelegateType( module.TopLevelTypes.Add(nativeDelegateType); // Construct the 'Invoke' method on the delegate type, so we can get the constructed parameter types - MethodSignature invokeSignature = delegateType.Import(module).Resolve()!.GetMethod("Invoke"u8).Signature!.InstantiateGenericTypes(GenericContext.FromType(delegateType)); + MethodSignature invokeSignature = delegateType.Resolve()!.GetMethod("Invoke"u8).Signature!.InstantiateGenericTypes(GenericContext.FromType(delegateType)); // Define the 'Invoke' method as follows: // @@ -408,9 +404,9 @@ public static void NativeDelegateType( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module), - invokeSignature.ParameterTypes[0].Import(module), - invokeSignature.ParameterTypes[1].Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + invokeSignature.ParameterTypes[0], + invokeSignature.ParameterTypes[1]])) { CilMethodBody = new CilMethodBody() }; nativeDelegateType.Methods.Add(invokeMethod); @@ -420,9 +416,7 @@ public static void NativeDelegateType( CilInstructionCollection invokeInstructions = invokeBody.Instructions; // Import 'WindowsRuntimeObjectReferenceValue', compute it just once - TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue - .Import(module) - .ToValueTypeSignature(); + TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature(); // Declare the local variables: // [0]: 'WindowsRuntimeObjectReferenceValue' (for 'thisValue') @@ -438,48 +432,48 @@ public static void NativeDelegateType( // Load the local [0] _ = invokeInstructions.Add(Ldarg_0); - _ = invokeInstructions.Add(Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module)); + _ = invokeInstructions.Add(Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue); _ = invokeInstructions.Add(Stloc_0); // '.try' for local [0] CilInstruction try_0 = invokeInstructions.Add(Ldarg_1); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToUnmanaged.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToUnmanaged); _ = invokeInstructions.Add(Stloc_1); // '.try' for local [1] CilInstruction try_1 = invokeInstructions.Add(Ldarg_2); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToUnmanaged.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectMarshallerConvertToUnmanaged); _ = invokeInstructions.Add(Stloc_2); // 'Invoke' call for the native delegate (and 'try' for local [2]) CilInstruction try_2 = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[0]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe); _ = invokeInstructions.Add(Stloc_3); _ = invokeInstructions.Add(Ldloc_3); _ = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[1]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe); _ = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[2]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe); _ = invokeInstructions.Add(Ldloc_3); _ = invokeInstructions.Add(Ldind_I); _ = invokeInstructions.Add(Ldfld, interopDefinitions.DelegateVftbl.Fields[3]); - _ = invokeInstructions.Add(Calli, WellKnownTypeSignatureFactory.InvokeImpl(interopReferences).Import(module).MakeStandAloneSignature()); - _ = invokeInstructions.Add(Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module)); + _ = invokeInstructions.Add(Calli, WellKnownTypeSignatureFactory.InvokeImpl(interopReferences).MakeStandAloneSignature()); + _ = invokeInstructions.Add(Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR); _ = invokeInstructions.Add(Leave_S, ret.CreateLabel()); // 'finally' for local [2] CilInstruction finally_2 = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[2]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose); _ = invokeInstructions.Add(Endfinally); // 'finally' for local [1] CilInstruction finally_1 = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[1]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose); _ = invokeInstructions.Add(Endfinally); // 'finally' for local [0] CilInstruction finally_0 = invokeInstructions.Add(Ldloca_S, invokeBody.LocalVariables[0]); - _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module)); + _ = invokeInstructions.Add(Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose); _ = invokeInstructions.Add(Endfinally); invokeInstructions.Add(ret); @@ -541,7 +535,7 @@ public static void ComWrappersMarshallerAttribute( ns: InteropUtf8NameFactory.TypeNamespace(delegateType), name: InteropUtf8NameFactory.TypeName(delegateType, "ComWrappersMarshallerAttribute"), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute.Import(module)); + baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute); module.TopLevelTypes.Add(marshallerType); @@ -551,10 +545,10 @@ public static void ComWrappersMarshallerAttribute( marshallerType.Methods.Add(ctor); _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); - _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor); // The 'ComputeVtables' method returns the 'ComWrappers.ComInterfaceEntry*' type - PointerTypeSignature computeVtablesReturnType = interopReferences.ComInterfaceEntry.Import(module).MakePointerType(); + PointerTypeSignature computeVtablesReturnType = interopReferences.ComInterfaceEntry.MakePointerType(); // Define the 'ComputeVtables' method as follows: // @@ -579,12 +573,11 @@ public static void ComWrappersMarshallerAttribute( // Add and implement the 'ComputeVtables' method marshallerType.AddMethodImplementation( - declaration: interopReferences.WindowsRuntimeComWrappersMarshallerAttributeComputeVtables.Import(module), + declaration: interopReferences.WindowsRuntimeComWrappersMarshallerAttributeComputeVtables, method: computeVtablesMethod); // Import the 'UnboxToManaged' method for the delegate IMethodDescriptor windowsRuntimeDelegateMarshallerUnboxToManaged2Descriptor = interopReferences.WindowsRuntimeDelegateMarshallerUnboxToManaged2 - .Import(module) .MakeGenericInstanceMethod(delegateComWrappersCallbackType.ToReferenceTypeSignature()); // Define the 'CreateObject' method as follows: @@ -597,7 +590,7 @@ public static void ComWrappersMarshallerAttribute( returnType: module.CorLibTypeFactory.Object, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.CreatedWrapperFlags.Import(module).MakeByReferenceType()])) + interopReferences.CreatedWrapperFlags.MakeByReferenceType()])) { CilOutParameterIndices = [2], CilInstructions = @@ -614,7 +607,7 @@ public static void ComWrappersMarshallerAttribute( // Add and implement the 'CreateObject' method marshallerType.AddMethodImplementation( - declaration: interopReferences.WindowsRuntimeComWrappersMarshallerAttributeCreateObject.Import(module), + declaration: interopReferences.WindowsRuntimeComWrappersMarshallerAttributeCreateObject, method: createObjectMethod); } @@ -647,8 +640,7 @@ public static void Marshaller( module.TopLevelTypes.Add(marshallerType); // Prepare the external types we need in the implemented methods - TypeSignature delegateType2 = delegateType.Import(module); - TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue.Import(module).ToValueTypeSignature(); + TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature(); // Define the 'ConvertToUnmanaged' method as follows: // @@ -658,13 +650,13 @@ public static void Marshaller( attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( returnType: windowsRuntimeObjectReferenceValueType, - parameterTypes: [delegateType2])) + parameterTypes: [delegateType])) { CilInstructions = { { Ldarg_0 }, { Call, get_IidMethod }, - { Call, interopReferences.WindowsRuntimeDelegateMarshallerConvertToUnmanaged.Import(module) }, + { Call, interopReferences.WindowsRuntimeDelegateMarshallerConvertToUnmanaged }, { Ret } } }; @@ -674,7 +666,6 @@ public static void Marshaller( // Construct a descriptor for 'WindowsRuntimeDelegateMarshaller.ConvertToManaged<>(void*)' IMethodDescriptor windowsRuntimeDelegateMarshallerConvertToManaged = interopReferences.WindowsRuntimeDelegateMarshallerConvertToManaged - .Import(module) .MakeGenericInstanceMethod(delegateComWrappersCallbackType.ToReferenceTypeSignature()); // Define the 'ConvertToManaged' method as follows: @@ -684,14 +675,14 @@ public static void Marshaller( name: "ConvertToManaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: delegateType2, + returnType: delegateType, parameterTypes: [module.CorLibTypeFactory.Void.MakePointerType()])) { CilInstructions = { { Ldarg_0 }, { Call, windowsRuntimeDelegateMarshallerConvertToManaged }, - { Castclass, delegateType2.ToTypeDefOrRef() }, + { Castclass, delegateType.ToTypeDefOrRef() }, { Ret } } }; @@ -706,13 +697,13 @@ public static void Marshaller( attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( returnType: windowsRuntimeObjectReferenceValueType, - parameterTypes: [delegateType2])) + parameterTypes: [delegateType])) { CilInstructions = { { Ldarg_0 }, { Call, get_ReferenceIidMethod }, - { Call, interopReferences.WindowsRuntimeDelegateMarshallerBoxToUnmanaged.Import(module) }, + { Call, interopReferences.WindowsRuntimeDelegateMarshallerBoxToUnmanaged }, { Ret } } }; @@ -722,7 +713,6 @@ public static void Marshaller( // Construct a descriptor for 'WindowsRuntimeDelegateMarshaller.UnboxToManaged<>(void*)' IMethodDescriptor windowsRuntimeDelegateMarshallerUnboxToManaged = interopReferences.WindowsRuntimeDelegateMarshallerUnboxToManaged - .Import(module) .MakeGenericInstanceMethod(delegateComWrappersCallbackType.ToReferenceTypeSignature()); // Define the 'UnboxToManaged' method as follows: @@ -732,7 +722,7 @@ public static void Marshaller( name: "UnboxToManaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: delegateType2, + returnType: delegateType, parameterTypes: [module.CorLibTypeFactory.Void.MakePointerType()])) { CilInstructions = diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.EventSource.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.EventSource.cs index c7440235f..b4cd0eccd 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.EventSource.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.EventSource.cs @@ -161,7 +161,7 @@ private static void DerivedEventSource( ns: "ABI.WindowsRuntime.InteropServices"u8, name: InteropUtf8NameFactory.TypeName(baseEventSourceSignature), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: baseEventSourceSignature.Import(module).ToTypeDefOrRef()); + baseType: baseEventSourceSignature.ToTypeDefOrRef()); module.TopLevelTypes.Add(eventSourceType); @@ -176,7 +176,7 @@ private static void DerivedEventSource( MethodDefinition ctor = MethodDefinition.CreateConstructor( module: module, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32]); eventSourceType.Methods.Add(ctor); @@ -184,7 +184,7 @@ private static void DerivedEventSource( _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); _ = ctor.CilMethodBody!.Instructions.Insert(1, Ldarg_1); _ = ctor.CilMethodBody!.Instructions.Insert(2, Ldarg_2); - _ = ctor.CilMethodBody!.Instructions.Insert(3, Call, baseEventSource_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(3, Call, baseEventSource_ctor); // Define the 'ConvertToUnmanaged' method as follows: // @@ -193,8 +193,8 @@ private static void DerivedEventSource( name: "ConvertToUnmanaged"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Virtual, signature: MethodSignature.CreateInstance( - returnType: interopReferences.WindowsRuntimeObjectReferenceValue.Import(module).ToValueTypeSignature(), - parameterTypes: [delegateType.Import(module)])) + returnType: interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature(), + parameterTypes: [delegateType])) { CilInstructions = { @@ -206,7 +206,7 @@ private static void DerivedEventSource( // Add and implement the 'ConvertToUnmanaged' method eventSourceType.AddMethodImplementation( - declaration: baseEventSourceConvertToUnmanaged.Import(module), + declaration: baseEventSourceConvertToUnmanaged, method: convertToUnmanagedMethod); } } diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncActionWithProgress1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncActionWithProgress1.cs index daee341c9..1d5cc255e 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncActionWithProgress1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncActionWithProgress1.cs @@ -46,7 +46,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IAsyncActionWithProgressMethodsImpl1.MakeGenericReferenceType(progressType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IAsyncActionWithProgressMethodsImpl1.MakeGenericReferenceType(progressType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(actionMethodsType); @@ -66,7 +66,7 @@ public static void Methods( module: module); actionMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1get_Progress(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1get_Progress(progressType), method: get_ProgressMethod); // Get the generated 'ConvertToUnmanaged' method to marshal the 'AsyncActionProgressHandler' instance to native @@ -84,7 +84,7 @@ public static void Methods( module: module); actionMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1set_Progress(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1set_Progress(progressType), method: set_ProgressMethod); // Get the generated 'ConvertToManaged' method to marshal the 'AsyncActionWithProgressCompletedHandler' instance to managed @@ -102,7 +102,7 @@ public static void Methods( module: module); actionMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1get_Completed(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1get_Completed(progressType), method: get_CompletedMethod); // Get the generated 'ConvertToUnmanaged' method to marshal the 'AsyncActionWithProgressCompletedHandler' instance to native @@ -120,7 +120,7 @@ public static void Methods( module: module); actionMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1set_Completed(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1set_Completed(progressType), method: set_CompletedMethod); // Define the 'GetResults' method as follows: @@ -131,18 +131,18 @@ public static void Methods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IAsyncActionWithProgressGetResults.Import(module) }, + { Call, interopReferences.IAsyncActionWithProgressGetResults }, { Ret } } }; actionMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1GetResults(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgressMethodsImpl1GetResults(progressType), method: getResultsMethod); } @@ -277,11 +277,11 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(actionType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IAsyncInfo.Import(module)) + new InterfaceImplementation(actionType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IAsyncInfo) } }; @@ -294,11 +294,11 @@ public static void InterfaceImpl( MethodDefinition get_ProgressMethod = new( name: $"Windows.Foundation.IAsyncActionWithProgress<{progressType.FullName}>.get_Progress", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.AsyncActionProgressHandler1.MakeGenericReferenceType(progressType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.AsyncActionProgressHandler1.MakeGenericReferenceType(progressType))); // Add and implement the 'get_Progress' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgress1get_Progress(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgress1get_Progress(progressType), method: get_ProgressMethod); // Create a body for the 'get_Progress' method @@ -315,11 +315,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.AsyncActionProgressHandler1.MakeGenericReferenceType(progressType).Import(module)])); + parameterTypes: [interopReferences.AsyncActionProgressHandler1.MakeGenericReferenceType(progressType)])); // Add and implement the 'set_Progress' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgress1set_Progress(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgress1set_Progress(progressType), method: set_ProgressMethod); // Create a body for the 'set_Progress' method @@ -349,11 +349,11 @@ public static void InterfaceImpl( MethodDefinition get_CompletedMethod = new( name: $"Windows.Foundation.IAsyncActionWithProgress<{progressType.FullName}>.get_Completed", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.AsyncActionWithProgressCompletedHandler1.MakeGenericReferenceType(progressType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.AsyncActionWithProgressCompletedHandler1.MakeGenericReferenceType(progressType))); // Add and implement the 'get_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgress1get_Completed(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgress1get_Completed(progressType), method: get_CompletedMethod); // Create a body for the 'get_Completed' method @@ -370,11 +370,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.AsyncActionWithProgressCompletedHandler1.MakeGenericReferenceType(progressType).Import(module)])); + parameterTypes: [interopReferences.AsyncActionWithProgressCompletedHandler1.MakeGenericReferenceType(progressType)])); // Add and implement the 'set_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgress1set_Completed(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgress1set_Completed(progressType), method: set_CompletedMethod); // Create a body for the 'set_Completed' method @@ -405,7 +405,7 @@ public static void InterfaceImpl( // Add and implement the 'GetResults' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncActionWithProgress1GetResults(progressType).Import(module), + declaration: interopReferences.IAsyncActionWithProgress1GetResults(progressType), method: getResultsMethod); // Create a body for the 'GetResults' method diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperation1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperation1.cs index 0107c9684..ee1985c67 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperation1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperation1.cs @@ -45,7 +45,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IAsyncOperationMethodsImpl1.MakeGenericReferenceType(resultType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IAsyncOperationMethodsImpl1.MakeGenericReferenceType(resultType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(operationMethodsType); @@ -65,7 +65,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationMethodsImpl1get_Completed(resultType).Import(module), + declaration: interopReferences.IAsyncOperationMethodsImpl1get_Completed(resultType), method: get_CompletedMethod); // Get the generated 'ConvertToUnmanaged' method to marshal the 'AsyncOperationCompletedHandler' instance to native @@ -83,7 +83,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationMethodsImpl1set_Completed(resultType).Import(module), + declaration: interopReferences.IAsyncOperationMethodsImpl1set_Completed(resultType), method: set_CompletedMethod); // Define the 'GetResults' method: @@ -95,7 +95,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationMethodsImpl1GetResults(resultType).Import(module), + declaration: interopReferences.IAsyncOperationMethodsImpl1GetResults(resultType), method: getResultsMethod); } @@ -230,11 +230,11 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(operationType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IAsyncInfo.Import(module)) + new InterfaceImplementation(operationType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IAsyncInfo) } }; @@ -247,11 +247,11 @@ public static void InterfaceImpl( MethodDefinition get_CompletedMethod = new( name: $"Windows.Foundation.IAsyncOperation<{resultType.FullName}>.get_Completed", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.AsyncOperationCompletedHandler1.MakeGenericReferenceType(resultType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.AsyncOperationCompletedHandler1.MakeGenericReferenceType(resultType))); // Add and implement the 'get_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperation1get_Completed(resultType).Import(module), + declaration: interopReferences.IAsyncOperation1get_Completed(resultType), method: get_CompletedMethod); // Create a body for the 'get_Completed' method @@ -268,11 +268,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.AsyncOperationCompletedHandler1.MakeGenericReferenceType(resultType).Import(module)])); + parameterTypes: [interopReferences.AsyncOperationCompletedHandler1.MakeGenericReferenceType(resultType)])); // Add and implement the 'set_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperation1set_Completed(resultType).Import(module), + declaration: interopReferences.IAsyncOperation1set_Completed(resultType), method: set_CompletedMethod); // Create a body for the 'set_Completed' method @@ -299,11 +299,11 @@ public static void InterfaceImpl( MethodDefinition getResultsMethod = new( name: $"Windows.Foundation.IAsyncOperation<{resultType.FullName}>.GetResults", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(resultType.Import(module))); + signature: MethodSignature.CreateInstance(resultType)); // Add and implement the 'GetResults' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperation1GetResults(resultType).Import(module), + declaration: interopReferences.IAsyncOperation1GetResults(resultType), method: getResultsMethod); // Create a body for the 'GetResults' method diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperationWithProgress2.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperationWithProgress2.cs index 85daaf027..746344f35 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperationWithProgress2.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IAsyncOperationWithProgress2.cs @@ -46,7 +46,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IAsyncOperationWithProgressMethodsImpl2.MakeGenericReferenceType(resultType, progressType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IAsyncOperationWithProgressMethodsImpl2.MakeGenericReferenceType(resultType, progressType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(operationMethodsType); @@ -70,7 +70,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2get_Progress(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2get_Progress(resultType, progressType), method: get_ProgressMethod); // Get the generated 'ConvertToUnmanaged' method to marshal the 'AsyncOperationProgressHandler' instance to native @@ -88,7 +88,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2set_Progress(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2set_Progress(resultType, progressType), method: set_ProgressMethod); // Get the generated 'ConvertToManaged' method to marshal the 'AsyncOperationWithProgressCompletedHandler' instance to managed @@ -106,7 +106,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2get_Completed(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2get_Completed(resultType, progressType), method: get_CompletedMethod); // Get the generated 'ConvertToUnmanaged' method to marshal the 'AsyncOperationWithProgressCompletedHandler' instance to native @@ -124,7 +124,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2set_Completed(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2set_Completed(resultType, progressType), method: set_CompletedMethod); // Define the 'GetResults' method: @@ -136,7 +136,7 @@ public static void Methods( module: module); operationMethodsType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2GetResults(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgressMethodsImpl2GetResults(resultType, progressType), method: getResultsMethod); } @@ -273,11 +273,11 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(operationType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IAsyncInfo.Import(module)) + new InterfaceImplementation(operationType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IAsyncInfo) } }; @@ -294,11 +294,11 @@ public static void InterfaceImpl( MethodDefinition get_ProgressMethod = new( name: $"Windows.Foundation.IAsyncOperationWithProgress<{resultType.FullName},{progressType.FullName}>.get_Progress", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(asyncOperationProgressHandlerType.Import(module))); + signature: MethodSignature.CreateInstance(asyncOperationProgressHandlerType)); // Add and implement the 'get_Progress' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgress2get_Progress(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgress2get_Progress(resultType, progressType), method: get_ProgressMethod); // Create a body for the 'get_Progress' method @@ -315,11 +315,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [asyncOperationProgressHandlerType.Import(module)])); + parameterTypes: [asyncOperationProgressHandlerType])); // Add and implement the 'set_Progress' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgress2set_Progress(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgress2set_Progress(resultType, progressType), method: set_ProgressMethod); // Create a body for the 'set_Progress' method @@ -349,11 +349,11 @@ public static void InterfaceImpl( MethodDefinition get_CompletedMethod = new( name: $"Windows.Foundation.IAsyncOperationWithProgress<{resultType.FullName},{progressType.FullName}>.get_Completed", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(asyncOperationWithProgressCompletedHandlerType.Import(module))); + signature: MethodSignature.CreateInstance(asyncOperationWithProgressCompletedHandlerType)); // Add and implement the 'get_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgress2get_Completed(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgress2get_Completed(resultType, progressType), method: get_CompletedMethod); // Create a body for the 'get_Completed' method @@ -370,11 +370,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [asyncOperationWithProgressCompletedHandlerType.Import(module)])); + parameterTypes: [asyncOperationWithProgressCompletedHandlerType])); // Add and implement the 'set_Completed' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgress2set_Completed(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgress2set_Completed(resultType, progressType), method: set_CompletedMethod); // Create a body for the 'set_Completed' method @@ -401,11 +401,11 @@ public static void InterfaceImpl( MethodDefinition getResultsMethod = new( name: $"Windows.Foundation.IAsyncOperationWithProgress<{resultType.FullName},{progressType.FullName}>.GetResults", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(resultType.Import(module))); + signature: MethodSignature.CreateInstance(resultType)); // Add and implement the 'GetResults' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IAsyncOperationWithProgress2GetResults(resultType, progressType).Import(module), + declaration: interopReferences.IAsyncOperationWithProgress2GetResults(resultType, progressType), method: getResultsMethod); // Create a body for the 'GetResults' method diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IDictionary2.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IDictionary2.cs index 6f05e21aa..31caea7ca 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IDictionary2.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IDictionary2.cs @@ -45,7 +45,7 @@ public static void Interface( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface) } }; module.TopLevelTypes.Add(interfaceType); @@ -57,7 +57,6 @@ public static void Interface( WellKnownMemberDefinitionFactory.IID( forwardedIidMethod: get_IidMethod, interopReferences: interopReferences, - module: module, out MethodDefinition get_IidMethod2, out PropertyDefinition iidProperty); @@ -65,7 +64,7 @@ public static void Interface( // Add and implement the 'get_IID' method interfaceType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeInterfaceget_IID.Import(module), + declaration: interopReferences.IWindowsRuntimeInterfaceget_IID, method: get_IidMethod2); } @@ -212,7 +211,7 @@ public static void IMapMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IMapMethodsImpl2.MakeGenericReferenceType(keyType, valueType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IMapMethodsImpl2.MakeGenericReferenceType(keyType, valueType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(mapMethodsType); @@ -229,13 +228,13 @@ public static void IMapMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { NoInlining = true }; // Add and implement the 'HasKey' method mapMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapMethodsImpl2HasKey(keyType, valueType).Import(module), + declaration: interopReferences.IMapMethodsImpl2HasKey(keyType, valueType), method: hasKeyMethod); // Create a method body for the 'HasKey' method @@ -251,15 +250,15 @@ public static void IMapMethods( name: "Lookup"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: valueType.Import(module), + returnType: valueType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { NoInlining = true }; // Add and implement the 'Lookup' method mapMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapMethodsImpl2Lookup(keyType, valueType).Import(module), + declaration: interopReferences.IMapMethodsImpl2Lookup(keyType, valueType), method: lookupMethod); // Create a method body for the 'Lookup' method @@ -277,14 +276,14 @@ public static void IMapMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module), - valueType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType, + valueType])) { NoInlining = true }; // Add and implement the 'Insert' method mapMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapMethodsImpl2Insert(keyType, valueType).Import(module), + declaration: interopReferences.IMapMethodsImpl2Insert(keyType, valueType), method: insertMethod); // Create a method body for the 'Insert' method @@ -302,13 +301,13 @@ public static void IMapMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { NoInlining = true }; // Add and implement the 'Remove' method mapMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapMethodsImpl2Remove(keyType, valueType).Import(module), + declaration: interopReferences.IMapMethodsImpl2Remove(keyType, valueType), method: removeMethod); // Create a method body for the 'Remove' method @@ -354,16 +353,16 @@ public static void IDictionaryMethods( name: "Item"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: valueType.Import(module), + returnType: valueType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2get_Item(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2get_Item(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -379,16 +378,16 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module), - valueType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType, + valueType])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IDictionaryMethods2set_Item(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2set_Item(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -404,16 +403,16 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module), - valueType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType, + valueType])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IDictionaryMethods2Add(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2Add(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -429,14 +428,14 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2Remove(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2Remove(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -451,12 +450,12 @@ public static void IDictionaryMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Int32, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IDictionaryMethodsCount.Import(module) }, + { Call, interopReferences.IDictionaryMethodsCount }, { Ret } } }; @@ -472,14 +471,14 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2ContainsKey(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2ContainsKey(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -495,9 +494,9 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module), - valueType.Import(module).MakeByReferenceType()])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType, + valueType.MakeByReferenceType()])) { CilOutParameterIndices = [3], CilInstructions = @@ -505,7 +504,7 @@ public static void IDictionaryMethods( { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IDictionaryMethods2TryGetValue(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2TryGetValue(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -521,14 +520,14 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType).Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType)])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2AddKeyValuePair(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2AddKeyValuePair(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -544,14 +543,14 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType).Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType)])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2RemoveKeyValuePair(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2RemoveKeyValuePair(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -566,12 +565,12 @@ public static void IDictionaryMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IDictionaryMethodsClear.Import(module) }, + { Call, interopReferences.IDictionaryMethodsClear }, { Ret } } }; @@ -587,14 +586,14 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType).Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType)])) { CilInstructions = { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IDictionaryMethods2Contains(keyType, valueType, mapMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2Contains(keyType, valueType, mapMethodsType) }, { Ret } } }; @@ -619,9 +618,9 @@ public static void IDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType).Import(module).MakeSzArrayType(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + interopReferences.KeyValuePair2.MakeGenericValueType(keyType, valueType).MakeSzArrayType(), module.CorLibTypeFactory.Int32])) { CilInstructions = @@ -630,7 +629,7 @@ public static void IDictionaryMethods( { Ldarg_1 }, { Ldarg_2 }, { Ldarg_3 }, - { Call, interopReferences.IDictionaryMethods2CopyTo(keyType, valueType, mapMethodsType, iterableMethodsType).Import(module) }, + { Call, interopReferences.IDictionaryMethods2CopyTo(keyType, valueType, mapMethodsType, iterableMethodsType) }, { Ret } } }; @@ -788,13 +787,13 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(dictionaryType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(collectionType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(enumerableType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(dictionaryType.ToTypeDefOrRef()), + new InterfaceImplementation(collectionType.ToTypeDefOrRef()), + new InterfaceImplementation(enumerableType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -807,11 +806,11 @@ public static void InterfaceImpl( MethodDefinition get_ItemMethod = new( name: $"System.Collections.Generic.IDictionary<{keyType.FullName},{valueType.FullName}>.get_Item", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(valueType.Import(module), keyType.Import(module))); + signature: MethodSignature.CreateInstance(valueType, keyType)); // Add and implement the 'get_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2get_Item(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2get_Item(keyType, valueType), method: get_ItemMethod); // Create a body for the 'get_Item' method @@ -828,11 +827,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [keyType.Import(module), valueType.Import(module)])); + parameterTypes: [keyType, valueType])); // Add and implement the 'set_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2set_Item(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2set_Item(keyType, valueType), method: set_ItemMethod); // Create a body for the 'set_Item' method @@ -859,19 +858,19 @@ public static void InterfaceImpl( MethodDefinition get_KeysMethod = new( name: $"System.Collections.Generic.IDictionary<{keyType.FullName},{valueType.FullName}>.get_Keys", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.ICollection1.MakeGenericReferenceType(keyType).Import(module))) + signature: MethodSignature.CreateInstance(interopReferences.ICollection1.MakeGenericReferenceType(keyType))) { CilInstructions = { { Ldarg_0 }, - { Newobj, interopReferences.DictionaryKeyCollection2_ctor(keyType, valueType).Import(module) }, + { Newobj, interopReferences.DictionaryKeyCollection2_ctor(keyType, valueType) }, { Ret } } }; // Add and implement the 'get_Keys' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2get_Keys(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2get_Keys(keyType, valueType), method: get_KeysMethod); // Create the 'Keys' property @@ -887,19 +886,19 @@ public static void InterfaceImpl( MethodDefinition get_ValuesMethod = new( name: $"System.Collections.Generic.IDictionary<{keyType.FullName},{valueType.FullName}>.get_Values", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.ICollection1.MakeGenericReferenceType(valueType).Import(module))) + signature: MethodSignature.CreateInstance(interopReferences.ICollection1.MakeGenericReferenceType(valueType))) { CilInstructions = { { Ldarg_0 }, - { Newobj, interopReferences.DictionaryValueCollection2_ctor(keyType, valueType).Import(module) }, + { Newobj, interopReferences.DictionaryValueCollection2_ctor(keyType, valueType) }, { Ret } } }; // Add and implement the 'get_Values' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2get_Values(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2get_Values(keyType, valueType), method: get_ValuesMethod); // Create the 'Values' property @@ -917,11 +916,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyType.Import(module)])); + parameterTypes: [keyType])); // Add and implement the 'ContainsKey' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2ContainsKey(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2ContainsKey(keyType, valueType), method: containsKeyMethod); // Create a body for the 'ContainsKey' method @@ -938,12 +937,12 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyType.Import(module), valueType.Import(module).MakeByReferenceType()])) + parameterTypes: [keyType, valueType.MakeByReferenceType()])) { CilOutParameterIndices = [2] }; // Add and implement the 'TryGetValue' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2TryGetValue(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2TryGetValue(keyType, valueType), method: tryGetValueMethod); // Create a body for the 'TryGetValue' method @@ -965,11 +964,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [keyType.Import(module), valueType.Import(module)])); + parameterTypes: [keyType, valueType])); // Add and implement the 'Add' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2Add(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2Add(keyType, valueType), method: addMethod); // Create a body for the 'Add' method @@ -986,11 +985,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyType.Import(module)])); + parameterTypes: [keyType])); // Add and implement the 'Remove' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDictionary2Remove(keyType, valueType).Import(module), + declaration: interopReferences.IDictionary2Remove(keyType, valueType), method: removeMethod); // Create a body for the 'Remove' method @@ -1007,11 +1006,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [keyValuePairType.Import(module)])); + parameterTypes: [keyValuePairType])); // Add and implement the 'Add' ('KeyValuePair<,>') method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Add(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1Add(keyValuePairType), method: addKeyValuePairMethod); // Create a body for the 'Add' ('KeyValuePair<,>') method @@ -1028,11 +1027,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyValuePairType.Import(module)])); + parameterTypes: [keyValuePairType])); // Add and implement the 'Remove' ('KeyValuePair<,>') method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Remove(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1Remove(keyValuePairType), method: removeKeyValuePairMethod); // Create a body for the 'Remove' ('KeyValuePair<,>') method @@ -1049,11 +1048,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyValuePairType.Import(module)])); + parameterTypes: [keyValuePairType])); // Add and implement the 'Contains' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Contains(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1Contains(keyValuePairType), method: containsMethod); // Create a body for the 'Contains' method @@ -1071,28 +1070,28 @@ public static void InterfaceImpl( signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - keyValuePairType.MakeSzArrayType().Import(module), + keyValuePairType.MakeSzArrayType(), module.CorLibTypeFactory.Int32])) { // Create a body for the 'CopyTo' method. This method is special: we also need to pass a 'WindowsRuntimeObjectReference' // for the 'IEnumerable>' interface, as it needs to enumerate the key-value pairs. So here we // are emitting code manually, to save the current 'WindowsRuntimeObject', resolve the two references, and forward the call. - CilLocalVariables = { new CilLocalVariable(interopReferences.WindowsRuntimeObject.Import(module).ToReferenceTypeSignature()) }, + CilLocalVariables = { new CilLocalVariable(interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature()) }, CilInstructions = { { Ldarg_0 }, - { Castclass, interopReferences.WindowsRuntimeObject.Import(module) }, + { Castclass, interopReferences.WindowsRuntimeObject }, { Stloc_0 }, { Ldloc_0 }, - { Ldtoken, dictionaryType.Import(module).ToTypeDefOrRef() }, - { Call, interopReferences.TypeGetTypeFromHandle.Import(module) }, - { Callvirt, interopReferences.Typeget_TypeHandle.Import(module) }, - { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface.Import(module) }, + { Ldtoken, dictionaryType.ToTypeDefOrRef() }, + { Call, interopReferences.TypeGetTypeFromHandle }, + { Callvirt, interopReferences.Typeget_TypeHandle }, + { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface }, { Ldloc_0 }, - { Ldtoken, enumerableType.Import(module).ToTypeDefOrRef() }, - { Call, interopReferences.TypeGetTypeFromHandle.Import(module) }, - { Callvirt, interopReferences.Typeget_TypeHandle.Import(module) }, - { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface.Import(module) }, + { Ldtoken, enumerableType.ToTypeDefOrRef() }, + { Call, interopReferences.TypeGetTypeFromHandle }, + { Callvirt, interopReferences.Typeget_TypeHandle }, + { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface }, { Ldarg_1 }, { Ldarg_2 }, { Call, dictionaryMethodsType.GetMethod("CopyTo"u8) }, @@ -1102,7 +1101,7 @@ public static void InterfaceImpl( // Add and implement the 'CopyTo' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1CopyTo(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1CopyTo(keyValuePairType), method: copyToMethod); // Create the 'get_Count' getter method @@ -1113,7 +1112,7 @@ public static void InterfaceImpl( // Add and implement the 'get_Count' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1get_Count(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1get_Count(keyValuePairType), method: get_CountMethod); // Create a body for the 'get_Count' method @@ -1148,7 +1147,7 @@ public static void InterfaceImpl( // Add and implement the 'get_IsReadOnly' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1get_IsReadOnly(keyValuePairType).Import(module), + declaration: interopReferences.ICollection1get_IsReadOnly(keyValuePairType), method: get_IsReadOnlyMethod); // Create the 'IsReadOnly' property diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerable1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerable1.cs index 8e8c7750f..72e0db504 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerable1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerable1.cs @@ -46,7 +46,7 @@ public static void Interface( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface) } }; module.TopLevelTypes.Add(interfaceType); @@ -58,7 +58,6 @@ public static void Interface( WellKnownMemberDefinitionFactory.IID( forwardedIidMethod: get_IidMethod, interopReferences: interopReferences, - module: module, out MethodDefinition get_IidMethod2, out PropertyDefinition iidProperty); @@ -66,7 +65,7 @@ public static void Interface( // Add and implement the 'get_IID' method interfaceType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeInterfaceget_IID.Import(module), + declaration: interopReferences.IWindowsRuntimeInterfaceget_IID, method: get_IidMethod2); } @@ -96,7 +95,7 @@ public static void IIterableMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IIterableMethodsImpl1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IIterableMethodsImpl1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(iterableMethodsType); @@ -111,13 +110,13 @@ public static void IIterableMethods( name: "First"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + returnType: interopReferences.IEnumerator1.MakeGenericReferenceType(elementType), + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { NoInlining = true }; // Add and implement the 'First' method iterableMethodsType.AddMethodImplementation( - declaration: interopReferences.IIterableMethodsImpl1First(elementType).Import(module), + declaration: interopReferences.IIterableMethodsImpl1First(elementType), method: firstMethod); // Get the generated 'ConvertToManaged' method to marshal the 'IEnumerator' instance to managed @@ -130,10 +129,10 @@ public static void IIterableMethods( // [1]: 'void*' (for 'thisPtr') // [2]: 'void*' (the enumerator pointer that was retrieved) // [3]: 'IEnumerator<>' (the marshalled enumerator) - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); CilLocalVariable loc_2_enumeratorPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); - CilLocalVariable loc_3_enumerator = new(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module)); + CilLocalVariable loc_3_enumerator = new(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType)); // Jump labels CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue); @@ -151,25 +150,25 @@ public static void IIterableMethods( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_1 }, { Ldloc_1 }, { Ldloca_S, loc_2_enumeratorPtr }, { Ldloc_1 }, { Ldind_I }, { Ldfld, interopDefinitions.IEnumerable1Vftbl.GetField("First"u8) }, - { Calli, WellKnownTypeSignatureFactory.IEnumerable1FirstImpl(interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.IEnumerable1FirstImpl(interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, nop_finallyEnd.CreateLabel() }, // '.finally' code { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, { nop_finallyEnd }, @@ -179,7 +178,7 @@ public static void IIterableMethods( { Stloc_3 }, { Leave_S, ldloc_3_finallyEnd.CreateLabel() }, { ldloc_2_finallyStart }, - { Call, interopReferences.WindowsRuntimeUnknownMarshallerFree.Import(module) }, + { Call, interopReferences.WindowsRuntimeUnknownMarshallerFree }, { Endfinally }, { ldloc_3_finallyEnd }, { Ret } @@ -244,8 +243,8 @@ public static void IEnumerableMethods( name: "GetEnumerator"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + returnType: interopReferences.IEnumerator1.MakeGenericReferenceType(elementType), + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); enumerableMethodsType.Methods.Add(getEnumeratorMethod); @@ -397,11 +396,11 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(enumerableType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(enumerableType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -411,11 +410,11 @@ public static void InterfaceImpl( MethodDefinition enumerable1GetEnumeratorMethod = new( name: $"System.Collections.Generic.IEnumerable<{elementType.FullName}>.GetEnumerator", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType))); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerable1GetEnumerator(elementType).Import(module), + declaration: interopReferences.IEnumerable1GetEnumerator(elementType), method: enumerable1GetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -430,11 +429,11 @@ public static void InterfaceImpl( MethodDefinition enumerableGetEnumeratorMethod = new( name: "System.Collections.IEnumerable.GetEnumerator"u8, attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.Import(module).ToReferenceTypeSignature())); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.ToReferenceTypeSignature())); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerableGetEnumerator.Import(module), + declaration: interopReferences.IEnumerableGetEnumerator, method: enumerableGetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -443,7 +442,7 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType).Import(module) }, + { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType) }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerator1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerator1.cs index b3865e57b..acfe1a34b 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerator1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IEnumerator1.cs @@ -48,7 +48,7 @@ public static void IIteratorMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IIteratorMethodsImpl1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IIteratorMethodsImpl1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(iteratorMethodsType); @@ -60,22 +60,22 @@ public static void IIteratorMethods( name: "Current"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: enumeratorType.TypeArguments[0].Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + returnType: enumeratorType.TypeArguments[0], + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { NoInlining = true }; // Add and implement the 'Current' method iteratorMethodsType.AddMethodImplementation( - declaration: interopReferences.IIteratorMethodsImpl1Current(elementType).Import(module), + declaration: interopReferences.IIteratorMethodsImpl1Current(elementType), method: currentMethod); // Declare the local variables: // [0]: 'WindowsRuntimeObjectReferenceValue' (for 'thisValue') // [1]: 'void*' (for 'thisPtr') // [2]: '' (the native value that was retrieved) - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); - CilLocalVariable loc_2_currentNative = new(elementType.GetAbiType(interopReferences).Import(module)); + CilLocalVariable loc_2_currentNative = new(elementType.GetAbiType(interopReferences)); // Jump labels CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue); @@ -91,25 +91,25 @@ public static void IIteratorMethods( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_1 }, { Ldloc_1 }, { Ldloca_S, loc_2_currentNative }, { Ldloc_1 }, { Ldind_I }, { Ldfld, interopDefinitions.IEnumerator1Vftbl.GetField("get_Current"u8) }, - { Calli, WellKnownTypeSignatureFactory.IEnumerator1CurrentImpl(interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.IEnumerator1CurrentImpl(interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, nop_finallyEnd.CreateLabel() }, // '.finally' code { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, { nop_finallyEnd }, { nop_returnValueRewrite } @@ -142,12 +142,12 @@ public static void IIteratorMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IIteratorMethodsHasCurrent.Import(module) }, + { Call, interopReferences.IIteratorMethodsHasCurrent }, { Ret } } }; @@ -162,12 +162,12 @@ public static void IIteratorMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IIteratorMethodsMoveNext.Import(module) }, + { Call, interopReferences.IIteratorMethodsMoveNext }, { Ret } } }; @@ -311,12 +311,12 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(enumeratorType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerator.Import(module)), - new InterfaceImplementation(interopReferences.IDisposable.Import(module)) + new InterfaceImplementation(enumeratorType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerator), + new InterfaceImplementation(interopReferences.IDisposable) } }; @@ -326,11 +326,11 @@ public static void InterfaceImpl( MethodDefinition get_IEnumerator1CurrentMethod = new( name: $"System.Collections.Generic.IEnumerator<{elementType.FullName}>.get_Current", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(elementType.Import(module))); + signature: MethodSignature.CreateInstance(elementType)); // Add and implement the 'IEnumerator.Current' get accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerator1get_Current(elementType).Import(module), + declaration: interopReferences.IEnumerator1get_Current(elementType), method: get_IEnumerator1CurrentMethod); // Create a method body for the 'IEnumerator.Current' property @@ -360,7 +360,7 @@ public static void InterfaceImpl( // Add and implement the 'IEnumerator.Current' get accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumeratorget_Current.Import(module), + declaration: interopReferences.IEnumeratorget_Current, method: get_IEnumeratorCurrentMethod); // Create a method body for the 'IEnumerator.Current' property @@ -369,14 +369,14 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Callvirt, interopReferences.IEnumerator1get_Current(elementType).Import(module) }, + { Callvirt, interopReferences.IEnumerator1get_Current(elementType) }, } }; // If the element type is a value type, we need to box it if (elementType.IsValueType) { - _ = get_IEnumeratorCurrentMethod.CilMethodBody.Instructions.Add(Box, elementType.Import(module).ToTypeDefOrRef()); + _ = get_IEnumeratorCurrentMethod.CilMethodBody.Instructions.Add(Box, elementType.ToTypeDefOrRef()); } // Add the return @@ -401,7 +401,7 @@ public static void InterfaceImpl( // Add and implement the 'MoveNext' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumeratorMoveNext.Import(module), + declaration: interopReferences.IEnumeratorMoveNext, method: moveNextMethod); // Create a method body for the 'MoveNext' method @@ -420,7 +420,7 @@ public static void InterfaceImpl( // Add and implement the 'Reset' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumeratorReset.Import(module), + declaration: interopReferences.IEnumeratorReset, method: resetMethod); // Create a method body for the 'Reset' method @@ -428,7 +428,7 @@ public static void InterfaceImpl( { Instructions = { - { Newobj, interopReferences.NotSupportedException_ctor.Import(module) }, + { Newobj, interopReferences.NotSupportedException_ctor }, { Throw } } }; @@ -441,7 +441,7 @@ public static void InterfaceImpl( // And and implement the 'Dispose' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IDisposableDispose.Import(module), + declaration: interopReferences.IDisposableDispose, method: disposeMethod); // Create a method body for the 'Dispose' method diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IList1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IList1.cs index 82b89cfad..6a04054b9 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IList1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IList1.cs @@ -45,7 +45,7 @@ public static void Interface( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeInterface) } }; module.TopLevelTypes.Add(interfaceType); @@ -57,7 +57,6 @@ public static void Interface( WellKnownMemberDefinitionFactory.IID( forwardedIidMethod: get_IidMethod, interopReferences: interopReferences, - module: module, out MethodDefinition get_IidMethod2, out PropertyDefinition iidProperty); @@ -65,7 +64,7 @@ public static void Interface( // Add and implement the 'get_IID' method interfaceType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeInterfaceget_IID.Import(module), + declaration: interopReferences.IWindowsRuntimeInterfaceget_IID, method: get_IidMethod2); } @@ -132,7 +131,7 @@ public static void IVectorMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IVectorMethodsImpl1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IVectorMethodsImpl1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(vectorMethodsType); @@ -150,7 +149,7 @@ public static void IVectorMethods( // Add and implement the 'GetAt' method vectorMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorMethodsImpl1GetAt(elementType).Import(module), + declaration: interopReferences.IVectorMethodsImpl1GetAt(elementType), method: getAtMethod); // Define the 'SetAt' method as follows: @@ -162,14 +161,14 @@ public static void IVectorMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.UInt32, - elementType.Import(module)])) + elementType])) { NoInlining = true }; // Add and implement the 'SetAt' method vectorMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorMethodsImpl1SetAt(elementType).Import(module), + declaration: interopReferences.IVectorMethodsImpl1SetAt(elementType), method: setAtMethod); // Create a method body for the 'SetAt' method @@ -187,13 +186,13 @@ public static void IVectorMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType])) { NoInlining = true }; // Add and implement the 'Append' method vectorMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorMethodsImpl1Append(elementType).Import(module), + declaration: interopReferences.IVectorMethodsImpl1Append(elementType), method: appendMethod); // Create a method body for the 'Append' method @@ -211,8 +210,8 @@ public static void IVectorMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType, module.CorLibTypeFactory.UInt32.MakeByReferenceType()])) { NoInlining = true, @@ -221,7 +220,7 @@ public static void IVectorMethods( // Add and implement the 'IndexOf' method vectorMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorMethodsImpl1IndexOf(elementType).Import(module), + declaration: interopReferences.IVectorMethodsImpl1IndexOf(elementType), method: indexOfMethod); // Create a method body for the 'IndexOf' method @@ -239,14 +238,14 @@ public static void IVectorMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.UInt32, - elementType.Import(module)])) + elementType])) { NoInlining = true }; // Add and implement the 'InsertAt' method vectorMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorMethodsImpl1InsertAt(elementType).Import(module), + declaration: interopReferences.IVectorMethodsImpl1InsertAt(elementType), method: insertAtMethod); // Create a method body for the 'InsertAt' method @@ -289,9 +288,9 @@ public static void IListMethods( name: "Item"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: elementType.Import(module), + returnType: elementType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32])); listMethodsType.Methods.Add(get_ItemMethod); @@ -303,7 +302,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethods1get_Item(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1get_Item(elementType, vectorMethodsType) }, { Ret } } }; @@ -317,9 +316,9 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32, - elementType.Import(module)])); + elementType])); listMethodsType.Methods.Add(set_ItemMethod); @@ -331,7 +330,7 @@ public static void IListMethods( { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IListMethods1set_Item(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1set_Item(elementType, vectorMethodsType) }, { Ret } } }; @@ -344,7 +343,7 @@ public static void IListMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Int32, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); listMethodsType.Methods.Add(countMethod); @@ -354,7 +353,7 @@ public static void IListMethods( Instructions = { { Ldarg_0 }, - { Call, interopReferences.IListMethodsCount.Import(module) }, + { Call, interopReferences.IListMethodsCount }, { Ret } } }; @@ -368,8 +367,8 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType])); listMethodsType.Methods.Add(addMethod); @@ -380,7 +379,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethods1Add(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1Add(elementType, vectorMethodsType) }, { Ret } } }; @@ -394,8 +393,8 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType])); listMethodsType.Methods.Add(containsMethod); @@ -406,7 +405,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethods1Contains(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1Contains(elementType, vectorMethodsType) }, { Ret } } }; @@ -420,8 +419,8 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module).MakeSzArrayType(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType.MakeSzArrayType(), module.CorLibTypeFactory.Int32])); listMethodsType.Methods.Add(copyToMethod); @@ -434,7 +433,7 @@ public static void IListMethods( { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IListMethods1CopyTo(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1CopyTo(elementType, vectorMethodsType) }, { Ret } } }; @@ -448,8 +447,8 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType])); listMethodsType.Methods.Add(removeMethod); @@ -460,7 +459,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethods1Remove(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1Remove(elementType, vectorMethodsType) }, { Ret } } }; @@ -474,7 +473,7 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32])); listMethodsType.Methods.Add(removeAtMethod); @@ -486,7 +485,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethodsRemoveAt.Import(module) }, + { Call, interopReferences.IListMethodsRemoveAt }, { Ret } } }; @@ -500,8 +499,8 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - elementType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + elementType])); listMethodsType.Methods.Add(indexOfMethod); @@ -512,7 +511,7 @@ public static void IListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IListMethods1IndexOf(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1IndexOf(elementType, vectorMethodsType) }, { Ret } } }; @@ -526,9 +525,9 @@ public static void IListMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32, - elementType.Import(module)])); + elementType])); listMethodsType.Methods.Add(insertMethod); @@ -540,7 +539,7 @@ public static void IListMethods( { Ldarg_0 }, { Ldarg_1 }, { Ldarg_2 }, - { Call, interopReferences.IListMethods1Insert(elementType, vectorMethodsType).Import(module) }, + { Call, interopReferences.IListMethods1Insert(elementType, vectorMethodsType) }, { Ret } } }; @@ -553,7 +552,7 @@ public static void IListMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); listMethodsType.Methods.Add(clearMethod); @@ -563,7 +562,7 @@ public static void IListMethods( Instructions = { { Ldarg_0 }, - { Call, interopReferences.IListMethodsClear.Import(module) }, + { Call, interopReferences.IListMethodsClear }, { Ret } } }; @@ -716,13 +715,13 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(listType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(collectionType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(enumerableType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(listType.ToTypeDefOrRef()), + new InterfaceImplementation(collectionType.ToTypeDefOrRef()), + new InterfaceImplementation(enumerableType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -735,11 +734,11 @@ public static void InterfaceImpl( MethodDefinition get_ItemMethod = new( name: $"System.Collections.Generic.IList<{elementType.FullName}>.get_Item", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(elementType.Import(module), module.CorLibTypeFactory.Int32)); + signature: MethodSignature.CreateInstance(elementType, module.CorLibTypeFactory.Int32)); // Add and implement the 'get_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IList1get_Item(elementType).Import(module), + declaration: interopReferences.IList1get_Item(elementType), method: get_ItemMethod); // Create a body for the 'get_Item' method @@ -758,11 +757,11 @@ public static void InterfaceImpl( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ module.CorLibTypeFactory.Int32, - elementType.Import(module)])); + elementType])); // Add and implement the 'set_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IList1set_Item(elementType).Import(module), + declaration: interopReferences.IList1set_Item(elementType), method: set_ItemMethod); // Create a body for the 'set_Item' method @@ -789,11 +788,11 @@ public static void InterfaceImpl( MethodDefinition indexOfMethod = new( name: $"System.Collections.Generic.IList<{elementType.FullName}>.IndexOf", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Int32, elementType.Import(module))); + signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Int32, elementType)); // Add and implement the 'IndexOf' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IList1get_Item(elementType).Import(module), + declaration: interopReferences.IList1get_Item(elementType), method: indexOfMethod); // Create a body for the 'IndexOf' method @@ -812,11 +811,11 @@ public static void InterfaceImpl( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ module.CorLibTypeFactory.Int32, - elementType.Import(module)])); + elementType])); // Add and implement the 'Insert' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IList1Insert(elementType).Import(module), + declaration: interopReferences.IList1Insert(elementType), method: insertMethod); // Create a body for the 'Insert' method @@ -835,7 +834,7 @@ public static void InterfaceImpl( // Add and implement the 'RemoveAt' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IList1RemoveAt(elementType).Import(module), + declaration: interopReferences.IList1RemoveAt(elementType), method: removeAtMethod); // Create a body for the 'RemoveAt' method @@ -854,7 +853,7 @@ public static void InterfaceImpl( // Add and implement the 'get_Count' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1get_Count(elementType).Import(module), + declaration: interopReferences.ICollection1get_Count(elementType), method: get_CountMethod); // Create a body for the 'get_Count' method @@ -882,7 +881,7 @@ public static void InterfaceImpl( // Add and implement the 'get_IsReadOnly' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1get_IsReadOnly(elementType).Import(module), + declaration: interopReferences.ICollection1get_IsReadOnly(elementType), method: get_IsReadOnlyMethod); // Create a body for the 'get_IsReadOnly' method @@ -908,11 +907,11 @@ public static void InterfaceImpl( MethodDefinition addMethod = new( name: $"System.Collections.Generic.ICollection<{elementType.FullName}>.Add", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Void, elementType.Import(module))); + signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Void, elementType)); // Add and implement the 'Add' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Add(elementType).Import(module), + declaration: interopReferences.ICollection1Add(elementType), method: addMethod); // Create a body for the 'Add' method @@ -931,7 +930,7 @@ public static void InterfaceImpl( // Add and implement the 'Clear' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Clear(elementType).Import(module), + declaration: interopReferences.ICollection1Clear(elementType), method: clearMethod); // Create a body for the 'Clear' method @@ -946,11 +945,11 @@ public static void InterfaceImpl( MethodDefinition containsMethod = new( name: $"System.Collections.Generic.ICollection<{elementType.FullName}>.Contains", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Boolean, elementType.Import(module))); + signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Boolean, elementType)); // Add and implement the 'Contains' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Contains(elementType).Import(module), + declaration: interopReferences.ICollection1Contains(elementType), method: containsMethod); // Create a body for the 'Contains' method @@ -968,12 +967,12 @@ public static void InterfaceImpl( signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - elementType.MakeSzArrayType().Import(module), + elementType.MakeSzArrayType(), module.CorLibTypeFactory.Int32])); // Add and implement the 'CopyTo' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1CopyTo(elementType).Import(module), + declaration: interopReferences.ICollection1CopyTo(elementType), method: copyToMethod); // Create a body for the 'CopyTo' method @@ -988,11 +987,11 @@ public static void InterfaceImpl( MethodDefinition removeMethod = new( name: $"System.Collections.Generic.ICollection<{elementType.FullName}>.Remove", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Boolean, elementType.Import(module))); + signature: MethodSignature.CreateInstance(module.CorLibTypeFactory.Boolean, elementType)); // Add and implement the 'Remove' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.ICollection1Remove(elementType).Import(module), + declaration: interopReferences.ICollection1Remove(elementType), method: removeMethod); // Create a body for the 'Remove' method @@ -1007,11 +1006,11 @@ public static void InterfaceImpl( MethodDefinition enumerable1GetEnumeratorMethod = new( name: $"System.Collections.Generic.IEnumerable<{elementType.FullName}>.GetEnumerator", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType))); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerable1GetEnumerator(elementType).Import(module), + declaration: interopReferences.IEnumerable1GetEnumerator(elementType), method: enumerable1GetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -1026,11 +1025,11 @@ public static void InterfaceImpl( MethodDefinition enumerableGetEnumeratorMethod = new( name: "System.Collections.IEnumerable.GetEnumerator"u8, attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.Import(module).ToReferenceTypeSignature())); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.ToReferenceTypeSignature())); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerableGetEnumerator.Import(module), + declaration: interopReferences.IEnumerableGetEnumerator, method: enumerableGetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -1039,7 +1038,7 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType).Import(module) }, + { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType) }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IMapChangedEventArgs1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IMapChangedEventArgs1.cs index ddce82f70..9d8f97c04 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IMapChangedEventArgs1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IMapChangedEventArgs1.cs @@ -45,7 +45,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IMapChangedEventArgsImpl1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IMapChangedEventArgsImpl1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(argsMethodsType); @@ -57,13 +57,13 @@ public static void Methods( name: "CollectionChange"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: interopReferences.CollectionChange.ToValueTypeSignature().Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + returnType: interopReferences.CollectionChange.ToValueTypeSignature(), + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { { Ldarg_0 }, - { Call, interopReferences.IMapChangedEventArgsMethodsCollectionChange.Import(module) }, + { Call, interopReferences.IMapChangedEventArgsMethodsCollectionChange }, { Ret } } }; @@ -77,12 +77,12 @@ public static void Methods( name: "Key"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: elementType.Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + returnType: elementType, + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); // Add and implement the 'Key' method argsMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapChangedEventArgsImpl1Key(elementType).Import(module), + declaration: interopReferences.IMapChangedEventArgsImpl1Key(elementType), method: keyMethod); // Create a method body for the 'Key' method @@ -232,8 +232,8 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, - Interfaces = { new InterfaceImplementation(argsType.Import(module).ToTypeDefOrRef()) } + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, + Interfaces = { new InterfaceImplementation(argsType.ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(interfaceImplType); @@ -242,11 +242,11 @@ public static void InterfaceImpl( MethodDefinition get_CollectionChangeMethod = new( name: $"Windows.Foundation.Collections.IMapChangedEventArgs<{elementType.FullName}>.get_CollectionChange", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.CollectionChange.ToValueTypeSignature().Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.CollectionChange.ToValueTypeSignature())); // Add and implement the 'CollectionChange' get accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IMapChangedEventArgs1get_CollectionChange(elementType).Import(module), + declaration: interopReferences.IMapChangedEventArgs1get_CollectionChange(elementType), method: get_CollectionChangeMethod); // Create a method body for the 'CollectionChange' property @@ -272,11 +272,11 @@ public static void InterfaceImpl( MethodDefinition get_KeyMethod = new( name: $"Windows.Foundation.Collections.IMapChangedEventArgs<{elementType.FullName}>.get_Key", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(elementType.Import(module))); + signature: MethodSignature.CreateInstance(elementType)); // Add and implement the 'Key' get accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IMapChangedEventArgs1get_Key(elementType).Import(module), + declaration: interopReferences.IMapChangedEventArgs1get_Key(elementType), method: get_KeyMethod); // Create a method body for the 'Key' property diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableMap2.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableMap2.cs index c707f8ec2..768ff1657 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableMap2.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableMap2.cs @@ -59,7 +59,7 @@ public static void EventSourceFactory( interopReferences.MapChangedEventHandler2EventSource.MakeGenericReferenceType(keyType, valueType)); // 'Value' field with the cached factory delegate - factoryType.Fields.Add(new FieldDefinition("Value"u8, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.InitOnly, funcType.Import(module))); + factoryType.Fields.Add(new FieldDefinition("Value"u8, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.InitOnly, funcType)); // Add the parameterless constructor factoryType.Methods.Add(MethodDefinition.CreateDefaultConstructor(module)); @@ -79,10 +79,10 @@ public static void EventSourceFactory( name: "Callback"u8, attributes: MethodAttributes.Private | MethodAttributes.HideBySig, signature: MethodSignature.CreateInstance( - returnType: interopReferences.MapChangedEventHandler2EventSource.MakeGenericReferenceType(keyType, valueType).Import(module), + returnType: interopReferences.MapChangedEventHandler2EventSource.MakeGenericReferenceType(keyType, valueType), parameterTypes: [ - interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature().Import(module), - interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)])) + interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { @@ -107,7 +107,7 @@ public static void EventSourceFactory( // Create the delegate type and store it in the 'Value' field _ = cctor.CilInstructions.Add(Ldsfld, factoryType.Fields[0]); _ = cctor.CilInstructions.Add(Ldftn, callbackMethod); - _ = cctor.CilInstructions.Add(Newobj, interopReferences.Delegate_ctor(funcType).Import(module)); + _ = cctor.CilInstructions.Add(Newobj, interopReferences.Delegate_ctor(funcType)); _ = cctor.CilInstructions.Add(Stsfld, factoryType.Fields[1]); _ = cctor.CilInstructions.Add(Ret); @@ -142,7 +142,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IObservableMapMethodsImpl2.MakeGenericReferenceType(keyType, valueType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IObservableMapMethodsImpl2.MakeGenericReferenceType(keyType, valueType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(methodsType); @@ -182,10 +182,10 @@ public static void Methods( name: "MapChanged"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: eventHandlerEventSourceType.Import(module), + returnType: eventHandlerEventSourceType, parameterTypes: [ - interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature().Import(module), - interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)])) + interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { @@ -193,14 +193,14 @@ public static void Methods( { Ldarg_0 }, { Ldsfld, eventSourceFactoryType.GetField("Value"u8) }, { Ldarg_1 }, - { Callvirt, conditionalWeakTableGetOrAddMethod.Import(module) }, + { Callvirt, conditionalWeakTableGetOrAddMethod }, { Ret } } }; // Add and implement the 'IObservableMapMethodsImpl.MapChanged' method methodsType.AddMethodImplementation( - declaration: interopReferences.IObservableMapMethodsImpl2MapChanged(keyType, valueType).Import(module), + declaration: interopReferences.IObservableMapMethodsImpl2MapChanged(keyType, valueType), method: mapChangedMethod); } @@ -357,14 +357,14 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(mapType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(dictionaryType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(collectionType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(enumerableType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(mapType.ToTypeDefOrRef()), + new InterfaceImplementation(dictionaryType.ToTypeDefOrRef()), + new InterfaceImplementation(collectionType.ToTypeDefOrRef()), + new InterfaceImplementation(enumerableType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -379,7 +379,7 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [handlerType.Import(module)])) + parameterTypes: [handlerType])) { CilMethodBody = WellKnownCilMethodBodyFactory.DynamicInterfaceCastableImplementation( interfaceType: mapType, @@ -392,7 +392,7 @@ public static void InterfaceImpl( // Add and implement the 'IObservableMap.MapChanged' add accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IObservableMap2add_MapChanged(keyType, valueType).Import(module), + declaration: interopReferences.IObservableMap2add_MapChanged(keyType, valueType), method: add_IObservableMap2MapChangedMethod); // Create the 'IObservableMap.MapChanged' remove method @@ -401,7 +401,7 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [handlerType.Import(module)])) + parameterTypes: [handlerType])) { CilMethodBody = WellKnownCilMethodBodyFactory.DynamicInterfaceCastableImplementation( interfaceType: mapType, @@ -414,14 +414,14 @@ public static void InterfaceImpl( // Add and implement the 'IObservableMap.MapChanged' remove accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IObservableMap2remove_MapChanged(keyType, valueType).Import(module), + declaration: interopReferences.IObservableMap2remove_MapChanged(keyType, valueType), method: remove_IObservableMap2MapChangedMethod); // Create the 'IObservableMap.MapChanged' event EventDefinition observableMap2MapChangedProperty = new( name: $"Windows.Foundation.Collections.IObservableMap<{keyType.FullName},{valueType.FullName}>.MapChanged", attributes: default, - eventType: handlerType.Import(module).ToTypeDefOrRef()) + eventType: handlerType.ToTypeDefOrRef()) { AddMethod = add_IObservableMap2MapChangedMethod, RemoveMethod = remove_IObservableMap2MapChangedMethod diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableVector1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableVector1.cs index 215b6a7cc..3d1d38743 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableVector1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IObservableVector1.cs @@ -58,7 +58,7 @@ public static void EventSourceFactory( interopReferences.VectorChangedEventHandler1EventSource.MakeGenericReferenceType(elementType)); // 'Value' field with the cached factory delegate - factoryType.Fields.Add(new FieldDefinition("Value"u8, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.InitOnly, funcType.Import(module))); + factoryType.Fields.Add(new FieldDefinition("Value"u8, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.InitOnly, funcType)); // Add the parameterless constructor factoryType.Methods.Add(MethodDefinition.CreateDefaultConstructor(module)); @@ -78,10 +78,10 @@ public static void EventSourceFactory( name: "Callback"u8, attributes: MethodAttributes.Private | MethodAttributes.HideBySig, signature: MethodSignature.CreateInstance( - returnType: interopReferences.VectorChangedEventHandler1EventSource.MakeGenericReferenceType(elementType).Import(module), + returnType: interopReferences.VectorChangedEventHandler1EventSource.MakeGenericReferenceType(elementType), parameterTypes: [ - interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature().Import(module), - interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)])) + interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { @@ -106,7 +106,7 @@ public static void EventSourceFactory( // Create the delegate type and store it in the 'Value' field _ = cctor.CilInstructions.Add(Ldsfld, factoryType.Fields[0]); _ = cctor.CilInstructions.Add(Ldftn, callbackMethod); - _ = cctor.CilInstructions.Add(Newobj, interopReferences.Delegate_ctor(funcType).Import(module)); + _ = cctor.CilInstructions.Add(Newobj, interopReferences.Delegate_ctor(funcType)); _ = cctor.CilInstructions.Add(Stsfld, factoryType.Fields[1]); _ = cctor.CilInstructions.Add(Ret); @@ -140,7 +140,7 @@ public static void Methods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IObservableVectorMethodsImpl1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IObservableVectorMethodsImpl1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(methodsType); @@ -180,10 +180,10 @@ public static void Methods( name: "VectorChanged"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: eventHandlerEventSourceType.Import(module), + returnType: eventHandlerEventSourceType, parameterTypes: [ - interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature().Import(module), - interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)])) + interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { CilInstructions = { @@ -191,14 +191,14 @@ public static void Methods( { Ldarg_0 }, { Ldsfld, eventSourceFactoryType.GetField("Value"u8) }, { Ldarg_1 }, - { Callvirt, conditionalWeakTableGetOrAddMethod.Import(module) }, + { Callvirt, conditionalWeakTableGetOrAddMethod }, { Ret } } }; // Add and implement the 'IObservableVectorMethodsImpl.VectorChanged' method methodsType.AddMethodImplementation( - declaration: interopReferences.IObservableVectorMethodsImpl1VectorChanged(elementType).Import(module), + declaration: interopReferences.IObservableVectorMethodsImpl1VectorChanged(elementType), method: vectorChangedMethod); } @@ -345,14 +345,14 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(vectorType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IList1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.ICollection1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(vectorType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IList1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.ICollection1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -367,7 +367,7 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [handlerType.Import(module)])) + parameterTypes: [handlerType])) { CilMethodBody = WellKnownCilMethodBodyFactory.DynamicInterfaceCastableImplementation( interfaceType: vectorType, @@ -380,7 +380,7 @@ public static void InterfaceImpl( // Add and implement the 'IObservableVector.VectorChanged' add accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IObservableVector1add_VectorChanged(elementType).Import(module), + declaration: interopReferences.IObservableVector1add_VectorChanged(elementType), method: add_IObservableVector1VectorChangedMethod); // Create the 'IObservableVector.VectorChanged' remove method @@ -389,7 +389,7 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, - parameterTypes: [handlerType.Import(module)])) + parameterTypes: [handlerType])) { CilMethodBody = WellKnownCilMethodBodyFactory.DynamicInterfaceCastableImplementation( interfaceType: vectorType, @@ -402,14 +402,14 @@ public static void InterfaceImpl( // Add and implement the 'IObservableVector.VectorChanged' remove accessor method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IObservableVector1remove_VectorChanged(elementType).Import(module), + declaration: interopReferences.IObservableVector1remove_VectorChanged(elementType), method: remove_IObservableVector1VectorChangedMethod); // Create the 'IObservableVector.VectorChanged' event EventDefinition observableVector1VectorChangedProperty = new( name: $"Windows.Foundation.Collections.IObservableVector<{elementType.FullName}>.VectorChanged", attributes: default, - eventType: handlerType.Import(module).ToTypeDefOrRef()) + eventType: handlerType.ToTypeDefOrRef()) { AddMethod = add_IObservableVector1VectorChangedMethod, RemoveMethod = remove_IObservableVector1VectorChangedMethod diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyDictionary2.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyDictionary2.cs index b99efcaac..52df85441 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyDictionary2.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyDictionary2.cs @@ -107,7 +107,7 @@ public static void IMapViewMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IMapViewMethodsImpl2.MakeGenericReferenceType(keyType, valueType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IMapViewMethodsImpl2.MakeGenericReferenceType(keyType, valueType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(mapViewMethodsType); @@ -121,13 +121,13 @@ public static void IMapViewMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { NoInlining = true }; // Add and implement the 'HasKey' method mapViewMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapViewMethodsImpl2HasKey(keyType, valueType).Import(module), + declaration: interopReferences.IMapViewMethodsImpl2HasKey(keyType, valueType), method: hasKeyMethod); // Create a method body for the 'HasKey' method @@ -143,15 +143,15 @@ public static void IMapViewMethods( name: "Lookup"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: valueType.Import(module), + returnType: valueType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])) { NoInlining = true }; // Add and implement the 'Lookup' method mapViewMethodsType.AddMethodImplementation( - declaration: interopReferences.IMapViewMethodsImpl2HasKey(keyType, valueType).Import(module), + declaration: interopReferences.IMapViewMethodsImpl2HasKey(keyType, valueType), method: lookupMethod); // Create a method body for the 'Lookup' method @@ -195,10 +195,10 @@ public static void IReadOnlyDictionaryMethods( name: "Item"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: valueType.Import(module), + returnType: valueType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])); readOnlyDictionaryMethodsType.Methods.Add(get_ItemMethod); @@ -209,7 +209,7 @@ public static void IReadOnlyDictionaryMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IReadOnlyDictionaryMethods2get_Item(keyType, valueType, mapViewMethodsType).Import(module) }, + { Call, interopReferences.IReadOnlyDictionaryMethods2get_Item(keyType, valueType, mapViewMethodsType) }, { Ret } } }; @@ -222,7 +222,7 @@ public static void IReadOnlyDictionaryMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Int32, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); readOnlyDictionaryMethodsType.Methods.Add(countMethod); @@ -232,7 +232,7 @@ public static void IReadOnlyDictionaryMethods( Instructions = { { Ldarg_0 }, - { Call, interopReferences.IReadOnlyDictionaryMethodsCount.Import(module) }, + { Call, interopReferences.IReadOnlyDictionaryMethodsCount }, { Ret } } }; @@ -246,8 +246,8 @@ public static void IReadOnlyDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module)])); + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType])); readOnlyDictionaryMethodsType.Methods.Add(containsKeyMethod); @@ -258,7 +258,7 @@ public static void IReadOnlyDictionaryMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IReadOnlyDictionaryMethods2ContainsKey(keyType, valueType, mapViewMethodsType).Import(module) }, + { Call, interopReferences.IReadOnlyDictionaryMethods2ContainsKey(keyType, valueType, mapViewMethodsType) }, { Ret } } }; @@ -272,9 +272,9 @@ public static void IReadOnlyDictionaryMethods( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - keyType.Import(module), - valueType.Import(module).MakeByReferenceType()])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + keyType, + valueType.MakeByReferenceType()])) { CilOutParameterIndices = [3] }; readOnlyDictionaryMethodsType.Methods.Add(tryGetValueMethod); @@ -287,7 +287,7 @@ public static void IReadOnlyDictionaryMethods( { Ldarg_0 }, { Ldarg_1 }, { Ldarg_3 }, - { Call, interopReferences.IReadOnlyDictionaryMethods2TryGetValue(keyType, valueType, mapViewMethodsType).Import(module) }, + { Call, interopReferences.IReadOnlyDictionaryMethods2TryGetValue(keyType, valueType, mapViewMethodsType) }, { Ret } } }; @@ -442,11 +442,11 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(readOnlyDictionaryType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(readOnlyCollectionType.Import(module).ToTypeDefOrRef()) + new InterfaceImplementation(readOnlyDictionaryType.ToTypeDefOrRef()), + new InterfaceImplementation(readOnlyCollectionType.ToTypeDefOrRef()) } }; @@ -456,11 +456,11 @@ public static void InterfaceImpl( MethodDefinition get_ItemMethod = new( name: $"System.Collections.Generic.IReadOnlyDictionary<{keyType.FullName},{valueType.FullName}>.get_Item", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(valueType.Import(module), keyType.Import(module))); + signature: MethodSignature.CreateInstance(valueType, keyType)); // Add and implement the 'get_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyDictionary2get_Item(keyType, valueType).Import(module), + declaration: interopReferences.IReadOnlyDictionary2get_Item(keyType, valueType), method: get_ItemMethod); // Create a body for the 'get_Item' method @@ -484,11 +484,11 @@ public static void InterfaceImpl( MethodDefinition get_KeysMethod = new( name: $"System.Collections.Generic.IReadOnlyDictionary<{keyType.FullName},{valueType.FullName}>.get_Keys", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerable1.MakeGenericReferenceType(keyType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerable1.MakeGenericReferenceType(keyType))); // Add and implement the 'get_Keys' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyDictionary2get_Keys(keyType, valueType).Import(module), + declaration: interopReferences.IReadOnlyDictionary2get_Keys(keyType, valueType), method: get_KeysMethod); // Create a body for the 'get_Keys' method @@ -497,7 +497,7 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Newobj, interopReferences.ReadOnlyDictionaryKeyCollection2_ctor(keyType, valueType).Import(module) }, + { Newobj, interopReferences.ReadOnlyDictionaryKeyCollection2_ctor(keyType, valueType) }, { Ret } } }; @@ -515,11 +515,11 @@ public static void InterfaceImpl( MethodDefinition get_ValuesMethod = new( name: $"System.Collections.Generic.IReadOnlyDictionary<{keyType.FullName},{valueType.FullName}>.get_Values", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerable1.MakeGenericReferenceType(valueType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerable1.MakeGenericReferenceType(valueType))); // Add and implement the 'get_Values' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyDictionary2get_Values(keyType, valueType).Import(module), + declaration: interopReferences.IReadOnlyDictionary2get_Values(keyType, valueType), method: get_ValuesMethod); // Create a body for the 'get_Values' method @@ -528,7 +528,7 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Newobj, interopReferences.ReadOnlyDictionaryValueCollection2_ctor(keyType, valueType).Import(module) }, + { Newobj, interopReferences.ReadOnlyDictionaryValueCollection2_ctor(keyType, valueType) }, { Ret } } }; @@ -548,11 +548,11 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyType.Import(module)])); + parameterTypes: [keyType])); // Add and implement the 'ContainsKey' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyDictionary2ContainsKey(keyType, valueType).Import(module), + declaration: interopReferences.IReadOnlyDictionary2ContainsKey(keyType, valueType), method: containsKeyMethod); // Create a body for the 'ContainsKey' method @@ -569,12 +569,12 @@ public static void InterfaceImpl( attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, signature: MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Boolean, - parameterTypes: [keyType.Import(module), valueType.Import(module).MakeByReferenceType()])) + parameterTypes: [keyType, valueType.MakeByReferenceType()])) { CilOutParameterIndices = [2] }; // Add and implement the 'TryGetValue' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyDictionary2ContainsKey(keyType, valueType).Import(module), + declaration: interopReferences.IReadOnlyDictionary2ContainsKey(keyType, valueType), method: tryGetValueMethod); // Create a body for the 'TryGetValue' method @@ -593,7 +593,7 @@ public static void InterfaceImpl( // Add and implement the 'get_Count' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyCollection1get_Count(keyValuePairType).Import(module), + declaration: interopReferences.IReadOnlyCollection1get_Count(keyValuePairType), method: get_CountMethod); // Create a body for the 'get_Count' method diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyList1.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyList1.cs index 1a0df72a0..81f939208 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyList1.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.IReadOnlyList1.cs @@ -83,7 +83,7 @@ public static void IVectorViewMethods( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IVectorViewMethods1.MakeGenericReferenceType(elementType).Import(module).ToTypeDefOrRef()) } + Interfaces = { new InterfaceImplementation(interopReferences.IVectorViewMethods1.MakeGenericReferenceType(elementType).ToTypeDefOrRef()) } }; module.TopLevelTypes.Add(vectorViewMethodsType); @@ -101,7 +101,7 @@ public static void IVectorViewMethods( // Add and implement the 'GetAt' method vectorViewMethodsType.AddMethodImplementation( - declaration: interopReferences.IVectorViewMethods1GetAt(elementType).Import(module), + declaration: interopReferences.IVectorViewMethods1GetAt(elementType), method: getAtMethod); } @@ -138,9 +138,9 @@ public static void IReadOnlyListMethods( name: "Item"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: elementType.Import(module), + returnType: elementType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.Int32])); readOnlyListMethodsType.Methods.Add(get_ItemMethod); @@ -152,7 +152,7 @@ public static void IReadOnlyListMethods( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.IReadOnlyListMethods1get_Item(elementType, vectorViewMethodsType).Import(module) }, + { Call, interopReferences.IReadOnlyListMethods1get_Item(elementType, vectorViewMethodsType) }, { Ret } } }; @@ -165,7 +165,7 @@ public static void IReadOnlyListMethods( attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Int32, - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])); + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])); readOnlyListMethodsType.Methods.Add(countMethod); @@ -175,7 +175,7 @@ public static void IReadOnlyListMethods( Instructions = { { Ldarg_0 }, - { Call, interopReferences.IReadOnlyListMethodsCount.Import(module) }, + { Call, interopReferences.IReadOnlyListMethodsCount }, { Ret } } }; @@ -328,13 +328,13 @@ public static void InterfaceImpl( attributes: TypeAttributes.Interface | TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: null) { - CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.DynamicInterfaceCastableImplementationAttribute_ctor) }, Interfaces = { - new InterfaceImplementation(readOnlyListType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(readOnlyCollectionType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(enumerableType.Import(module).ToTypeDefOrRef()), - new InterfaceImplementation(interopReferences.IEnumerable.Import(module)) + new InterfaceImplementation(readOnlyListType.ToTypeDefOrRef()), + new InterfaceImplementation(readOnlyCollectionType.ToTypeDefOrRef()), + new InterfaceImplementation(enumerableType.ToTypeDefOrRef()), + new InterfaceImplementation(interopReferences.IEnumerable) } }; @@ -344,11 +344,11 @@ public static void InterfaceImpl( MethodDefinition get_ItemMethod = new( name: $"System.Collections.Generic.IReadOnlyList<{elementType.FullName}>.get_Item", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceAccessorMethod, - signature: MethodSignature.CreateInstance(elementType.Import(module), module.CorLibTypeFactory.Int32)); + signature: MethodSignature.CreateInstance(elementType, module.CorLibTypeFactory.Int32)); // Add and implement the 'get_Item' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyList1get_Item(elementType).Import(module), + declaration: interopReferences.IReadOnlyList1get_Item(elementType), method: get_ItemMethod); // Create a body for the 'get_Item' method @@ -376,7 +376,7 @@ public static void InterfaceImpl( // Add and implement the 'get_Count' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IReadOnlyCollection1get_Count(elementType).Import(module), + declaration: interopReferences.IReadOnlyCollection1get_Count(elementType), method: get_CountMethod); // Create a body for the 'get_Count' method @@ -400,11 +400,11 @@ public static void InterfaceImpl( MethodDefinition enumerable1GetEnumeratorMethod = new( name: $"System.Collections.Generic.IEnumerable<{elementType.FullName}>.GetEnumerator", attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType).Import(module))); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator1.MakeGenericReferenceType(elementType))); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerable1GetEnumerator(elementType).Import(module), + declaration: interopReferences.IEnumerable1GetEnumerator(elementType), method: enumerable1GetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -419,11 +419,11 @@ public static void InterfaceImpl( MethodDefinition enumerableGetEnumeratorMethod = new( name: "System.Collections.IEnumerable.GetEnumerator"u8, attributes: WellKnownMethodAttributesFactory.ExplicitInterfaceImplementationInstanceMethod, - signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.Import(module).ToReferenceTypeSignature())); + signature: MethodSignature.CreateInstance(interopReferences.IEnumerator.ToReferenceTypeSignature())); // Add and implement the 'IEnumerable.GetEnumerator' method interfaceImplType.AddMethodImplementation( - declaration: interopReferences.IEnumerableGetEnumerator.Import(module), + declaration: interopReferences.IEnumerableGetEnumerator, method: enumerableGetEnumeratorMethod); // Create a method body for the 'IEnumerable.GetEnumerator' method @@ -432,7 +432,7 @@ public static void InterfaceImpl( Instructions = { { Ldarg_0 }, - { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType).Import(module) }, + { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType) }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.KeyValuePair.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.KeyValuePair.cs index 8d6f17008..f24dfb02f 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.KeyValuePair.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.KeyValuePair.cs @@ -139,10 +139,6 @@ public static void Marshaller( // Track the type (it may be needed to marshal parameters or return values) emitState.TrackTypeDefinition(marshallerType, keyValuePairType, "Marshaller"); - // Prepare the external types we need in the implemented methods - TypeSignature typeSignature2 = keyValuePairType.Import(module); - TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue.Import(module).ToValueTypeSignature(); - // Determine which 'CreateComInterfaceFlags' flags we use for the marshalled CCW CreateComInterfaceFlags flags = keyValuePairType.IsTrackerSupportRequired(interopReferences) ? CreateComInterfaceFlags.TrackerSupport @@ -155,16 +151,16 @@ public static void Marshaller( name: "ConvertToUnmanaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: windowsRuntimeObjectReferenceValueType, - parameterTypes: [typeSignature2])) + returnType: interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature(), + parameterTypes: [keyValuePairType])) { CilInstructions = { { Ldarg_0 }, - { Box, keyValuePairType.Import(module).ToTypeDefOrRef() }, + { Box, keyValuePairType.ToTypeDefOrRef() }, { CilInstruction.CreateLdcI4((int)flags) }, { Call, get_IidMethod }, - { Call, interopReferences.WindowsRuntimeValueTypeMarshallerConvertToUnmanagedUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeValueTypeMarshallerConvertToUnmanagedUnsafe }, { Ret } } }; @@ -173,7 +169,7 @@ public static void Marshaller( // Declare the local variables: // [0]: '' (for the failure path, initialized to 'default') - CilLocalVariable loc_0_default = new(keyValuePairType.Import(module)); + CilLocalVariable loc_0_default = new(keyValuePairType); // Jump labels CilInstruction ldarg_0_marshal = new(Ldarg_0); @@ -185,7 +181,7 @@ public static void Marshaller( name: "ConvertToManaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: typeSignature2, + returnType: keyValuePairType, parameterTypes: [module.CorLibTypeFactory.Void.MakePointerType()])) { CilLocalVariables = { loc_0_default }, @@ -199,7 +195,7 @@ public static void Marshaller( // return default { Ldloca_S, loc_0_default }, - { Initobj, keyValuePairType.Import(module).ToTypeDefOrRef() }, + { Initobj, keyValuePairType.ToTypeDefOrRef() }, { Ldloc_0 }, { Ret }, @@ -208,7 +204,7 @@ public static void Marshaller( { Call, keyAccessorMethod }, { Ldarg_0 }, { Call, valueAccessorMethod }, - { Newobj, interopReferences.KeyValuePair2_ctor(keyValuePairType).Import(module) }, + { Newobj, interopReferences.KeyValuePair2_ctor(keyValuePairType) }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.SzArray.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.SzArray.cs index c47349485..2dc262769 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.SzArray.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.SzArray.cs @@ -55,9 +55,9 @@ public static void Marshaller( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.ReadOnlySpan1.MakeGenericValueType(elementType).Import(module), + interopReferences.ReadOnlySpan1.MakeGenericValueType(elementType), module.CorLibTypeFactory.UInt32.MakeByReferenceType(), - elementAbiType.Import(module).MakePointerType().MakeByReferenceType()])) + elementAbiType.MakePointerType().MakeByReferenceType()])) { CilOutParameterIndices = [2, 3], CilInstructions = @@ -76,10 +76,10 @@ public static void Marshaller( name: "ConvertToManaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: arrayType.Import(module), + returnType: arrayType, parameterTypes: [ module.CorLibTypeFactory.UInt32, - elementAbiType.Import(module).MakePointerType()])) + elementAbiType.MakePointerType()])) { CilInstructions = { @@ -100,8 +100,8 @@ public static void Marshaller( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ module.CorLibTypeFactory.UInt32, - elementAbiType.Import(module).MakePointerType(), - interopReferences.Span1.MakeGenericValueType(elementType).Import(module)])) + elementAbiType.MakePointerType(), + interopReferences.Span1.MakeGenericValueType(elementType)])) { CilInstructions = { @@ -121,9 +121,9 @@ public static void Marshaller( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.ReadOnlySpan1.MakeGenericValueType(elementType).Import(module), + interopReferences.ReadOnlySpan1.MakeGenericValueType(elementType), module.CorLibTypeFactory.UInt32, - elementAbiType.Import(module).MakePointerType()])) + elementAbiType.MakePointerType()])) { CilInstructions = { @@ -165,7 +165,7 @@ public static void ComWrappersCallback( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeArrayComWrappersCallback.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeArrayComWrappersCallback) } }; module.TopLevelTypes.Add(callbackType); @@ -177,7 +177,7 @@ public static void ComWrappersCallback( name: "CreateArray"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: interopReferences.Array.ToReferenceTypeSignature().Import(module), + returnType: interopReferences.Array.ToReferenceTypeSignature(), parameterTypes: [ module.CorLibTypeFactory.UInt32, module.CorLibTypeFactory.Void.MakePointerType()])) @@ -193,7 +193,7 @@ public static void ComWrappersCallback( // Add and implement 'CreateArray' callbackType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeArrayComWrappersCallbackCreateArray.Import(module), + declaration: interopReferences.IWindowsRuntimeArrayComWrappersCallbackCreateArray, method: createArrayMethod); } @@ -226,7 +226,7 @@ public static void ArrayImpl( parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), module.CorLibTypeFactory.UInt32.MakePointerType(), - arrayType.BaseType.GetAbiType(interopReferences).Import(module).MakePointerType().MakePointerType()])) + arrayType.BaseType.GetAbiType(interopReferences).MakePointerType().MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -235,14 +235,14 @@ public static void ArrayImpl( CilInstruction ldc_i4_e_pointer = new(Ldc_I4, unchecked((int)0x80004003)); CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_0_tryStart = new(Ldarg_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); // Declare 2 local variables: // [0]: 'int' (the 'HRESULT' to return) // [1]: 'WindowsRuntimeObjectReferenceValue' to use to marshal the delegate CilLocalVariable loc_0_hresult = new(module.CorLibTypeFactory.Int32); - CilLocalVariable loc_1_referenceValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_1_referenceValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); // Create a method body for the 'get_Value' method valueMethod.CilMethodBody = new CilMethodBody() @@ -265,8 +265,8 @@ public static void ArrayImpl( // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(arrayType).Import(module) }, - { Newobj, interopReferences.ReadOnlySpan1_ctor(arrayType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(arrayType) }, + { Newobj, interopReferences.ReadOnlySpan1_ctor(arrayType) }, { Ldarg_1 }, { Ldarg_2 }, { Call, marshallerType.GetMethod("ConvertToUnmanaged"u8) }, @@ -292,7 +292,7 @@ public static void ArrayImpl( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -372,7 +372,7 @@ public static void ComWrappersMarshallerAttribute( ns: InteropUtf8NameFactory.TypeNamespace(arrayType), name: InteropUtf8NameFactory.TypeName(arrayType, "ComWrappersMarshallerAttribute"), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute.Import(module)); + baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute); module.TopLevelTypes.Add(marshallerType); @@ -382,7 +382,7 @@ public static void ComWrappersMarshallerAttribute( marshallerType.Methods.Add(ctor); _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); - _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor); // Determine which 'CreateComInterfaceFlags' flags we use for the marshalled CCW CreateComInterfaceFlags flags = arrayType.IsTrackerSupportRequired(interopReferences) @@ -403,7 +403,7 @@ public static void ComWrappersMarshallerAttribute( { { Ldarg_1 }, { CilInstruction.CreateLdcI4((int)flags) }, - { Call, interopReferences.WindowsRuntimeComWrappersMarshalGetOrCreateComInterfaceForObject.Import(module) }, + { Call, interopReferences.WindowsRuntimeComWrappersMarshalGetOrCreateComInterfaceForObject }, { Ret } } }; @@ -418,7 +418,7 @@ public static void ComWrappersMarshallerAttribute( name: "ComputeVtables"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Virtual, signature: MethodSignature.CreateInstance( - returnType: interopReferences.ComInterfaceEntry.Import(module).MakePointerType(), + returnType: interopReferences.ComInterfaceEntry.MakePointerType(), parameterTypes: [module.CorLibTypeFactory.Int32.MakeByReferenceType()])) { CilOutParameterIndices = [1], @@ -437,7 +437,6 @@ public static void ComWrappersMarshallerAttribute( // Import the 'UnboxToManaged' method for the array IMethodDescriptor windowsRuntimeArrayMarshallerUnboxToManagedDescriptor = interopReferences.WindowsRuntimeArrayMarshallerUnboxToManaged - .Import(module) .MakeGenericInstanceMethod(arrayComWrappersCallbackType.ToReferenceTypeSignature()); // Define the 'CreateObject' method as follows: @@ -450,7 +449,7 @@ public static void ComWrappersMarshallerAttribute( returnType: module.CorLibTypeFactory.Object, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.CreatedWrapperFlags.Import(module).MakeByReferenceType()])) + interopReferences.CreatedWrapperFlags.MakeByReferenceType()])) { CilOutParameterIndices = [2], CilInstructions = diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.UserDefinedType.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.UserDefinedType.cs index 9e7a5b156..f3b890f8c 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.UserDefinedType.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.UserDefinedType.cs @@ -176,7 +176,7 @@ public static void ComWrappersMarshallerAttribute( ns: "WindowsRuntime.Interop.UserDefinedTypes"u8, name: InteropUtf8NameFactory.TypeName(userDefinedType, "ComWrappersMarshallerAttribute"), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute.Import(module)); + baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute); module.TopLevelTypes.Add(marshallerType); @@ -186,10 +186,10 @@ public static void ComWrappersMarshallerAttribute( marshallerType.Methods.Add(ctor); _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); - _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor); // The 'ComputeVtables' method returns the 'ComWrappers.ComInterfaceEntry*' type - PointerTypeSignature computeVtablesReturnType = interopReferences.ComInterfaceEntry.Import(module).MakePointerType(); + PointerTypeSignature computeVtablesReturnType = interopReferences.ComInterfaceEntry.MakePointerType(); // Retrieve the cached COM interface entries type, as we need the number of fields TypeDefinition interfaceEntriesType = interopDefinitions.UserDefinedInterfaceEntries(NumberOfDefaultComInterfaceEntries + vtableTypes.Count); @@ -232,7 +232,7 @@ public static void ComWrappersMarshallerAttribute( { { Ldarg_1 }, { CilInstruction.CreateLdcI4((int)CreateComInterfaceFlags.TrackerSupport) }, - { Call, interopReferences.WindowsRuntimeComWrappersMarshalGetOrCreateComInterfaceForObject.Import(module) }, + { Call, interopReferences.WindowsRuntimeComWrappersMarshalGetOrCreateComInterfaceForObject }, { Ret } } }; @@ -301,14 +301,14 @@ private sealed class WindowsRuntimeInterfaceEntryInfo(IMethodDefOrRef get_IID, I /// public override void LoadIID(CilInstructionCollection instructions, InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Call, get_IID.Import(module)); - _ = instructions.Add(Ldobj, interopReferences.Guid.Import(module)); + _ = instructions.Add(Call, get_IID); + _ = instructions.Add(Ldobj, interopReferences.Guid); } /// public override void LoadVtable(CilInstructionCollection instructions, InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Call, get_Vtable.Import(module)); + _ = instructions.Add(Call, get_Vtable); } } @@ -321,15 +321,15 @@ private sealed class ComInterfaceEntryInfo(TypeSignature interfaceInformationTyp /// public override void LoadIID(CilInstructionCollection instructions, InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Constrained, interfaceInformationType.Import(module).ToTypeDefOrRef()); - _ = instructions.Add(Call, interopReferences.IIUnknownInterfaceTypeget_Iid.Import(module)); + _ = instructions.Add(Constrained, interfaceInformationType.ToTypeDefOrRef()); + _ = instructions.Add(Call, interopReferences.IIUnknownInterfaceTypeget_Iid); } /// public override void LoadVtable(CilInstructionCollection instructions, InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Constrained, interfaceInformationType.Import(module).ToTypeDefOrRef()); - _ = instructions.Add(Call, interopReferences.IIUnknownInterfaceTypeget_ManagedVirtualMethodTable.Import(module)); + _ = instructions.Add(Constrained, interfaceInformationType.ToTypeDefOrRef()); + _ = instructions.Add(Call, interopReferences.IIUnknownInterfaceTypeget_ManagedVirtualMethodTable); } } } diff --git a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.cs b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.cs index d6ed1fea0..02e8a7e15 100644 --- a/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.cs +++ b/src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.cs @@ -30,14 +30,12 @@ internal static partial class InteropTypeDefinitionBuilder /// The for the interface type. /// The instance to use. /// The instance to use. - /// The interop module being built. /// Whether to use Windows.UI.Xaml projections. /// The resulting 'IID' get method for . public static void IID( TypeSignature interfaceType, InteropDefinitions interopDefinitions, InteropReferences interopReferences, - ModuleDefinition module, bool useWindowsUIXamlProjections, out MethodDefinition get_IidMethod) { @@ -45,7 +43,6 @@ public static void IID( name: InteropUtf8NameFactory.TypeName(interfaceType), interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, iid: GuidGenerator.CreateIID(interfaceType, interopReferences, useWindowsUIXamlProjections), out get_IidMethod); } @@ -56,14 +53,12 @@ public static void IID( /// The property and field name. /// The instance to use. /// The instance to use. - /// The module that will contain the type being created. /// The value to use for the RVA field. /// The resulting 'get_IID' method. private static void IID( Utf8String name, InteropDefinitions interopDefinitions, InteropReferences interopReferences, - ModuleDefinition module, in Guid iid, out MethodDefinition get_IidMethod) { @@ -72,7 +67,6 @@ private static void IID( iidRvaFieldName: name, iidRvaDataType: interopDefinitions.IIDRvaDataSize_16, interopReferences: interopReferences, - module: module, iid: in iid, out FieldDefinition iidRvaField, out get_IidMethod, @@ -103,18 +97,18 @@ private static void NativeObject( ns: InteropUtf8NameFactory.TypeNamespace(typeSignature), name: InteropUtf8NameFactory.TypeName(typeSignature, "NativeObject"), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: nativeObjectBaseType.Import(module).ToTypeDefOrRef()); + baseType: nativeObjectBaseType.ToTypeDefOrRef()); module.TopLevelTypes.Add(nativeObjectType); // Define the constructor - MethodDefinition ctor = MethodDefinition.CreateConstructor(module, interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()); + MethodDefinition ctor = MethodDefinition.CreateConstructor(module, interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()); nativeObjectType.Methods.Add(ctor); _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); _ = ctor.CilMethodBody!.Instructions.Insert(1, Ldarg_1); - _ = ctor.CilMethodBody!.Instructions.Insert(2, Call, interopReferences.WindowsRuntimeNativeObjectBaseType_ctor(nativeObjectBaseType).Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(2, Call, interopReferences.WindowsRuntimeNativeObjectBaseType_ctor(nativeObjectBaseType)); } /// @@ -143,7 +137,7 @@ private static void ComWrappersCallback( attributes: TypeAttributes.AutoLayout | TypeAttributes.Abstract | TypeAttributes.BeforeFieldInit, baseType: module.CorLibTypeFactory.Object.ToTypeDefOrRef()) { - Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeUnsealedObjectComWrappersCallback.Import(module)) } + Interfaces = { new InterfaceImplementation(interopReferences.IWindowsRuntimeUnsealedObjectComWrappersCallback) } }; module.TopLevelTypes.Add(callbackType); @@ -162,19 +156,19 @@ private static void ComWrappersCallback( returnType: module.CorLibTypeFactory.Boolean, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.ReadOnlySpanChar.Import(module), + interopReferences.ReadOnlySpanChar, module.CorLibTypeFactory.Object.MakeByReferenceType(), - interopReferences.CreatedWrapperFlags.Import(module).MakeByReferenceType()])) + interopReferences.CreatedWrapperFlags.MakeByReferenceType()])) { CilOutParameterIndices = [3, 4] }; // Add and implement 'TryCreateObject' callbackType.AddMethodImplementation( - declaration: interopReferences.IWindowsRuntimeUnsealedObjectComWrappersCallbackTryCreateObject.Import(module), + declaration: interopReferences.IWindowsRuntimeUnsealedObjectComWrappersCallbackTryCreateObject, method: tryCreateObjectMethod); // Declare the local variables: // [0]: 'WindowsRuntimeObjectReference' (for 'result') - CilLocalVariable loc_0_result = new(interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)); + CilLocalVariable loc_0_result = new(interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()); // Jump labels CilInstruction ldarg_3_failure = new(Ldarg_3); @@ -188,15 +182,15 @@ private static void ComWrappersCallback( // Compare the runtime class name for the fast path { Ldarg_1 }, { Ldstr, runtimeClassName }, - { Call, interopReferences.MemoryExtensionsAsSpanCharString.Import(module) }, - { Call, interopReferences.MemoryExtensionsSequenceEqualChar.Import(module) }, + { Call, interopReferences.MemoryExtensionsAsSpanCharString }, + { Call, interopReferences.MemoryExtensionsSequenceEqualChar }, { Brfalse_S, ldarg_3_failure.CreateLabel() }, // Create the 'WindowsRuntimeObjectReference' instance { Ldarg_0 }, { Call, get_IidMethod }, { Ldarg_3 }, - { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReferenceUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReferenceUnsafe }, { Stloc_0 }, // Create and assign the 'NativeObject' instance to return @@ -242,7 +236,7 @@ private static void ComWrappersMarshallerAttribute( ns: InteropUtf8NameFactory.TypeNamespace(typeSignature), name: InteropUtf8NameFactory.TypeName(typeSignature, "ComWrappersMarshallerAttribute"), attributes: TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute.Import(module)); + baseType: interopReferences.WindowsRuntimeComWrappersMarshallerAttribute); module.TopLevelTypes.Add(marshallerType); @@ -252,7 +246,7 @@ private static void ComWrappersMarshallerAttribute( marshallerType.Methods.Add(ctor); _ = ctor.CilMethodBody!.Instructions.Insert(0, Ldarg_0); - _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(1, Call, interopReferences.WindowsRuntimeComWrappersMarshallerAttribute_ctor); // Define the 'CreateObject' method as follows: // @@ -264,7 +258,7 @@ private static void ComWrappersMarshallerAttribute( returnType: module.CorLibTypeFactory.Object, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.CreatedWrapperFlags.Import(module).MakeByReferenceType()])) + interopReferences.CreatedWrapperFlags.MakeByReferenceType()])) { CilOutParameterIndices = [2], CilInstructions = @@ -273,7 +267,7 @@ private static void ComWrappersMarshallerAttribute( { Ldarg_1 }, { Call, get_IidMethod }, { Ldarg_2 }, - { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReference.Import(module) }, + { Call, interopReferences.WindowsRuntimeComWrappersMarshalCreateObjectReference }, { Newobj, nativeObjectType.GetMethod(".ctor"u8) }, { Ret }, } @@ -309,13 +303,6 @@ private static void Marshaller( module.TopLevelTypes.Add(marshallerType); - // Prepare the external types we need in the implemented methods - TypeSignature typeSignature2 = typeSignature.Import(module); - TypeSignature windowsRuntimeObjectReferenceValueType = interopReferences.WindowsRuntimeObjectReferenceValue.Import(module).ToValueTypeSignature(); - - // Reference the instantiated 'ConvertToUnmanaged' method for the marshaller - MemberReference windowsRuntimeInterfaceMarshallerConvertToUnmanaged = interopReferences.WindowsRuntimeInterfaceMarshallerConvertToUnmanaged(typeSignature); - // Define the 'ConvertToUnmanaged' method as follows: // // public static WindowsRuntimeObjectReferenceValue ConvertToUnmanaged( value) @@ -323,14 +310,14 @@ private static void Marshaller( name: "ConvertToUnmanaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: windowsRuntimeObjectReferenceValueType, - parameterTypes: [typeSignature2])) + returnType: interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature(), + parameterTypes: [typeSignature])) { CilInstructions = { { Ldarg_0 }, { Call, get_IidMethod }, - { Call, windowsRuntimeInterfaceMarshallerConvertToUnmanaged.Import(module) }, + { Call, interopReferences.WindowsRuntimeInterfaceMarshallerConvertToUnmanaged(typeSignature) }, { Ret } } }; @@ -340,7 +327,6 @@ private static void Marshaller( // Construct a descriptor for 'WindowsRuntimeUnsealedObjectMarshaller.ConvertToManaged<>(void*)' IMethodDescriptor windowsRuntimeUnsealedObjectMarshallerConvertToManaged = interopReferences.WindowsRuntimeUnsealedObjectMarshallerConvertToManaged - .Import(module) .MakeGenericInstanceMethod(interfaceComWrappersCallbackType.ToReferenceTypeSignature()); // Define the 'ConvertToManaged' method as follows: @@ -350,14 +336,14 @@ private static void Marshaller( name: "ConvertToManaged"u8, attributes: MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig, signature: MethodSignature.CreateStatic( - returnType: typeSignature2, + returnType: typeSignature, parameterTypes: [module.CorLibTypeFactory.Void.MakePointerType()])) { CilInstructions = { { Ldarg_0 }, { Call, windowsRuntimeUnsealedObjectMarshallerConvertToManaged }, - { Castclass, typeSignature2.ToTypeDefOrRef() }, + { Castclass, typeSignature.ToTypeDefOrRef() }, { Ret } } }; @@ -403,7 +389,7 @@ private static void Impl( // private static readonly Vftbl; FieldDefinition vftblField = new("Vftbl"u8, FieldAttributes.Private | FieldAttributes.Static, vftblType.ToValueTypeSignature()) { - CustomAttributes = { new CustomAttribute(interopReferences.FixedAddressValueTypeAttribute_ctor.Import(module)) } + CustomAttributes = { new CustomAttribute(interopReferences.FixedAddressValueTypeAttribute_ctor) } }; implType.Fields.Add(vftblField); @@ -427,13 +413,13 @@ private static void Impl( switch (interfaceType) { case ComInterfaceType.InterfaceIsIUnknown: - _ = cctor.CilMethodBody.Instructions.Add(Call, interopReferences.IUnknownImplget_Vtable.Import(module)); + _ = cctor.CilMethodBody.Instructions.Add(Call, interopReferences.IUnknownImplget_Vtable); _ = cctor.CilMethodBody.Instructions.Add(Ldobj, interopDefinitions.IUnknownVftbl); _ = cctor.CilMethodBody.Instructions.Add(Stobj, interopDefinitions.IUnknownVftbl); vtableOffset = 3; break; case ComInterfaceType.InterfaceIsIInspectable: - _ = cctor.CilMethodBody.Instructions.Add(Call, interopReferences.IInspectableImplget_Vtable.Import(module)); + _ = cctor.CilMethodBody.Instructions.Add(Call, interopReferences.IInspectableImplget_Vtable); _ = cctor.CilMethodBody.Instructions.Add(Ldobj, interopDefinitions.IInspectableVftbl); _ = cctor.CilMethodBody.Instructions.Add(Stobj, interopDefinitions.IInspectableVftbl); vtableOffset = 6; @@ -497,8 +483,8 @@ static void LoadIID( InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Call, arg.get_IID.Import(module)); - _ = instructions.Add(Ldobj, interopReferences.Guid.Import(module)); + _ = instructions.Add(Call, arg.get_IID); + _ = instructions.Add(Ldobj, interopReferences.Guid); } // Load the vtable property @@ -508,7 +494,7 @@ static void LoadVtable( InteropReferences interopReferences, ModuleDefinition module) { - _ = instructions.Add(Call, arg.get_Vtable.Import(module)); + _ = instructions.Add(Call, arg.get_Vtable); } InterfaceEntriesImpl( @@ -595,7 +581,7 @@ private static void InterfaceEntriesImpl( // The '[FixedAddressValueType]' attribute allows ILC to pre-initialize the entire vtable (in .rdata). FieldDefinition entriesField = new("Entries"u8, FieldAttributes.Private | FieldAttributes.Static, entriesFieldType.ToValueTypeSignature()) { - CustomAttributes = { new CustomAttribute(interopReferences.FixedAddressValueTypeAttribute_ctor.Import(module)) } + CustomAttributes = { new CustomAttribute(interopReferences.FixedAddressValueTypeAttribute_ctor) } }; implType.Fields.Add(entriesField); @@ -603,12 +589,6 @@ private static void InterfaceEntriesImpl( // Create the static constructor to initialize the interface entries MethodDefinition cctor = implType.GetOrCreateStaticConstructor(module); - // Import the target fields (they have to be in the module, or the resulting assembly won't be valid): - // - [0]: Guid IID - // - [1]: nint Vtable - IFieldDescriptor comInterfaceEntryIIDField = interopReferences.ComInterfaceEntryIID.Import(module); - IFieldDescriptor comInterfaceEntryVtableField = interopReferences.ComInterfaceEntryVtable.Import(module); - // We need to create a new method body bound to this constructor CilInstructionCollection cctorInstructions = cctor.CilMethodBody!.Instructions; @@ -629,20 +609,20 @@ private static void InterfaceEntriesImpl( // Invoke the callback to emit code to load 'IID' on the evaluation stack get_IID(implTypes[i], cctorInstructions, interopReferences, module); - _ = cctorInstructions.Add(Stfld, comInterfaceEntryIIDField); + _ = cctorInstructions.Add(Stfld, interopReferences.ComInterfaceEntryIID); _ = cctorInstructions.Add(Ldsflda, entriesField); _ = cctorInstructions.Add(Ldflda, entriesFieldType.Fields[i]); // Same as above, but to get the vtable pointer on the stack get_Vtable(implTypes[i], cctorInstructions, interopReferences, module); - _ = cctorInstructions.Add(Stfld, comInterfaceEntryVtableField); + _ = cctorInstructions.Add(Stfld, interopReferences.ComInterfaceEntryVtable); } _ = cctorInstructions.Add(Ret); // The 'Vtables' property type has the signature being 'ComWrappers.ComInterfaceEntry*' - PointerTypeSignature vtablesPropertyType = interopReferences.ComInterfaceEntry.Import(module).MakePointerType(); + PointerTypeSignature vtablesPropertyType = interopReferences.ComInterfaceEntry.MakePointerType(); // Create the 'Vtables' property PropertyDefinition vtablesProperty = new( @@ -705,7 +685,7 @@ public static void Proxy( .CreateMemberReference(".ctor", MethodSignature.CreateInstance( returnType: module.CorLibTypeFactory.Void, parameterTypes: [module.CorLibTypeFactory.String])) - .Import(module); + ; // Add the attribute with the name of the runtime class marshallerType.CustomAttributes.Add(new CustomAttribute( @@ -715,7 +695,7 @@ public static void Proxy( value: runtimeClassName)))); // Add the generated marshaller attribute - marshallerType.CustomAttributes.Add(new CustomAttribute(comWrappersMarshallerAttributeType.GetConstructor()!.Import(module))); + marshallerType.CustomAttributes.Add(new CustomAttribute(comWrappersMarshallerAttributeType.GetConstructor()!)); } /// diff --git a/src/WinRT.Interop.Generator/Builders/WindowsRuntimeTypeHierarchyBuilder.cs b/src/WinRT.Interop.Generator/Builders/WindowsRuntimeTypeHierarchyBuilder.cs index acb5ac380..4e1c3664b 100644 --- a/src/WinRT.Interop.Generator/Builders/WindowsRuntimeTypeHierarchyBuilder.cs +++ b/src/WinRT.Interop.Generator/Builders/WindowsRuntimeTypeHierarchyBuilder.cs @@ -224,7 +224,7 @@ private static void ValuesRva( ns: null, name: $"TypeHierarchyLookupValuesRvaData(Size={valuesRvaBuffer.WrittenCount}|Align=2)", attributes: TypeAttributes.NestedAssembly | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - baseType: interopReferences.ValueType.Import(module)) + baseType: interopReferences.ValueType) { ClassLayout = new ClassLayout(packingSize: 2, classSize: (uint)valuesRvaBuffer.WrittenCount) }; @@ -379,7 +379,7 @@ private static void KeysRva( ns: null, name: $"TypeHierarchyLookupKeysRvaData(Size={keysRvaBuffer.WrittenCount}|Align=2)", attributes: TypeAttributes.NestedAssembly | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - baseType: interopReferences.ValueType.Import(module)) + baseType: interopReferences.ValueType) { ClassLayout = new ClassLayout(packingSize: 2, classSize: (uint)keysRvaBuffer.WrittenCount) }; @@ -430,7 +430,7 @@ private static void BucketsRva( ns: null, name: $"TypeHierarchyLookupBucketsRvaData(Size={bucketsRvaBuffer.WrittenCount}|Align=4)", attributes: TypeAttributes.NestedAssembly | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - baseType: interopReferences.ValueType.Import(module)) + baseType: interopReferences.ValueType) { ClassLayout = new ClassLayout(packingSize: 4, classSize: (uint)bucketsRvaBuffer.WrittenCount) }; @@ -483,7 +483,7 @@ private static void WindowsRuntimeTypeHierarchyData( MethodDefinition get_BucketsMethod = new( name: "get_Buckets"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Static, - signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanInt32.Import(module))) + signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanInt32)) { IsAggressiveInlining = true, CilInstructions = @@ -491,7 +491,7 @@ private static void WindowsRuntimeTypeHierarchyData( { Ldsflda, bucketsRvaField }, { Conv_U }, { CilInstruction.CreateLdcI4((int)(bucketsRvaField.Signature!.FieldType.Resolve()!.ClassLayout!.ClassSize / sizeof(int))) }, - { Newobj, interopReferences.ReadOnlySpanInt32_ctor.Import(module) }, + { Newobj, interopReferences.ReadOnlySpanInt32_ctor }, { Ret } } }; @@ -500,7 +500,7 @@ private static void WindowsRuntimeTypeHierarchyData( MethodDefinition get_KeysMethod = new( name: "get_Keys"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Static, - signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanByte.Import(module))) + signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanByte)) { IsAggressiveInlining = true, CilInstructions = @@ -508,7 +508,7 @@ private static void WindowsRuntimeTypeHierarchyData( { Ldsflda, keysRvaField }, { Conv_U }, { CilInstruction.CreateLdcI4((int)keysRvaField.Signature!.FieldType.Resolve()!.ClassLayout!.ClassSize) }, - { Newobj, interopReferences.ReadOnlySpanByte_ctor.Import(module) }, + { Newobj, interopReferences.ReadOnlySpanByte_ctor }, { Ret } } }; @@ -517,7 +517,7 @@ private static void WindowsRuntimeTypeHierarchyData( MethodDefinition get_ValuesMethod = new( name: "get_Values"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Static, - signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanByte.Import(module))) + signature: MethodSignature.CreateStatic(interopReferences.ReadOnlySpanByte)) { IsAggressiveInlining = true, CilInstructions = @@ -525,7 +525,7 @@ private static void WindowsRuntimeTypeHierarchyData( { Ldsflda, valuesRvaField }, { Conv_U }, { CilInstruction.CreateLdcI4((int)valuesRvaField.Signature!.FieldType.Resolve()!.ClassLayout!.ClassSize) }, - { Newobj, interopReferences.ReadOnlySpanByte_ctor.Import(module) }, + { Newobj, interopReferences.ReadOnlySpanByte_ctor }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Extensions/ImportExtensions.cs b/src/WinRT.Interop.Generator/Extensions/ImportExtensions.cs deleted file mode 100644 index 77a1f99a0..000000000 --- a/src/WinRT.Interop.Generator/Extensions/ImportExtensions.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using AsmResolver.DotNet; -using AsmResolver.DotNet.Signatures; - -namespace WindowsRuntime.InteropGenerator; - -/// -/// Extensions to import metadata elements into modules. -/// -internal static class ImportExtensions -{ - /// - /// Imports a type definition or reference into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static ITypeDefOrRef Import(this ITypeDefOrRef typeDefOrRef, ModuleDefinition module) - { - return typeDefOrRef.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a method definition or reference into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static IMethodDefOrRef Import(this IMethodDefOrRef methodDefOrRef, ModuleDefinition module) - { - return (IMethodDefOrRef)methodDefOrRef.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a type signature into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static TypeSignature Import(this TypeSignature typeSignature, ModuleDefinition module) - { - return typeSignature.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a type signature into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static GenericInstanceTypeSignature Import(this GenericInstanceTypeSignature typeSignature, ModuleDefinition module) - { - return (GenericInstanceTypeSignature)typeSignature.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a method signature into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static MethodSignature Import(this MethodSignature methodSignature, ModuleDefinition module) - { - return methodSignature.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a member reference into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static AssemblyReference Import(this AssemblyReference assemblyReference, ModuleDefinition module) - { - return assemblyReference.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a member reference into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static MemberReference Import(this MemberReference memberReference, ModuleDefinition module) - { - return memberReference.ImportWith(module.DefaultImporter); - } - - /// - /// Imports a method specification into a module using the default reference importer. - /// - /// The instance to import. - /// The module to import into. - /// The imported . - public static MethodSpecification Import(this MethodSpecification methodSpecification, ModuleDefinition module) - { - return methodSpecification.ImportWith(module.DefaultImporter); - } -} \ No newline at end of file diff --git a/src/WinRT.Interop.Generator/Extensions/MethodDefinitionExtensions.cs b/src/WinRT.Interop.Generator/Extensions/MethodDefinitionExtensions.cs index da61ffd59..d00d8c099 100644 --- a/src/WinRT.Interop.Generator/Extensions/MethodDefinitionExtensions.cs +++ b/src/WinRT.Interop.Generator/Extensions/MethodDefinitionExtensions.cs @@ -39,7 +39,7 @@ public static MethodDefinition CreateDefaultConstructor(ModuleDefinition module) CilInstructions = { { Ldarg_0 }, - { Call, object_ctor.Import(module) }, + { Call, object_ctor }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropCustomAttributeFactory.cs b/src/WinRT.Interop.Generator/Factories/InteropCustomAttributeFactory.cs index 8b2bbf230..fc6dda2c8 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropCustomAttributeFactory.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropCustomAttributeFactory.cs @@ -25,12 +25,12 @@ internal static class InteropCustomAttributeFactory public static CustomAttribute UnmanagedCallersOnly(InteropReferences interopReferences, ModuleDefinition module) { // Get the 'Type[]' signature and reuse it (we need it for both the argument and the element) - TypeSignature typeArraySignature = interopReferences.Type.Import(module).MakeSzArrayType(); + TypeSignature typeArraySignature = interopReferences.Type.MakeSzArrayType(); // Create the following attribute: // // [UnmanagedCallersOnly(CallConvs = [typeof(CallConvMemberFunction)])] - return new(interopReferences.UnmanagedCallersOnlyAttribute_ctor.Import(module), new CustomAttributeSignature( + return new(interopReferences.UnmanagedCallersOnlyAttribute_ctor, new CustomAttributeSignature( fixedArguments: [], namedArguments: [new CustomAttributeNamedArgument( memberType: CustomAttributeArgumentMemberType.Field, @@ -38,7 +38,7 @@ public static CustomAttribute UnmanagedCallersOnly(InteropReferences interopRefe argumentType: typeArraySignature, argument: new CustomAttributeArgument( argumentType: typeArraySignature, - elements: interopReferences.CallConvMemberFunction.Import(module).ToReferenceTypeSignature()))])); + elements: interopReferences.CallConvMemberFunction.ToReferenceTypeSignature()))])); } /// @@ -58,9 +58,9 @@ public static CustomAttribute AttributeUsage( // Create the following attribute: // // [AttributeUsage(, AllowMultiple = )] - return new(interopReferences.AttributeUsageAttribute_ctor_AttributeTargets.Import(module), new CustomAttributeSignature( + return new(interopReferences.AttributeUsageAttribute_ctor_AttributeTargets, new CustomAttributeSignature( fixedArguments: [new CustomAttributeArgument( - argumentType: interopReferences.AttributeTargets.Import(module).ToValueTypeSignature(), + argumentType: interopReferences.AttributeTargets.ToValueTypeSignature(), value: (int)attributeTargets)], namedArguments: [new CustomAttributeNamedArgument( memberType: CustomAttributeArgumentMemberType.Property, @@ -113,17 +113,17 @@ public static CustomAttribute TypeMapWindowsRuntimeComWrappersTypeMapGroup( // Create the following attribute: // // [TypeMap(, , )] - return new(interopReferences.TypeMapAttributeWindowsRuntimeComWrappersTypeMapGroup_ctor_TrimTarget.Import(module), new CustomAttributeSignature( + return new(interopReferences.TypeMapAttributeWindowsRuntimeComWrappersTypeMapGroup_ctor_TrimTarget, new CustomAttributeSignature( fixedArguments: [ new CustomAttributeArgument( argumentType: module.CorLibTypeFactory.String, value: value), new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: target.Import(module)), + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: target), new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: trimTarget.Import(module))])); + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: trimTarget)])); } /// @@ -143,14 +143,14 @@ public static CustomAttribute TypeMapAssociationWindowsRuntimeComWrappersTypeMap // Create the following attribute: // // [TypeMap(, )] - return new(interopReferences.TypeMapAssociationAttributeWindowsRuntimeComWrappersTypeMapGroup_ctor.Import(module), new CustomAttributeSignature( + return new(interopReferences.TypeMapAssociationAttributeWindowsRuntimeComWrappersTypeMapGroup_ctor, new CustomAttributeSignature( fixedArguments: [ new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: source.Import(module)), + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: source), new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: proxy.Import(module))])); + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: proxy)])); } /// @@ -170,13 +170,13 @@ public static CustomAttribute TypeMapAssociationDynamicInterfaceCastableImplemen // Create the following attribute: // // [TypeMap(, )] - return new(interopReferences.TypeMapAssociationAttributeDynamicInterfaceCastableImplementationTypeMapGroup_ctor.Import(module), new CustomAttributeSignature( + return new(interopReferences.TypeMapAssociationAttributeDynamicInterfaceCastableImplementationTypeMapGroup_ctor, new CustomAttributeSignature( fixedArguments: [ new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: source.Import(module)), + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: source), new CustomAttributeArgument( - argumentType: interopReferences.Type.Import(module).ToReferenceTypeSignature(), - value: proxy.Import(module))])); + argumentType: interopReferences.Type.ToReferenceTypeSignature(), + value: proxy)])); } } \ No newline at end of file diff --git a/src/WinRT.Interop.Generator/Factories/InteropMemberDefinitionFactory.cs b/src/WinRT.Interop.Generator/Factories/InteropMemberDefinitionFactory.cs index c9e397c8d..f4d616c05 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMemberDefinitionFactory.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMemberDefinitionFactory.cs @@ -43,7 +43,7 @@ public static void LazyVolatileReferenceDefaultConstructorReadOnlyProperty( backingField = new FieldDefinition( name: $"<{propertyName}>k__BackingField", attributes: FieldAttributes.Private | FieldAttributes.Static, - fieldType: propertyType.Import(module)); + fieldType: propertyType); // Define the factory method as follows: // @@ -52,16 +52,16 @@ public static void LazyVolatileReferenceDefaultConstructorReadOnlyProperty( factoryMethod = new MethodDefinition( name: $"g__CreateValue|{index}_0", attributes: MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.Static, - signature: MethodSignature.CreateStatic(propertyType.Import(module))) + signature: MethodSignature.CreateStatic(propertyType)) { NoInlining = true, CilInstructions = { // _ = Interlocked.CompareExchange(ref , value: new(), comparand: null); { Ldsflda, backingField }, - { Newobj, propertyType.ToTypeDefOrRef().CreateConstructorReference(module.CorLibTypeFactory).Import(module) }, + { Newobj, propertyType.ToTypeDefOrRef().CreateConstructorReference(module.CorLibTypeFactory) }, { Ldnull }, - { Call, interopReferences.InterlockedCompareExchange1.MakeGenericInstanceMethod(propertyType).Import(module) }, + { Call, interopReferences.InterlockedCompareExchange1.MakeGenericInstanceMethod(propertyType) }, { Pop }, // return ; @@ -77,7 +77,7 @@ public static void LazyVolatileReferenceDefaultConstructorReadOnlyProperty( getAccessorMethod = new MethodDefinition( name: $"get_{propertyName}", attributes: MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Static, - signature: MethodSignature.CreateStatic(propertyType.Import(module))) + signature: MethodSignature.CreateStatic(propertyType)) { IsAggressiveInlining = true, CilInstructions = diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncActionWithProgress1Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncActionWithProgress1Impl.cs index d37d3e6d7..59a8e94b5 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncActionWithProgress1Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncActionWithProgress1Impl.cs @@ -49,7 +49,7 @@ public static MethodDefinition GetResults( // Labels for jumps CilInstruction ldarg_0_tryStart = new(Ldarg_0); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Declare the local variables: // [0]: 'int' (the 'HRESULT' to return) @@ -63,8 +63,8 @@ public static MethodDefinition GetResults( { // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(actionType).Import(module) }, - { Callvirt, interopReferences.IAsyncActionWithProgress1GetResults(progressType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(actionType) }, + { Callvirt, interopReferences.IAsyncActionWithProgress1GetResults(progressType) }, { Ldc_I4_0 }, { Stloc_0 }, { Leave_S, ldloc_0_returnHResult.CreateLabel() }, @@ -87,7 +87,7 @@ public static MethodDefinition GetResults( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoImpl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoImpl.cs index f5612281e..b6cd834ba 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoImpl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoImpl.cs @@ -61,13 +61,13 @@ public static MethodDefinition get_Handler( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Declare the local variables: // [0]: 'int' (the 'HRESULT' to return) // [1]: 'WindowsRuntimeObjectReferenceValue' (the marshalled async info instance) CilLocalVariable loc_0_hresult = new(module.CorLibTypeFactory.Int32); - CilLocalVariable loc_1_handlerValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_1_handlerValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); // Create a method body for the 'get_Current' method handlerMethod.CilMethodBody = new CilMethodBody() @@ -87,12 +87,12 @@ public static MethodDefinition get_Handler( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(asyncInfoType).Import(module) }, - { Callvirt, get_HandlerMethod.Import(module) }, - { Call, convertToUnmanagedMethod.Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(asyncInfoType) }, + { Callvirt, get_HandlerMethod }, + { Call, convertToUnmanagedMethod }, { Stloc_1 }, { Ldloca_S, loc_1_handlerValue }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe }, { Stind_I }, { Ldc_I4_0 }, { Stloc_0 }, @@ -116,7 +116,7 @@ public static MethodDefinition get_Handler( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -163,7 +163,7 @@ public static MethodDefinition set_Handler( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_0_tryStart = new(Ldarg_0); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Declare the local variables: // [0]: 'int' (the 'HRESULT' to return) @@ -186,10 +186,10 @@ public static MethodDefinition set_Handler( // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(asyncInfoType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(asyncInfoType) }, { Ldarg_1 }, - { Call, convertToManagedMethod.Import(module) }, - { Callvirt, set_HandlerMethod.Import(module) }, + { Call, convertToManagedMethod }, + { Callvirt, set_HandlerMethod }, { Ldc_I4_0 }, { Stloc_0 }, { Leave_S, ldloc_0_returnHResult.CreateLabel() }, @@ -212,7 +212,7 @@ public static MethodDefinition set_Handler( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoMethods.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoMethods.cs index fd06e8ddd..57ebd62d1 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoMethods.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IAsyncInfoMethods.cs @@ -47,8 +47,8 @@ public static MethodDefinition get_Handler( name: methodName, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: handlerType.Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + returnType: handlerType, + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { NoInlining = true }; // Declare the local variables: @@ -56,10 +56,10 @@ public static MethodDefinition get_Handler( // [1]: 'void*' (for 'thisPtr') // [2]: 'void*' (the handler pointer that was retrieved) // [3]: '' (the marshalled handler) - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); CilLocalVariable loc_2_handlerPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); - CilLocalVariable loc_3_handler = new(handlerType.Import(module)); + CilLocalVariable loc_3_handler = new(handlerType); // Jump labels CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue); @@ -77,25 +77,25 @@ public static MethodDefinition get_Handler( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_1 }, { Ldloc_1 }, { Ldloca_S, loc_2_handlerPtr }, { Ldloc_1 }, { Ldind_I }, { Ldfld, vftblField }, - { Calli, WellKnownTypeSignatureFactory.get_Handler(interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.get_Handler(interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, nop_finallyEnd.CreateLabel() }, // '.finally' code { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, { nop_finallyEnd }, @@ -105,7 +105,7 @@ public static MethodDefinition get_Handler( { Stloc_3 }, { Leave_S, ldloc_3_finallyEnd.CreateLabel() }, { ldloc_2_finallyStart }, - { Call, interopReferences.WindowsRuntimeUnknownMarshallerFree.Import(module) }, + { Call, interopReferences.WindowsRuntimeUnknownMarshallerFree }, { Endfinally }, { ldloc_3_finallyEnd }, { Ret } @@ -160,16 +160,16 @@ public static MethodDefinition set_Handler( signature: MethodSignature.CreateStatic( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), - handlerType.Import(module)])) + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), + handlerType])) { NoInlining = true }; // Declare the local variables: // [0]: 'WindowsRuntimeObjectReferenceValue' (for 'thisValue') // [1]: 'WindowsRuntimeObjectReferenceValue' (for 'handlerValue') // [2]: 'void*' (for 'thisPtr') - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); - CilLocalVariable loc_1_handlerValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); + CilLocalVariable loc_1_handlerValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_2_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); // Jump labels @@ -187,7 +187,7 @@ public static MethodDefinition set_Handler( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // Initialize 'handlerValue' @@ -197,26 +197,26 @@ public static MethodDefinition set_Handler( // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_2 }, { Ldloc_2 }, { Ldloca_S, loc_1_handlerValue }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Ldloc_2 }, { Ldind_I }, { Ldfld, vftblField }, - { Calli, WellKnownTypeSignatureFactory.set_Handler(interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.set_Handler(interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, ret_finallyEnd.CreateLabel() }, // '.finally' code (for 'handlerValue') { ldloca_s_1_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, // '.finally' code (for 'thisValue') { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, // Return (after both '.finally' blocks) @@ -268,17 +268,17 @@ public static MethodDefinition GetResults( name: "GetResults"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: resultType.Import(module), - parameterTypes: [interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature()])) + returnType: resultType, + parameterTypes: [interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()])) { NoInlining = true }; // Declare the local variables: // [0]: 'WindowsRuntimeObjectReferenceValue' (for 'thisValue') // [1]: 'void*' (for 'thisPtr') // [2]: '' (the ABI type for the type argument) - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); - CilLocalVariable loc_2_resultNative = new(resultType.GetAbiType(interopReferences).Import(module)); + CilLocalVariable loc_2_resultNative = new(resultType.GetAbiType(interopReferences)); // Jump labels CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue); @@ -294,12 +294,12 @@ public static MethodDefinition GetResults( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_1 }, { Ldloc_1 }, { Ldarg_1 }, @@ -307,13 +307,13 @@ public static MethodDefinition GetResults( { Ldloc_1 }, { Ldind_I }, { Ldfld, vftblField }, - { Calli, WellKnownTypeSignatureFactory.get_TypedRetVal(resultType.GetAbiType(interopReferences).MakePointerType(), interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.get_TypedRetVal(resultType.GetAbiType(interopReferences).MakePointerType(), interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, nop_finallyEnd.CreateLabel() }, // '.finally' code { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, { nop_finallyEnd }, { nop_returnValueRewrite } diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerable1Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerable1Impl.cs index b621ff34b..85a5c534e 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerable1Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerable1Impl.cs @@ -56,7 +56,7 @@ public static MethodDefinition First( CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction nop_convertToUnmanaged = new(Nop); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Declare the local variables: // [0]: 'int' (the 'HRESULT' to return) @@ -80,8 +80,8 @@ public static MethodDefinition First( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumerableType).Import(module) }, - { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumerableType) }, + { Callvirt, interopReferences.IEnumerable1GetEnumerator(elementType) }, { nop_convertToUnmanaged }, { Ldc_I4_0 }, { Stloc_0 }, @@ -105,7 +105,7 @@ public static MethodDefinition First( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerator1Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerator1Impl.cs index 23789f3dd..62f120ae7 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerator1Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IEnumerator1Impl.cs @@ -51,7 +51,7 @@ public static MethodDefinition get_Current( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - elementType.GetAbiType(interopReferences).Import(module).MakePointerType()])) + elementType.GetAbiType(interopReferences).MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -60,7 +60,7 @@ public static MethodDefinition get_Current( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction nop_convertToUnmanaged = new(Nop); // Create a method body for the 'get_Current' method @@ -83,9 +83,9 @@ public static MethodDefinition get_Current( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType).Import(module) }, - { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType).Import(module) }, - { Callvirt, interopReferences.IEnumeratorAdapter1get_Current(elementType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType) }, + { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType) }, + { Callvirt, interopReferences.IEnumeratorAdapter1get_Current(elementType) }, { nop_convertToUnmanaged }, { Ldc_I4_0 }, { Stloc_0 }, @@ -109,7 +109,7 @@ public static MethodDefinition get_Current( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -163,7 +163,7 @@ public static MethodDefinition HasCurrentOrMoveNext( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Create a method body for the 'get_HasCurrent' method boolMethod.CilMethodBody = new CilMethodBody() @@ -185,9 +185,9 @@ public static MethodDefinition HasCurrentOrMoveNext( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType).Import(module) }, - { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType).Import(module) }, - { Callvirt, adapterMethod.Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType) }, + { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType) }, + { Callvirt, adapterMethod }, { Stind_I1 }, { Ldc_I4_0 }, { Stloc_0 }, @@ -211,7 +211,7 @@ public static MethodDefinition HasCurrentOrMoveNext( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -244,7 +244,7 @@ public static MethodDefinition GetMany( parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), module.CorLibTypeFactory.UInt32, - elementType.GetAbiType(interopReferences).Import(module).MakePointerType(), + elementType.GetAbiType(interopReferences).MakePointerType(), module.CorLibTypeFactory.UInt32.MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } @@ -255,7 +255,7 @@ public static MethodDefinition GetMany( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_0_tryStart = new(Ldarg_0); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction nop_implementation = new(Nop); // Create a method body for the 'get_Current' method @@ -267,7 +267,7 @@ public static MethodDefinition GetMany( LocalVariables = { new CilLocalVariable(module.CorLibTypeFactory.Int32), - new CilLocalVariable(interopReferences.IEnumeratorAdapter1.MakeGenericReferenceType(elementType).Import(module)) + new CilLocalVariable(interopReferences.IEnumeratorAdapter1.MakeGenericReferenceType(elementType)) }, Instructions = { @@ -286,8 +286,8 @@ public static MethodDefinition GetMany( // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType).Import(module) }, - { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(enumeratorType) }, + { Call, interopReferences.IEnumeratorAdapter1GetInstance(elementType) }, { Stloc_1 }, { nop_implementation }, { Ldc_I4_0 }, @@ -312,7 +312,7 @@ public static MethodDefinition GetMany( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IKeyValuePair2Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IKeyValuePair2Impl.cs index d364a67e9..d01b64ca4 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IKeyValuePair2Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IKeyValuePair2Impl.cs @@ -95,14 +95,13 @@ private static MethodDefinition get_KeyOrValue( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - keyOrValueType.GetAbiType(interopReferences).Import(module).MakePointerType()])) + keyOrValueType.GetAbiType(interopReferences).MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; // Reference the 'KeyValuePair<,>' accessor method MemberReference get_KeyOrValueAccessorMethod = keyValuePairType - .Import(module) .ToTypeDefOrRef() .CreateMemberReference( memberName: methodName, @@ -114,13 +113,13 @@ private static MethodDefinition get_KeyOrValue( // [0]: 'int' (the 'HRESULT' to return) // [1]: 'KeyValuePair<,>' (the boxed object to get values from) CilLocalVariable loc_0_hresult = new(module.CorLibTypeFactory.Int32); - CilLocalVariable loc_1_keyValuePair = new(keyValuePairType.Import(module)); + CilLocalVariable loc_1_keyValuePair = new(keyValuePairType); // Labels for jumps CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction nop_convertToUnmanaged = new(Nop); // Create a method body for the native export method @@ -141,8 +140,8 @@ private static MethodDefinition get_KeyOrValue( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(module.CorLibTypeFactory.Object).Import(module) }, - { Unbox_Any, keyValuePairType.Import(module).ToTypeDefOrRef() }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(module.CorLibTypeFactory.Object) }, + { Unbox_Any, keyValuePairType.ToTypeDefOrRef() }, { Stloc_1 }, { Ldarg_1 }, { Ldloca_S, loc_1_keyValuePair }, @@ -170,7 +169,7 @@ private static MethodDefinition get_KeyOrValue( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IMapChangedEventArgs1Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IMapChangedEventArgs1Impl.cs index ba1fc64f3..9fa3d93b6 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IMapChangedEventArgs1Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IMapChangedEventArgs1Impl.cs @@ -44,7 +44,7 @@ public static MethodDefinition CollectionChanged( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.CollectionChange.Import(module).MakePointerType()])) + interopReferences.CollectionChange.MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -53,7 +53,7 @@ public static MethodDefinition CollectionChanged( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); // Create a method body for the 'get_CollectionChanged' method collectionChangeMethod.CilMethodBody = new CilMethodBody() @@ -75,8 +75,8 @@ public static MethodDefinition CollectionChanged( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(argsType).Import(module) }, - { Callvirt, interopReferences.IMapChangedEventArgs1get_CollectionChange(elementType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(argsType) }, + { Callvirt, interopReferences.IMapChangedEventArgs1get_CollectionChange(elementType) }, { Stind_I4 }, { Ldc_I4_0 }, { Stloc_0 }, @@ -100,7 +100,7 @@ public static MethodDefinition CollectionChanged( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -134,7 +134,7 @@ public static MethodDefinition Key( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - keyType.GetAbiType(interopReferences).Import(module).MakePointerType()])) + keyType.GetAbiType(interopReferences).MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -143,7 +143,7 @@ public static MethodDefinition Key( CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_1_tryStart = new(Ldarg_1); CilInstruction ldloc_0_returnHResult = new(Ldloc_0); - CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged.Import(module)); + CilInstruction call_catchStartMarshalException = new(Call, interopReferences.RestrictedErrorInfoExceptionMarshallerConvertToUnmanaged); CilInstruction nop_convertToUnmanaged = new(Nop); // Create a method body for the 'get_Current' method @@ -166,8 +166,8 @@ public static MethodDefinition Key( // '.try' code { ldarg_1_tryStart }, { Ldarg_0 }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(argsType).Import(module) }, - { Callvirt, interopReferences.IMapChangedEventArgs1get_Key(keyType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(argsType) }, + { Callvirt, interopReferences.IMapChangedEventArgs1get_Key(keyType) }, { nop_convertToUnmanaged }, { Ldc_I4_0 }, { Stloc_0 }, @@ -191,7 +191,7 @@ public static MethodDefinition Key( TryEnd = call_catchStartMarshalException.CreateLabel(), HandlerStart = call_catchStartMarshalException.CreateLabel(), HandlerEnd = ldloc_0_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableMap2Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableMap2Impl.cs index ce3814123..4eaf62348 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableMap2Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableMap2Impl.cs @@ -61,7 +61,7 @@ public static MethodDefinition add_MapChanged( parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.EventRegistrationToken.MakePointerType().Import(module)])) + interopReferences.EventRegistrationToken.MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -70,15 +70,15 @@ public static MethodDefinition add_MapChanged( CilInstruction ldc_i4_e_pointer = new(Ldc_I4, unchecked((int)0x80004003)); CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_0_tryStart = new(Ldarg_0); - CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult.Import(module)); + CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult); CilInstruction ldloc_2_returnHResult = new(Ldloc_2); // Declare the local variables: // [0]: '' (the 'unboxedValue' object) // [1]: 'MapChangedEventHandler<, >' (the 'managedHandler' object) // [2]: 'int' (the 'HRESULT' to return) - CilLocalVariable loc_0_unboxedValue = new(mapType.Import(module)); - CilLocalVariable loc_1_managedHandler = new(eventHandlerType.Import(module)); + CilLocalVariable loc_0_unboxedValue = new(mapType); + CilLocalVariable loc_1_managedHandler = new(eventHandlerType); CilLocalVariable loc_2_hresult = new(module.CorLibTypeFactory.Int32); // Create a method body for the 'add_MapChanged' method @@ -102,7 +102,7 @@ public static MethodDefinition add_MapChanged( // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(mapType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(mapType) }, { Stloc_0 }, { Ldarg_1 }, { Call, emitState.LookupTypeDefinition(eventHandlerType, "Marshaller").GetMethod("ConvertToManaged"u8) }, @@ -112,15 +112,15 @@ public static MethodDefinition add_MapChanged( { Ldarg_2 }, { Call, get_MapChangedTableMethod }, { Ldloc_0 }, - { Callvirt, interopReferences.ConditionalWeakTable2GetOrCreateValue(conditionalWeakTableType).Import(module) }, + { Callvirt, interopReferences.ConditionalWeakTable2GetOrCreateValue(conditionalWeakTableType) }, { Ldloc_1 }, - { Callvirt, interopReferences.EventRegistrationTokenTableAddEventHandler(eventRegistrationTokenTableType).Import(module) }, - { Stobj, interopReferences.EventRegistrationToken.Import(module) }, + { Callvirt, interopReferences.EventRegistrationTokenTableAddEventHandler(eventRegistrationTokenTableType) }, + { Stobj, interopReferences.EventRegistrationToken }, // unboxedValue.MapChanged += managedHandler; { Ldloc_0 }, { Ldloc_1 }, - { Callvirt, interopReferences.IObservableMap2add_MapChanged(keyType, valueType).Import(module) }, + { Callvirt, interopReferences.IObservableMap2add_MapChanged(keyType, valueType) }, { Ldc_I4_0 }, { Stloc_2 }, { Leave_S, ldloc_2_returnHResult.CreateLabel() }, @@ -143,7 +143,7 @@ public static MethodDefinition add_MapChanged( TryEnd = callvirt_catchHResult.CreateLabel(), HandlerStart = callvirt_catchHResult.CreateLabel(), HandlerEnd = ldloc_2_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -187,7 +187,7 @@ public static MethodDefinition remove_MapChanged( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.EventRegistrationToken.ToValueTypeSignature().Import(module)])) + interopReferences.EventRegistrationToken.ToValueTypeSignature()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -195,7 +195,7 @@ public static MethodDefinition remove_MapChanged( // Jump labels CilInstruction ldarg_0_tryStart = new(Ldarg_0); CilInstruction ldc_i4_0_return0 = new(Ldc_I4_0); - CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult.Import(module)); + CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult); CilInstruction ldloc_3_returnHResult = new(Ldloc_3); // Declare the local variables: @@ -203,9 +203,9 @@ public static MethodDefinition remove_MapChanged( // [1]: 'EventRegistrationTokenTable, >>' (the 'table' object) // [2]: 'MapChangedEventHandler<, >' (the 'managedHandler' object) // [3]: 'int' (the 'HRESULT' to return) - CilLocalVariable loc_0_unboxedValue = new(mapType.Import(module)); - CilLocalVariable loc_1_table = new(eventRegistrationTokenTableType.Import(module)); - CilLocalVariable loc_2_managedHandler = new(eventHandlerType.Import(module)); + CilLocalVariable loc_0_unboxedValue = new(mapType); + CilLocalVariable loc_1_table = new(eventRegistrationTokenTableType); + CilLocalVariable loc_2_managedHandler = new(eventHandlerType); CilLocalVariable loc_3_hresult = new(module.CorLibTypeFactory.Int32); // Create a method body for the 'remove_MapChanged' method @@ -216,7 +216,7 @@ public static MethodDefinition remove_MapChanged( { // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(mapType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(mapType) }, { Stloc_0 }, // if (unboxedValue != null && MapChangedTable.TryGetValue(unboxedValue, out EventRegistrationTokenTable, >> table)) @@ -225,20 +225,20 @@ public static MethodDefinition remove_MapChanged( { Call, get_MapChangedTableMethod }, { Ldloc_0 }, { Ldloca_S, loc_1_table }, - { Callvirt, interopReferences.ConditionalWeakTable2TryGetValue(conditionalWeakTableType).Import(module) }, + { Callvirt, interopReferences.ConditionalWeakTable2TryGetValue(conditionalWeakTableType) }, { Brfalse_S, ldc_i4_0_return0.CreateLabel() }, // if (table.RemoveEventHandler(token, out MapChangedEventHandler<, > managedHandler)) { Ldloc_1 }, { Ldarg_1 }, { Ldloca_S, loc_2_managedHandler }, - { Callvirt, interopReferences.EventRegistrationTokenTableRemoveEventHandler(eventRegistrationTokenTableType).Import(module) }, + { Callvirt, interopReferences.EventRegistrationTokenTableRemoveEventHandler(eventRegistrationTokenTableType) }, { Brfalse_S, ldc_i4_0_return0.CreateLabel() }, // unboxedValue.MapChanged -= managedHandler; { Ldloc_0 }, { Ldloc_2 }, - { Callvirt, interopReferences.IObservableMap2remove_MapChanged(keyType, valueType).Import(module) }, + { Callvirt, interopReferences.IObservableMap2remove_MapChanged(keyType, valueType) }, // Return S_OK { ldc_i4_0_return0 }, @@ -263,7 +263,7 @@ public static MethodDefinition remove_MapChanged( TryEnd = callvirt_catchHResult.CreateLabel(), HandlerStart = callvirt_catchHResult.CreateLabel(), HandlerEnd = ldloc_3_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableVector1Impl.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableVector1Impl.cs index e92c8b4eb..67f362cf9 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableVector1Impl.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IObservableVector1Impl.cs @@ -60,7 +60,7 @@ public static MethodDefinition add_VectorChanged( parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.EventRegistrationToken.MakePointerType().Import(module)])) + interopReferences.EventRegistrationToken.MakePointerType()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -69,15 +69,15 @@ public static MethodDefinition add_VectorChanged( CilInstruction ldc_i4_e_pointer = new(Ldc_I4, unchecked((int)0x80004003)); CilInstruction nop_beforeTry = new(Nop); CilInstruction ldarg_0_tryStart = new(Ldarg_0); - CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult.Import(module)); + CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult); CilInstruction ldloc_2_returnHResult = new(Ldloc_2); // Declare the local variables: // [0]: '' (the 'unboxedValue' object) // [1]: 'VectorChangedEventHandler<>' (the 'managedHandler' object) // [2]: 'int' (the 'HRESULT' to return) - CilLocalVariable loc_0_unboxedValue = new(vectorType.Import(module)); - CilLocalVariable loc_1_managedHandler = new(eventHandlerType.Import(module)); + CilLocalVariable loc_0_unboxedValue = new(vectorType); + CilLocalVariable loc_1_managedHandler = new(eventHandlerType); CilLocalVariable loc_2_hresult = new(module.CorLibTypeFactory.Int32); // Create a method body for the 'add_VectorChanged' method @@ -101,7 +101,7 @@ public static MethodDefinition add_VectorChanged( // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(vectorType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(vectorType) }, { Stloc_0 }, { Ldarg_1 }, { Call, emitState.LookupTypeDefinition(eventHandlerType, "Marshaller").GetMethod("ConvertToManaged"u8) }, @@ -111,15 +111,15 @@ public static MethodDefinition add_VectorChanged( { Ldarg_2 }, { Call, get_VectorChangedTableMethod }, { Ldloc_0 }, - { Callvirt, interopReferences.ConditionalWeakTable2GetOrCreateValue(conditionalWeakTableType).Import(module) }, + { Callvirt, interopReferences.ConditionalWeakTable2GetOrCreateValue(conditionalWeakTableType) }, { Ldloc_1 }, - { Callvirt, interopReferences.EventRegistrationTokenTableAddEventHandler(eventRegistrationTokenTableType).Import(module) }, - { Stobj, interopReferences.EventRegistrationToken.Import(module) }, + { Callvirt, interopReferences.EventRegistrationTokenTableAddEventHandler(eventRegistrationTokenTableType) }, + { Stobj, interopReferences.EventRegistrationToken }, // unboxedValue.VectorChanged += managedHandler; { Ldloc_0 }, { Ldloc_1 }, - { Callvirt, interopReferences.IObservableVector1add_VectorChanged(elementType).Import(module) }, + { Callvirt, interopReferences.IObservableVector1add_VectorChanged(elementType) }, { Ldc_I4_0 }, { Stloc_2 }, { Leave_S, ldloc_2_returnHResult.CreateLabel() }, @@ -142,7 +142,7 @@ public static MethodDefinition add_VectorChanged( TryEnd = callvirt_catchHResult.CreateLabel(), HandlerStart = callvirt_catchHResult.CreateLabel(), HandlerEnd = ldloc_2_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; @@ -185,7 +185,7 @@ public static MethodDefinition remove_VectorChanged( returnType: module.CorLibTypeFactory.Int32, parameterTypes: [ module.CorLibTypeFactory.Void.MakePointerType(), - interopReferences.EventRegistrationToken.ToValueTypeSignature().Import(module)])) + interopReferences.EventRegistrationToken.ToValueTypeSignature()])) { CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) } }; @@ -193,7 +193,7 @@ public static MethodDefinition remove_VectorChanged( // Jump labels CilInstruction ldarg_0_tryStart = new(Ldarg_0); CilInstruction ldc_i4_0_return0 = new(Ldc_I4_0); - CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult.Import(module)); + CilInstruction callvirt_catchHResult = new(Callvirt, interopReferences.Exceptionget_HResult); CilInstruction ldloc_3_returnHResult = new(Ldloc_3); // Declare the local variables: @@ -201,9 +201,9 @@ public static MethodDefinition remove_VectorChanged( // [1]: 'EventRegistrationTokenTable>>' (the 'table' object) // [2]: 'VectorChangedEventHandler<>' (the 'managedHandler' object) // [3]: 'int' (the 'HRESULT' to return) - CilLocalVariable loc_0_unboxedValue = new(vectorType.Import(module)); - CilLocalVariable loc_1_table = new(eventRegistrationTokenTableType.Import(module)); - CilLocalVariable loc_2_managedHandler = new(eventHandlerType.Import(module)); + CilLocalVariable loc_0_unboxedValue = new(vectorType); + CilLocalVariable loc_1_table = new(eventRegistrationTokenTableType); + CilLocalVariable loc_2_managedHandler = new(eventHandlerType); CilLocalVariable loc_3_hresult = new(module.CorLibTypeFactory.Int32); // Create a method body for the 'remove_VectorChanged' method @@ -214,7 +214,7 @@ public static MethodDefinition remove_VectorChanged( { // '.try' code { ldarg_0_tryStart }, - { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(vectorType).Import(module) }, + { Call, interopReferences.ComInterfaceDispatchGetInstance.MakeGenericInstanceMethod(vectorType) }, { Stloc_0 }, // if (unboxedValue != null && VectorChangedTable.TryGetValue(unboxedValue, out EventRegistrationTokenTable>> table)) @@ -223,20 +223,20 @@ public static MethodDefinition remove_VectorChanged( { Call, get_VectorChangedTableMethod }, { Ldloc_0 }, { Ldloca_S, loc_1_table }, - { Callvirt, interopReferences.ConditionalWeakTable2TryGetValue(conditionalWeakTableType).Import(module) }, + { Callvirt, interopReferences.ConditionalWeakTable2TryGetValue(conditionalWeakTableType) }, { Brfalse_S, ldc_i4_0_return0.CreateLabel() }, // if (table.RemoveEventHandler(token, out VectorChangedEventHandler<> managedHandler)) { Ldloc_1 }, { Ldarg_1 }, { Ldloca_S, loc_2_managedHandler }, - { Callvirt, interopReferences.EventRegistrationTokenTableRemoveEventHandler(eventRegistrationTokenTableType).Import(module) }, + { Callvirt, interopReferences.EventRegistrationTokenTableRemoveEventHandler(eventRegistrationTokenTableType) }, { Brfalse_S, ldc_i4_0_return0.CreateLabel() }, // unboxedValue.VectorChanged -= managedHandler; { Ldloc_0 }, { Ldloc_2 }, - { Callvirt, interopReferences.IObservableVector1remove_VectorChanged(elementType).Import(module) }, + { Callvirt, interopReferences.IObservableVector1remove_VectorChanged(elementType) }, // Return S_OK { ldc_i4_0_return0 }, @@ -261,7 +261,7 @@ public static MethodDefinition remove_VectorChanged( TryEnd = callvirt_catchHResult.CreateLabel(), HandlerStart = callvirt_catchHResult.CreateLabel(), HandlerEnd = ldloc_3_returnHResult.CreateLabel(), - ExceptionType = interopReferences.Exception.Import(module) + ExceptionType = interopReferences.Exception } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IVectorViewMethods.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IVectorViewMethods.cs index 33c7868e1..0dc2f5fee 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IVectorViewMethods.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.IVectorViewMethods.cs @@ -47,9 +47,9 @@ public static MethodDefinition GetAt( name: "GetAt"u8, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: elementType.Import(module), + returnType: elementType, parameterTypes: [ - interopReferences.WindowsRuntimeObjectReference.Import(module).ToReferenceTypeSignature(), + interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature(), module.CorLibTypeFactory.UInt32])) { NoInlining = true }; @@ -57,9 +57,9 @@ public static MethodDefinition GetAt( // [0]: 'WindowsRuntimeObjectReferenceValue' (for 'thisValue') // [1]: 'void*' (for 'thisPtr') // [2]: '' (the ABI type for the type argument) - CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module)); + CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType()); - CilLocalVariable loc_2_resultNative = new(elementType.GetAbiType(interopReferences).Import(module)); + CilLocalVariable loc_2_resultNative = new(elementType.GetAbiType(interopReferences)); // Jump labels CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue); @@ -75,12 +75,12 @@ public static MethodDefinition GetAt( { // Initialize 'thisValue' { Ldarg_0 }, - { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue.Import(module) }, + { Callvirt, interopReferences.WindowsRuntimeObjectReferenceAsValue }, { Stloc_0 }, // '.try' code { ldloca_s_0_tryStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueGetThisPtrUnsafe }, { Stloc_1 }, { Ldloc_1 }, { Ldarg_1 }, @@ -91,13 +91,13 @@ public static MethodDefinition GetAt( // This 'calli' instruction is always using 'IReadOnlyList1GetAtImpl', but the signature for // the vtable slot for 'GetAt' for 'IVector' is identical, so doing so is safe in this case. - { Calli, WellKnownTypeSignatureFactory.IReadOnlyList1GetAtImpl(elementType, interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.IReadOnlyList1GetAtImpl(elementType, interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { Leave_S, nop_finallyEnd.CreateLabel() }, // '.finally' code { ldloca_s_0_finallyStart }, - { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose.Import(module) }, + { Call, interopReferences.WindowsRuntimeObjectReferenceValueDispose }, { Endfinally }, { nop_finallyEnd }, { nop_returnValueRewrite } diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.KeyValuePairMethods.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.KeyValuePairMethods.cs index fbf6871ee..a198c3ea2 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.KeyValuePairMethods.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.KeyValuePairMethods.cs @@ -51,13 +51,13 @@ public static MethodDefinition get_KeyOrValue( name: accessorMethodName, attributes: MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static, signature: MethodSignature.CreateStatic( - returnType: keyOrValueType.Import(module), + returnType: keyOrValueType, parameterTypes: [module.CorLibTypeFactory.Void.MakePointerType()])) { NoInlining = true }; // Declare the local variables: // [0]: '' (the ABI type for the result type) - CilLocalVariable loc_0_resultNative = new(keyOrValueType.GetAbiType(interopReferences).Import(module)); + CilLocalVariable loc_0_resultNative = new(keyOrValueType.GetAbiType(interopReferences)); // Jump labels CilInstruction nop_returnValueRewrite = new(Nop); @@ -73,8 +73,8 @@ public static MethodDefinition get_KeyOrValue( { Ldarg_0 }, { Ldind_I }, { Ldfld, vftblType.GetField(vftblMethodName) }, - { Calli, WellKnownTypeSignatureFactory.get_UntypedRetVal(interopReferences).Import(module).MakeStandAloneSignature() }, - { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR.Import(module) }, + { Calli, WellKnownTypeSignatureFactory.get_UntypedRetVal(interopReferences).MakeStandAloneSignature() }, + { Call, interopReferences.RestrictedErrorInfoThrowExceptionForHR }, { nop_returnValueRewrite } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.SzArrayMarshaller.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.SzArrayMarshaller.cs index a41eb897a..d79ebbfc2 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.SzArrayMarshaller.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodDefinitionFactory.SzArrayMarshaller.cs @@ -41,7 +41,7 @@ public static MethodDefinition Free( returnType: module.CorLibTypeFactory.Void, parameterTypes: [ module.CorLibTypeFactory.UInt32, - elementType.GetAbiType(interopReferences).Import(module).MakePointerType()])); + elementType.GetAbiType(interopReferences).MakePointerType()])); // For 'string', 'Type', reference types and blittable types, we can reuse the shared stubs from the 'WindowsRuntimeArrayHelpers' // type in WinRT.Runtime.dll, to simplify the code and reduce binary size (as we can reuse all these stubs for multiple types). @@ -53,7 +53,7 @@ public static MethodDefinition Free( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeArrayHelpersFreeHStringArrayUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeArrayHelpersFreeHStringArrayUnsafe }, { Ret } } }; @@ -66,7 +66,7 @@ public static MethodDefinition Free( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeArrayHelpersFreeTypeArrayUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeArrayHelpersFreeTypeArrayUnsafe }, { Ret } } }; @@ -79,7 +79,7 @@ public static MethodDefinition Free( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeArrayHelpersFreeObjectArrayUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeArrayHelpersFreeObjectArrayUnsafe }, { Ret } } }; @@ -92,7 +92,7 @@ public static MethodDefinition Free( { { Ldarg_0 }, { Ldarg_1 }, - { Call, interopReferences.WindowsRuntimeArrayHelpersFreeBlittableArrayUnsafe.Import(module) }, + { Call, interopReferences.WindowsRuntimeArrayHelpersFreeBlittableArrayUnsafe }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.RetVal.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.RetVal.cs index 92ba43c34..ce8242d19 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.RetVal.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.RetVal.cs @@ -86,7 +86,7 @@ public static void RewriteMethod( ElementType.R4 => new CilInstruction(Stind_R4), ElementType.R8 => new CilInstruction(Stind_R8), ElementType.ValueType when retValType.Resolve() is { IsClass: true, IsEnum: true } => new CilInstruction(Stind_I4), - _ => new CilInstruction(Stobj, retValType.Import(module).ToTypeDefOrRef()), + _ => new CilInstruction(Stobj, retValType.ToTypeDefOrRef()), }; body.Instructions.ReplaceRange(marker, [storeInstruction]); @@ -138,30 +138,30 @@ public static void RewriteMethod( // Delegate to the marshaller to convert the managed value type on the evaluation stack body.Instructions.ReplaceRange(marker, [ - new CilInstruction(Call, marshallerMethod.Import(module)), - new CilInstruction(Stobj, retValType.GetAbiType(interopReferences).Import(module).ToTypeDefOrRef())]); + new CilInstruction(Call, marshallerMethod), + new CilInstruction(Stobj, retValType.GetAbiType(interopReferences).ToTypeDefOrRef())]); } } else if (retValType.IsTypeOfString(interopReferences)) { // When marshalling 'string' values, we must use 'HStringMarshaller' body.Instructions.ReplaceRange(marker, [ - new CilInstruction(Call, interopReferences.HStringMarshallerConvertToUnmanaged.Import(module)), + new CilInstruction(Call, interopReferences.HStringMarshallerConvertToUnmanaged), new CilInstruction(Stind_I)]); } else if (retValType.IsTypeOfType(interopReferences)) { // 'Type' values also need their own specialized marshaller body.Instructions.ReplaceRange(marker, [ - new CilInstruction(Call, interopReferences.TypeMarshallerConvertToUnmanaged.Import(module)), - new CilInstruction(Stobj, interopReferences.AbiType.Import(module).ToTypeDefOrRef())]); + new CilInstruction(Call, interopReferences.TypeMarshallerConvertToUnmanaged), + new CilInstruction(Stobj, interopReferences.AbiType)]); } else if (retValType.IsTypeOfException(interopReferences)) { // 'Exception' is also special, and needs its own specialized marshaller body.Instructions.ReplaceRange(marker, [ - new CilInstruction(Call, interopReferences.ExceptionMarshallerConvertToUnmanaged.Import(module)), - new CilInstruction(Stobj, interopReferences.AbiException.Import(module).ToTypeDefOrRef())]); + new CilInstruction(Call, interopReferences.ExceptionMarshallerConvertToUnmanaged), + new CilInstruction(Stobj, interopReferences.AbiException)]); } else if (retValType is GenericInstanceTypeSignature) { @@ -208,16 +208,16 @@ private static void RewriteBody( // We need a new local for the 'WindowsRuntimeObjectReferenceValue' returned from the // marshalling methods that the code will invoke. This is because we are going to call // the 'DetachThisPtrUnsafe()' method on it, which needs 'this' by reference. - CilLocalVariable loc_returnValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.Import(module).ToValueTypeSignature()); + CilLocalVariable loc_returnValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature()); body.LocalVariables.Add(loc_returnValue); // Marshal the value and detach its native pointer before assigning it to the target location body.Instructions.ReplaceRange(marker, [ - new CilInstruction(Call, marshallerMethod.Import(module)), + new CilInstruction(Call, marshallerMethod), CilInstruction.CreateStloc(loc_returnValue, body), new CilInstruction(Ldloca_S, loc_returnValue), - new CilInstruction(Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe.Import(module)), + new CilInstruction(Call, interopReferences.WindowsRuntimeObjectReferenceValueDetachThisPtrUnsafe), new CilInstruction(Stind_I)]); } } diff --git a/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.ReturnValue.cs b/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.ReturnValue.cs index 66acd389b..b661c41e7 100644 --- a/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.ReturnValue.cs +++ b/src/WinRT.Interop.Generator/Factories/InteropMethodRewriteFactory.ReturnValue.cs @@ -157,7 +157,7 @@ public static void RewriteMethod( // We can directly call the marshaller and return it, no 'try/finally' complexity is needed body.Instructions.ReplaceRange(marker, [ CilInstruction.CreateLdloc(source, body), - new CilInstruction(Call, marshallerMethod.Import(module)), + new CilInstruction(Call, marshallerMethod), new CilInstruction(Ret)]); } } @@ -190,7 +190,7 @@ public static void RewriteMethod( // 'Exception' is also special, though it's simple: the ABI type is an unmanaged value type body.Instructions.ReplaceRange(marker, [ CilInstruction.CreateLdloc(source, body), - new CilInstruction(Call, interopReferences.ExceptionMarshallerConvertToManaged.Import(module)), + new CilInstruction(Call, interopReferences.ExceptionMarshallerConvertToManaged), new CilInstruction(Ret)]); } else if (returnType is GenericInstanceTypeSignature) @@ -247,7 +247,7 @@ private static void RewriteBody( // Add a new local for the marshalled return value. We need this because it will be // assigned from inside a protected region (a 'try') block, so we can't return the // value directly. Instead, we'll load and return the local after the handler code. - CilLocalVariable loc_returnValue = new(returnType.Import(module)); + CilLocalVariable loc_returnValue = new(returnType); body.LocalVariables.Add(loc_returnValue); @@ -259,11 +259,11 @@ private static void RewriteBody( // Marshal the value and release the original interface pointer, or dispose the ABI value body.Instructions.ReplaceRange(marker, [ ldloc_tryStart, - new CilInstruction(Call, marshallerMethod.Import(module)), + new CilInstruction(Call, marshallerMethod), CilInstruction.CreateStloc(loc_returnValue, body), new CilInstruction(Leave_S, ldloc_finallyEnd.CreateLabel()), ldloc_finallyStart, - new CilInstruction(Call, releaseOrDisposeMethod.Import(module)), + new CilInstruction(Call, releaseOrDisposeMethod), new CilInstruction(Endfinally), ldloc_finallyEnd, new CilInstruction(Ret)]); diff --git a/src/WinRT.Interop.Generator/Factories/WellKnownCilMethodBodyFactory.cs b/src/WinRT.Interop.Generator/Factories/WellKnownCilMethodBodyFactory.cs index fb1296cce..7cd208e78 100644 --- a/src/WinRT.Interop.Generator/Factories/WellKnownCilMethodBodyFactory.cs +++ b/src/WinRT.Interop.Generator/Factories/WellKnownCilMethodBodyFactory.cs @@ -45,11 +45,11 @@ public static CilMethodBody DynamicInterfaceCastableImplementation( // Load 'this', cast to 'WindowsRuntimeObject', and call 'GetObjectReferenceForInterface' // with the 'RuntimeTypeHandle' value that's loaded for the target interface type. { Ldarg_0 }, - { Castclass, interopReferences.WindowsRuntimeObject.Import(module) }, - { Ldtoken, interfaceType.Import(module).ToTypeDefOrRef() }, - { Call, interopReferences.TypeGetTypeFromHandle.Import(module) }, - { Callvirt, interopReferences.Typeget_TypeHandle.Import(module) }, - { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface.Import(module) }, + { Castclass, interopReferences.WindowsRuntimeObject }, + { Ldtoken, interfaceType.ToTypeDefOrRef() }, + { Call, interopReferences.TypeGetTypeFromHandle }, + { Callvirt, interopReferences.Typeget_TypeHandle }, + { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface }, } }; @@ -101,20 +101,20 @@ public static CilMethodBody DynamicInterfaceCastableImplementation( { LocalVariables = { - new CilLocalVariable(interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature().Import(module)), - new CilLocalVariable(interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature().Import(module)) + new CilLocalVariable(interopReferences.WindowsRuntimeObject.ToReferenceTypeSignature()), + new CilLocalVariable(interopReferences.WindowsRuntimeObjectReference.ToReferenceTypeSignature()) }, Instructions = { // Cast 'this' and resolve the 'WindowsRuntimeObjectReference' instance for the interface { Ldarg_0 }, - { Castclass, interopReferences.WindowsRuntimeObject.Import(module) }, + { Castclass, interopReferences.WindowsRuntimeObject }, { Stloc_0 }, { Ldloc_0 }, - { Ldtoken, interfaceType.Import(module).ToTypeDefOrRef() }, - { Call, interopReferences.TypeGetTypeFromHandle.Import(module) }, - { Callvirt, interopReferences.Typeget_TypeHandle.Import(module) }, - { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface.Import(module) }, + { Ldtoken, interfaceType.ToTypeDefOrRef() }, + { Call, interopReferences.TypeGetTypeFromHandle }, + { Callvirt, interopReferences.Typeget_TypeHandle }, + { Callvirt, interopReferences.WindowsRuntimeObjectGetObjectReferenceForInterface }, { Stloc_1 }, // (thisObject, thisReference).(value); @@ -122,7 +122,7 @@ public static CilMethodBody DynamicInterfaceCastableImplementation( { Ldloc_1 }, { Call, eventMethod }, { Ldarg_1 }, - { Callvirt, accessorMethod.Import(module) }, + { Callvirt, accessorMethod }, { Ret } } }; diff --git a/src/WinRT.Interop.Generator/Factories/WellKnownMemberDefinitionFactory.cs b/src/WinRT.Interop.Generator/Factories/WellKnownMemberDefinitionFactory.cs index e9be743bb..776627151 100644 --- a/src/WinRT.Interop.Generator/Factories/WellKnownMemberDefinitionFactory.cs +++ b/src/WinRT.Interop.Generator/Factories/WellKnownMemberDefinitionFactory.cs @@ -23,7 +23,6 @@ internal static class WellKnownMemberDefinitionFactory /// The name to use for . /// The type to use for IID RVA fields. /// The instance to use. - /// The module that will contain the type being created. /// The value to use for the RVA field. /// The resulting RVA field for the IID data. /// The resulting 'IID' getter method. @@ -33,7 +32,6 @@ public static void IID( Utf8String iidRvaFieldName, TypeDefinition iidRvaDataType, InteropReferences interopReferences, - ModuleDefinition module, in Guid iid, out FieldDefinition iidRvaField, out MethodDefinition get_IidMethod, @@ -49,7 +47,7 @@ public static void IID( }; // The 'IID' property type has the signature being 'Guid& modreq(InAttribute)' - TypeSignature iidPropertyType = WellKnownTypeSignatureFactory.InGuid(interopReferences).Import(module); + TypeSignature iidPropertyType = WellKnownTypeSignatureFactory.InGuid(interopReferences); // Select the property and accessor name based on 'propertyName' Utf8String effectivePropertyName = $"IID_{propertyName}"; @@ -74,7 +72,7 @@ public static void IID( attributes: PropertyAttributes.None, signature: PropertySignature.FromGetMethod(get_IidMethod)) { - CustomAttributes = { new CustomAttribute(interopReferences.IsReadOnlyAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.IsReadOnlyAttribute_ctor) }, GetMethod = get_IidMethod }; } @@ -84,18 +82,16 @@ public static void IID( /// /// The to forward calls to. /// The instance to use. - /// The module that will contain the type being created. /// The resulting 'IID' getter method. /// The resulting 'IID' property. public static void IID( MethodDefinition forwardedIidMethod, InteropReferences interopReferences, - ModuleDefinition module, out MethodDefinition get_IidMethod, out PropertyDefinition iidProperty) { // The 'IID' property type has the signature being 'Guid& modreq(InAttribute)' - TypeSignature iidPropertyType = WellKnownTypeSignatureFactory.InGuid(interopReferences).Import(module); + TypeSignature iidPropertyType = WellKnownTypeSignatureFactory.InGuid(interopReferences); // Create the 'get_IID' getter method get_IidMethod = new MethodDefinition( @@ -117,7 +113,7 @@ public static void IID( attributes: PropertyAttributes.None, signature: PropertySignature.FromGetMethod(get_IidMethod)) { - CustomAttributes = { new CustomAttribute(interopReferences.IsReadOnlyAttribute_ctor.Import(module)) }, + CustomAttributes = { new CustomAttribute(interopReferences.IsReadOnlyAttribute_ctor) }, GetMethod = get_IidMethod }; } diff --git a/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.IgnoreAccessChecksToAttribute.cs b/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.IgnoreAccessChecksToAttribute.cs index 4db1750eb..ee0ed8945 100644 --- a/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.IgnoreAccessChecksToAttribute.cs +++ b/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.IgnoreAccessChecksToAttribute.cs @@ -27,7 +27,7 @@ public static TypeDefinition IgnoresAccessChecksToAttribute(InteropReferences in ns: "System.Runtime.CompilerServices"u8, name: "IgnoresAccessChecksToAttribute"u8, attributes: TypeAttributes.Public | TypeAttributes.AutoLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.Attribute.Import(module)); + baseType: interopReferences.Attribute); // Add the '_assemblyName' field FieldDefinition assemblyNameField = new( @@ -46,7 +46,7 @@ public static TypeDefinition IgnoresAccessChecksToAttribute(InteropReferences in _ = ctor.CilMethodBody!.Instructions.Insert(1, Ldarg_1); _ = ctor.CilMethodBody!.Instructions.Insert(2, Stfld, assemblyNameField); _ = ctor.CilMethodBody!.Instructions.Insert(3, Ldarg_0); - _ = ctor.CilMethodBody!.Instructions.Insert(4, Call, interopReferences.Attribute_ctor.Import(module)); + _ = ctor.CilMethodBody!.Instructions.Insert(4, Call, interopReferences.Attribute_ctor); // Create the 'get_AssemblyName' getter method MethodDefinition get_AssemblyNameMethod = new( diff --git a/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.cs b/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.cs index 0a007c5da..67618f809 100644 --- a/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.cs +++ b/src/WinRT.Interop.Generator/Factories/WellKnownTypeDefinitionFactory.cs @@ -28,7 +28,7 @@ public static TypeDefinition IUnknownVftbl(InteropReferences interopReferences, ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -40,9 +40,9 @@ public static TypeDefinition IUnknownVftbl(InteropReferences interopReferences, // public delegate* unmanaged[MemberFunction] QueryInterface; // public delegate* unmanaged[MemberFunction] AddRef; // public delegate* unmanaged[MemberFunction] Release; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); return vftblType; } @@ -60,7 +60,7 @@ public static TypeDefinition IInspectableVftbl(InteropReferences interopReferenc ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -80,12 +80,12 @@ public static TypeDefinition IInspectableVftbl(InteropReferences interopReferenc // public delegate* unmanaged[MemberFunction] GetIids; // public delegate* unmanaged[MemberFunction] GetRuntimeClassName; // public delegate* unmanaged[MemberFunction] GetTrustLevel; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); return vftblType; } @@ -104,7 +104,7 @@ public static TypeDefinition DelegateVftbl(InteropReferences interopReferences, ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -120,10 +120,10 @@ public static TypeDefinition DelegateVftbl(InteropReferences interopReferences, // public delegate* unmanaged[MemberFunction] AddRef; // public delegate* unmanaged[MemberFunction] Release; // public delegate* unmanaged[MemberFunction] Invoke; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Invoke"u8, FieldAttributes.Public, invokeType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Invoke"u8, FieldAttributes.Public, invokeType.MakeFunctionPointerType())); return vftblType; } @@ -140,7 +140,7 @@ public static TypeDefinition DelegateReferenceVftbl(InteropReferences interopRef ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -172,13 +172,13 @@ public static TypeDefinition DelegateReferenceVftbl(InteropReferences interopRef // public delegate* unmanaged[MemberFunction] GetRuntimeClassName; // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] get_Value; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, valueType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, valueType.MakeFunctionPointerType())); return vftblType; } @@ -195,10 +195,10 @@ public static TypeDefinition DelegateInterfaceEntriesType(InteropReferences inte ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the signature for the 'ComInterfaceEntry' type (this is a bit involved, so cache it) - TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.Import(module).ToValueTypeSignature(); + TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.ToValueTypeSignature(); // The type layout looks like this: // @@ -236,7 +236,7 @@ public static TypeDefinition IEnumerator1Vftbl(InteropReferences interopReferenc ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -266,16 +266,16 @@ public static TypeDefinition IEnumerator1Vftbl(InteropReferences interopReferenc // public delegate* unmanaged[MemberFunction] get_HasCurrent; // public delegate* unmanaged[MemberFunction] MoveNext; // public delegate* unmanaged[MemberFunction] GetMany; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Current"u8, FieldAttributes.Public, get_CurrentType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_HasCurrent"u8, FieldAttributes.Public, get_HasCurrentType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("MoveNext"u8, FieldAttributes.Public, moveNextType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Current"u8, FieldAttributes.Public, get_CurrentType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_HasCurrent"u8, FieldAttributes.Public, get_HasCurrentType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("MoveNext"u8, FieldAttributes.Public, moveNextType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.MakeFunctionPointerType())); return vftblType; } @@ -292,7 +292,7 @@ public static TypeDefinition IEnumerable1Vftbl(InteropReferences interopReferenc ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -316,13 +316,13 @@ public static TypeDefinition IEnumerable1Vftbl(InteropReferences interopReferenc // public delegate* unmanaged[MemberFunction] GetRuntimeClassName; // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] First; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("First"u8, FieldAttributes.Public, firstType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("First"u8, FieldAttributes.Public, firstType.MakeFunctionPointerType())); return vftblType; } @@ -367,7 +367,7 @@ public static TypeDefinition IReadOnlyList1Vftbl( ns: ns, name: name, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -397,16 +397,16 @@ public static TypeDefinition IReadOnlyList1Vftbl( // public delegate* unmanaged[MemberFunction] get_Size; // public delegate* unmanaged[MemberFunction], uint*, HRESULT> IndexOf; // public delegate* unmanaged[MemberFunction]*, uint*, HRESULT> GetMany; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetAt"u8, FieldAttributes.Public, getAtType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("IndexOf"u8, FieldAttributes.Public, indexOfType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetAt"u8, FieldAttributes.Public, getAtType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("IndexOf"u8, FieldAttributes.Public, indexOfType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.MakeFunctionPointerType())); return vftblType; } @@ -451,7 +451,7 @@ public static TypeDefinition IList1Vftbl( ns: ns, name: name, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -498,24 +498,24 @@ public static TypeDefinition IList1Vftbl( // public delegate* unmanaged[MemberFunction] Clear; // public delegate* unmanaged[MemberFunction] GetMany; // public delegate* unmanaged[MemberFunction] ReplaceAll; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetAt"u8, FieldAttributes.Public, getAtType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetView"u8, FieldAttributes.Public, getViewType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("IndexOf"u8, FieldAttributes.Public, indexOfType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("SetAt"u8, FieldAttributes.Public, setAtType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("InsertAt"u8, FieldAttributes.Public, insertAtType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("RemoveAt"u8, FieldAttributes.Public, removeAtType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Append"u8, FieldAttributes.Public, appendType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("RemoveAtEnd"u8, FieldAttributes.Public, removeAtEndType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Clear"u8, FieldAttributes.Public, clearType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("ReplaceAll"u8, FieldAttributes.Public, replaceAllType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetAt"u8, FieldAttributes.Public, getAtType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetView"u8, FieldAttributes.Public, getViewType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("IndexOf"u8, FieldAttributes.Public, indexOfType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("SetAt"u8, FieldAttributes.Public, setAtType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("InsertAt"u8, FieldAttributes.Public, insertAtType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("RemoveAt"u8, FieldAttributes.Public, removeAtType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Append"u8, FieldAttributes.Public, appendType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("RemoveAtEnd"u8, FieldAttributes.Public, removeAtEndType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Clear"u8, FieldAttributes.Public, clearType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetMany"u8, FieldAttributes.Public, getManyType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("ReplaceAll"u8, FieldAttributes.Public, replaceAllType.MakeFunctionPointerType())); return vftblType; } @@ -563,7 +563,7 @@ public static TypeDefinition IReadOnlyDictionary2Vftbl( ns: ns, name: name, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -593,16 +593,16 @@ public static TypeDefinition IReadOnlyDictionary2Vftbl( // public delegate* unmanaged[MemberFunction] get_Size; // public delegate* unmanaged[MemberFunction] HasKey; // public delegate* unmanaged[MemberFunction] Split; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Lookup"u8, FieldAttributes.Public, lookupType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("HasKey"u8, FieldAttributes.Public, hasKeyType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Split"u8, FieldAttributes.Public, splitType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Lookup"u8, FieldAttributes.Public, lookupType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("HasKey"u8, FieldAttributes.Public, hasKeyType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Split"u8, FieldAttributes.Public, splitType.MakeFunctionPointerType())); return vftblType; } @@ -650,7 +650,7 @@ public static TypeDefinition IDictionary2Vftbl( ns: ns, name: name, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -686,19 +686,19 @@ public static TypeDefinition IDictionary2Vftbl( // public delegate* unmanaged[MemberFunction] Insert; // public delegate* unmanaged[MemberFunction] Remove; // public delegate* unmanaged[MemberFunction] Clear; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Lookup"u8, FieldAttributes.Public, lookupType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("HasKey"u8, FieldAttributes.Public, hasKeyType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetView"u8, FieldAttributes.Public, getViewType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Insert"u8, FieldAttributes.Public, insertType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Remove"u8, FieldAttributes.Public, removeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Clear"u8, FieldAttributes.Public, clearType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Lookup"u8, FieldAttributes.Public, lookupType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Size"u8, FieldAttributes.Public, get_SizeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("HasKey"u8, FieldAttributes.Public, hasKeyType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetView"u8, FieldAttributes.Public, getViewType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Insert"u8, FieldAttributes.Public, insertType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Remove"u8, FieldAttributes.Public, removeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Clear"u8, FieldAttributes.Public, clearType.MakeFunctionPointerType())); return vftblType; } @@ -715,7 +715,7 @@ public static TypeDefinition IKeyValuePairVftbl(InteropReferences interopReferen ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -748,14 +748,14 @@ public static TypeDefinition IKeyValuePairVftbl(InteropReferences interopReferen // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] get_Key; // public delegate* unmanaged[MemberFunction] get_Value; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Key"u8, FieldAttributes.Public, get_KeyOrValueType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, get_KeyOrValueType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Key"u8, FieldAttributes.Public, get_KeyOrValueType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, get_KeyOrValueType.MakeFunctionPointerType())); return vftblType; } @@ -772,10 +772,10 @@ public static TypeDefinition IKeyValuePairInterfaceEntriesType(InteropReferences ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the signature for the 'ComInterfaceEntry' type (this is a bit involved, so cache it) - TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.Import(module).ToValueTypeSignature(); + TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.ToValueTypeSignature(); // The type layout looks like this: // @@ -809,7 +809,7 @@ public static TypeDefinition IMapChangedEventArgsVftbl(InteropReferences interop ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -853,14 +853,14 @@ public static TypeDefinition IMapChangedEventArgsVftbl(InteropReferences interop // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] get_CollectionChange; // public delegate* unmanaged[MemberFunction] get_Key; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_CollectionChange"u8, FieldAttributes.Public, collectionChangeType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Key"u8, FieldAttributes.Public, keyType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_CollectionChange"u8, FieldAttributes.Public, collectionChangeType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Key"u8, FieldAttributes.Public, keyType.MakeFunctionPointerType())); return vftblType; } @@ -877,7 +877,7 @@ public static TypeDefinition IObservableVectorVftbl(InteropReferences interopRef ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -903,14 +903,14 @@ public static TypeDefinition IObservableVectorVftbl(InteropReferences interopRef // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] add_VectorChanged; // public delegate* unmanaged[MemberFunction] remove_VectorChanged; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("add_VectorChanged"u8, FieldAttributes.Public, add_VectorChanged.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("remove_VectorChanged"u8, FieldAttributes.Public, remove_VectorChanged.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("add_VectorChanged"u8, FieldAttributes.Public, add_VectorChanged.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("remove_VectorChanged"u8, FieldAttributes.Public, remove_VectorChanged.MakeFunctionPointerType())); return vftblType; } @@ -927,7 +927,7 @@ public static TypeDefinition IObservableMapVftbl(InteropReferences interopRefere ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -953,14 +953,14 @@ public static TypeDefinition IObservableMapVftbl(InteropReferences interopRefere // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] add_MapChanged; // public delegate* unmanaged[MemberFunction] remove_MapChanged; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("add_MapChanged"u8, FieldAttributes.Public, add_MapChanged.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("remove_MapChanged"u8, FieldAttributes.Public, remove_MapChanged.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("add_MapChanged"u8, FieldAttributes.Public, add_MapChanged.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("remove_MapChanged"u8, FieldAttributes.Public, remove_MapChanged.MakeFunctionPointerType())); return vftblType; } @@ -977,7 +977,7 @@ public static TypeDefinition IAsyncActionWithProgressVftbl(InteropReferences int ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -1019,17 +1019,17 @@ public static TypeDefinition IAsyncActionWithProgressVftbl(InteropReferences int // public delegate* unmanaged[MemberFunction] get_Completed; // public delegate* unmanaged[MemberFunction] set_Completed; // public delegate* unmanaged[MemberFunction] GetResults; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Progress"u8, FieldAttributes.Public, get_ProgressType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("set_Progress"u8, FieldAttributes.Public, set_ProgressType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Progress"u8, FieldAttributes.Public, get_ProgressType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("set_Progress"u8, FieldAttributes.Public, set_ProgressType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.MakeFunctionPointerType())); return vftblType; } @@ -1046,7 +1046,7 @@ public static TypeDefinition IAsyncOperationVftbl(InteropReferences interopRefer ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -1076,15 +1076,15 @@ public static TypeDefinition IAsyncOperationVftbl(InteropReferences interopRefer // public delegate* unmanaged[MemberFunction] get_Completed; // public delegate* unmanaged[MemberFunction] set_Completed; // public delegate* unmanaged[MemberFunction] GetResults; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.MakeFunctionPointerType())); return vftblType; } @@ -1101,7 +1101,7 @@ public static TypeDefinition IAsyncOperationWithProgressVftbl(InteropReferences ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -1137,17 +1137,17 @@ public static TypeDefinition IAsyncOperationWithProgressVftbl(InteropReferences // public delegate* unmanaged[MemberFunction] get_Completed; // public delegate* unmanaged[MemberFunction] set_Completed; // public delegate* unmanaged[MemberFunction] GetResults; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Progress"u8, FieldAttributes.Public, get_ProgressType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("set_Progress"u8, FieldAttributes.Public, set_ProgressType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Progress"u8, FieldAttributes.Public, get_ProgressType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("set_Progress"u8, FieldAttributes.Public, set_ProgressType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Completed"u8, FieldAttributes.Public, get_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("set_Completed"u8, FieldAttributes.Public, set_CompletedType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetResults"u8, FieldAttributes.Public, getResultsType.MakeFunctionPointerType())); return vftblType; } @@ -1164,7 +1164,7 @@ public static TypeDefinition ReferenceArrayVftbl(InteropReferences interopRefere ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the 'IUnknown' signatures MethodSignature queryInterfaceType = WellKnownTypeSignatureFactory.QueryInterfaceImpl(interopReferences); @@ -1197,13 +1197,13 @@ public static TypeDefinition ReferenceArrayVftbl(InteropReferences interopRefere // public delegate* unmanaged[MemberFunction] GetRuntimeClassName; // public delegate* unmanaged[MemberFunction] GetTrustLevel; // public delegate* unmanaged[MemberFunction] get_Value; - vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.Import(module).MakeFunctionPointerType())); - vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, valueType.Import(module).MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("QueryInterface"u8, FieldAttributes.Public, queryInterfaceType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("AddRef"u8, FieldAttributes.Public, addRefType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("Release"u8, FieldAttributes.Public, releaseType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetIids"u8, FieldAttributes.Public, getIidsType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetRuntimeClassName"u8, FieldAttributes.Public, getRuntimeClassNameType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("GetTrustLevel"u8, FieldAttributes.Public, getTrustLevelType.MakeFunctionPointerType())); + vftblType.Fields.Add(new FieldDefinition("get_Value"u8, FieldAttributes.Public, valueType.MakeFunctionPointerType())); return vftblType; } @@ -1220,10 +1220,10 @@ public static TypeDefinition ReferenceArrayInterfaceEntriesType(InteropReference ns: null, name: ""u8, attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the signature for the 'ComInterfaceEntry' type (this is a bit involved, so cache it) - TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.Import(module).ToValueTypeSignature(); + TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.ToValueTypeSignature(); // The type layout looks like this: // @@ -1260,10 +1260,10 @@ public static TypeDefinition UserDefinedInterfaceEntriesType(int numberOfEntries ns: null, name: $"", attributes: TypeAttributes.SequentialLayout | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, - baseType: interopReferences.ValueType.Import(module)); + baseType: interopReferences.ValueType); // Get the signature for the 'ComInterfaceEntry' type - TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.Import(module).ToValueTypeSignature(); + TypeSignature comInterfaceEntryType = interopReferences.ComInterfaceEntry.ToValueTypeSignature(); // Add a field for each interface entry for (int i = 0; i < numberOfEntries; i++) @@ -1297,7 +1297,7 @@ public static TypeDefinition RvaFields(InteropReferences interopReferences, Modu ns: null, name: "IIDRvaData(Size=16|Align=4)", attributes: TypeAttributes.NestedAssembly | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - baseType: interopReferences.ValueType.Import(module)) + baseType: interopReferences.ValueType) { ClassLayout = new ClassLayout(packingSize: 4, classSize: 16) }; diff --git a/src/WinRT.Interop.Generator/Generation/InteropGenerator.Discover.cs b/src/WinRT.Interop.Generator/Generation/InteropGenerator.Discover.cs index ed6af4df9..4d480dad6 100644 --- a/src/WinRT.Interop.Generator/Generation/InteropGenerator.Discover.cs +++ b/src/WinRT.Interop.Generator/Generation/InteropGenerator.Discover.cs @@ -476,6 +476,6 @@ private static InteropReferences CreateDiscoveryInteropReferences(ModuleDefiniti windowsSdkProjectionAssembly.PublicKeyOrToken = InteropValues.PublicKeyData; windowsSdkProjectionAssembly.HasPublicKey = true; - return new(module.CorLibTypeFactory, windowsRuntimeAssembly.Import(module), windowsSdkProjectionAssembly.Import(module)); + return new(module.CorLibTypeFactory, windowsRuntimeAssembly, windowsSdkProjectionAssembly); } } \ No newline at end of file diff --git a/src/WinRT.Interop.Generator/Generation/InteropGenerator.Emit.cs b/src/WinRT.Interop.Generator/Generation/InteropGenerator.Emit.cs index 1ac582b0c..ad84c95c4 100644 --- a/src/WinRT.Interop.Generator/Generation/InteropGenerator.Emit.cs +++ b/src/WinRT.Interop.Generator/Generation/InteropGenerator.Emit.cs @@ -259,7 +259,6 @@ private static void DefineGenericDelegateTypes( delegateType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod, get_ReferenceIidMethod: out MethodDefinition get_ReferenceIidMethod); @@ -426,7 +425,6 @@ private static void DefineIEnumeratorTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -533,7 +531,6 @@ private static void DefineIEnumerableTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -656,7 +653,6 @@ private static void DefineIReadOnlyListTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -780,7 +776,6 @@ private static void DefineIListTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -912,7 +907,6 @@ private static void DefineIReadOnlyDictionaryTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1035,7 +1029,6 @@ private static void DefineIDictionaryTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1184,7 +1177,6 @@ private static void DefineKeyValuePairTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1259,7 +1251,6 @@ private static void DefineIMapChangedEventArgsTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1365,7 +1356,6 @@ private static void DefineIObservableVectorTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1481,7 +1471,6 @@ private static void DefineIObservableMapTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1597,7 +1586,6 @@ private static void DefineIAsyncActionWithProgressTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1703,7 +1691,6 @@ private static void DefineIAsyncOperationTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1809,7 +1796,6 @@ private static void DefineIAsyncOperationWithProgressTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod); @@ -1913,7 +1899,6 @@ private static void DefineSzArrayTypes( interfaceType: typeSignature, interopDefinitions: interopDefinitions, interopReferences: interopReferences, - module: module, useWindowsUIXamlProjections: args.UseWindowsUIXamlProjections, get_IidMethod: out MethodDefinition get_IidMethod);