From 5adec5a68aa412153e00116e8f3236bd32eb8dff Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Wed, 24 Aug 2016 00:26:23 +0200 Subject: [PATCH] [bcl] More netstandard api matching --- .../AssemblyInfo.cs | 2 +- .../AssemblyInfo.cs | 2 +- .../System.Reflection.Emit/AssemblyInfo.cs | 2 +- .../TypeForwarders.cs | 2 - .../Assembly/AssemblyInfo.cs | 2 +- .../System.Runtime.InteropServices/Marshal.cs | 162 +++++++++++------- .../runtime/interopservices/attributes.cs | 5 +- .../interopservices/dispatchwrapper.cs | 7 +- .../runtime/interopservices/errorwrapper.cs | 3 +- 9 files changed, 114 insertions(+), 73 deletions(-) diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs index d9427c8562d..8b9f6f86f5e 100644 --- a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs +++ b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs @@ -30,7 +30,7 @@ using System.Runtime.CompilerServices; [assembly: AssemblyCompany ("Xamarin, Inc.")] [assembly: AssemblyProduct ("Mono Common Language Infrastructure")] [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")] -[assembly: AssemblyVersion ("4.0.0.0")] +[assembly: AssemblyVersion ("4.0.1.0")] [assembly: AssemblyInformationalVersion ("4.0.0.0")] [assembly: AssemblyFileVersion ("4.0.0.0")] [assembly: AssemblyDelaySign (true)] diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs index 11f62613d08..cd48993eda7 100644 --- a/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs +++ b/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs @@ -30,7 +30,7 @@ using System.Runtime.CompilerServices; [assembly: AssemblyCompany ("Xamarin, Inc.")] [assembly: AssemblyProduct ("Mono Common Language Infrastructure")] [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")] -[assembly: AssemblyVersion ("4.0.0.0")] +[assembly: AssemblyVersion ("4.0.1.0")] [assembly: AssemblyInformationalVersion ("4.0.0.0")] [assembly: AssemblyFileVersion ("4.0.0.0")] [assembly: AssemblyDelaySign (true)] diff --git a/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs index 2acf0c84993..03e71faf4b5 100644 --- a/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs +++ b/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs @@ -30,7 +30,7 @@ using System.Runtime.CompilerServices; [assembly: AssemblyCompany ("Xamarin, Inc.")] [assembly: AssemblyProduct ("Mono Common Language Infrastructure")] [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")] -[assembly: AssemblyVersion ("4.0.0.0")] +[assembly: AssemblyVersion ("4.0.1.0")] [assembly: AssemblyInformationalVersion ("4.0.0.0")] [assembly: AssemblyFileVersion ("4.0.0.0")] [assembly: AssemblyDelaySign (true)] diff --git a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs index 94249720f6a..361d3326ff5 100644 --- a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs +++ b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs @@ -20,11 +20,9 @@ // THE SOFTWARE. // -#if !FULL_AOT_RUNTIME [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComImportAttribute))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispatchWrapper))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ErrorWrapper))] -#endif [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DataMisalignedException))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DllNotFoundException))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Missing))] diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs index 21e80b5733e..1a408f27117 100644 --- a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs +++ b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs @@ -46,7 +46,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany (Consts.MonoCompany)] [assembly: AssemblyProduct (Consts.MonoProduct)] [assembly: AssemblyCopyright (Consts.MonoCopyright)] -[assembly: AssemblyVersion (Consts.FxVersion)] +[assembly: AssemblyVersion ("4.0.0.0")] [assembly: SatelliteContractVersion (Consts.FxVersion)] [assembly: AssemblyInformationalVersion (Consts.FxFileVersion)] [assembly: AssemblyFileVersion (Consts.FxFileVersion)] diff --git a/mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs b/mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs index d1958f33eb2..548915c83a5 100644 --- a/mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs +++ b/mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs @@ -37,10 +37,10 @@ using System; using System.Security; using System.Reflection; using System.Threading; +using System.Runtime.InteropServices.ComTypes; using System.Runtime.ConstrainedExecution; #if !FULL_AOT_RUNTIME -using System.Runtime.InteropServices.ComTypes; using Mono.Interop; #endif @@ -197,9 +197,11 @@ namespace System.Runtime.InteropServices return CreateAggregatedObject (pOuter, (object)o); } -#if !FULL_AOT_RUNTIME public static object CreateWrapperOfType (object o, Type t) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else __ComObject co = o as __ComObject; if (co == null) throw new ArgumentException ("o must derive from __ComObject", "o"); @@ -213,12 +215,12 @@ namespace System.Runtime.InteropServices } return ComInteropProxy.GetProxy (co.IUnknown, t).GetTransparentProxy (); +#endif } public static TWrapper CreateWrapperOfType (T o) { return (TWrapper)CreateWrapperOfType ((object)o, typeof (TWrapper)); } -#endif [MethodImplAttribute(MethodImplOptions.InternalCall)] [ComVisible (true)] @@ -335,15 +337,16 @@ namespace System.Runtime.InteropServices return GetCCW (o, T); } #endif +#endif // !FULL_AOT_RUNTIME public static IntPtr GetComInterfaceForObject (object o, Type T) { -#if !MOBILE +#if MOBILE + throw new PlatformNotSupportedException (); +#else IntPtr pItf = GetComInterfaceForObjectInternal (o, T); AddRef (pItf); return pItf; -#else - throw new NotImplementedException (); #endif } @@ -357,6 +360,7 @@ namespace System.Runtime.InteropServices return GetComInterfaceForObject ((object)o, typeof (T)); } +#if !FULL_AOT_RUNTIME [MonoTODO] public static IntPtr GetComInterfaceForObjectInContext (object o, Type t) { @@ -395,12 +399,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } - [MonoTODO] - public static int GetExceptionCode() - { - throw new NotImplementedException (); - } - [MonoTODO] [ComVisible (true)] public static IntPtr GetExceptionPointers() @@ -417,7 +415,11 @@ namespace System.Runtime.InteropServices } #endif // !FULL_AOT_RUNTIME -#if !FULL_AOT_RUNTIME + public static int GetExceptionCode () + { + throw new PlatformNotSupportedException (); + } + public static int GetHRForException (Exception e) { #if FEATURE_COMINTEROP @@ -425,6 +427,8 @@ namespace System.Runtime.InteropServices SetErrorInfo (0, errorInfo); return e._HResult; +#elif FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); #else return -1; #endif @@ -434,9 +438,14 @@ namespace System.Runtime.InteropServices [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)] public static int GetHRForLastWin32Error() { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else throw new NotImplementedException (); +#endif } +#if !FULL_AOT_RUNTIME [MethodImplAttribute (MethodImplOptions.InternalCall)] private extern static IntPtr GetIDispatchForObjectInternal (object o); @@ -460,17 +469,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } - [MethodImplAttribute (MethodImplOptions.InternalCall)] - private extern static IntPtr GetIUnknownForObjectInternal (object o); - - public static IntPtr GetIUnknownForObject (object o) - { - IntPtr pUnk = GetIUnknownForObjectInternal (o); - // Internal method does not AddRef - AddRef (pUnk); - return pUnk; - } - [MonoTODO] public static IntPtr GetIUnknownForObjectInContext (object o) { @@ -490,25 +488,48 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } + [MethodImplAttribute (MethodImplOptions.InternalCall)] + private extern static IntPtr GetIUnknownForObjectInternal (object o); + +#endif // !FULL_AOT_RUNTIME + + public static IntPtr GetIUnknownForObject (object o) + { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else + IntPtr pUnk = GetIUnknownForObjectInternal (o); + // Internal method does not AddRef + AddRef (pUnk); + return pUnk; +#endif + } + public static void GetNativeVariantForObject (object obj, IntPtr pDstNativeVariant) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else Variant vt = new Variant(); vt.SetValue(obj); Marshal.StructureToPtr(vt, pDstNativeVariant, false); +#endif } public static void GetNativeVariantForObject (T obj, IntPtr pDstNativeVariant) { GetNativeVariantForObject ((object)obj, pDstNativeVariant); } -#if !MOBILE +#if !MOBILE && !FULL_AOT_RUNTIME [MethodImplAttribute (MethodImplOptions.InternalCall)] private static extern object GetObjectForCCW (IntPtr pUnk); #endif public static object GetObjectForIUnknown (IntPtr pUnk) { -#if !MOBILE +#if MOBILE || FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else object obj = GetObjectForCCW (pUnk); // was not a CCW if (obj == null) { @@ -516,24 +537,34 @@ namespace System.Runtime.InteropServices obj = proxy.GetTransparentProxy (); } return obj; -#else - throw new NotImplementedException (); #endif } public static object GetObjectForNativeVariant (IntPtr pSrcNativeVariant) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else Variant vt = (Variant)Marshal.PtrToStructure(pSrcNativeVariant, typeof(Variant)); return vt.GetValue(); +#endif } - public static T GetObjectForNativeVariant (IntPtr pSrcNativeVariant) { + public static T GetObjectForNativeVariant (IntPtr pSrcNativeVariant) + { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else Variant vt = (Variant)Marshal.PtrToStructure(pSrcNativeVariant, typeof(Variant)); return (T)vt.GetValue(); +#endif } public static object[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else if (cVars < 0) throw new ArgumentOutOfRangeException ("cVars", "cVars cannot be a negative number."); object[] objects = new object[cVars]; @@ -541,9 +572,14 @@ namespace System.Runtime.InteropServices objects[i] = GetObjectForNativeVariant ((IntPtr)(aSrcNativeVariant.ToInt64 () + i * SizeOf (typeof(Variant)))); return objects; +#endif } - public static T[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars) { + public static T[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars) + { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else if (cVars < 0) throw new ArgumentOutOfRangeException ("cVars", "cVars cannot be a negative number."); T[] objects = new T[cVars]; @@ -551,14 +587,20 @@ namespace System.Runtime.InteropServices objects[i] = GetObjectForNativeVariant ((IntPtr)(aSrcNativeVariant.ToInt64 () + i * SizeOf (typeof(Variant)))); return objects; +#endif } [MonoTODO] public static int GetStartComSlot (Type t) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else throw new NotImplementedException (); +#endif } +#if !FULL_AOT_RUNTIME [MonoTODO] [Obsolete ("This method has been deprecated")] public static Thread GetThreadFromFiberCookie (int cookie) @@ -585,12 +627,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } - public static Type GetTypeFromCLSID (Guid clsid) - { - throw new NotImplementedException (); - } - -#if !FULL_AOT_RUNTIME [Obsolete] [MonoTODO] public static string GetTypeInfoName (UCOMITypeInfo pTI) @@ -598,11 +634,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } - public static string GetTypeInfoName (ITypeInfo typeInfo) - { - throw new NotImplementedException (); - } - [Obsolete] [MonoTODO] public static Guid GetTypeLibGuid (UCOMITypeLib pTLB) @@ -654,12 +685,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } - public static object GetUniqueObjectForIUnknown (IntPtr unknown) - { - throw new NotImplementedException (); - } -#endif - [MonoTODO] [Obsolete ("This method has been deprecated")] public static IntPtr GetUnmanagedThunkForManagedMethodPtr (IntPtr pfnMethodToWrap, IntPtr pbSignature, int cbSignature) @@ -667,16 +692,6 @@ namespace System.Runtime.InteropServices throw new NotImplementedException (); } -#if !MOBILE - [MethodImplAttribute (MethodImplOptions.InternalCall)] - public extern static bool IsComObject (object o); -#else - public static bool IsComObject (object o) - { - throw new NotImplementedException (); - } -#endif - [MonoTODO] public static bool IsTypeVisibleFromCom (Type t) { @@ -688,6 +703,31 @@ namespace System.Runtime.InteropServices { throw new NotImplementedException (); } +#endif // !FULL_AOT_RUNTIME + + public static Type GetTypeFromCLSID (Guid clsid) + { + throw new PlatformNotSupportedException (); + } + + public static string GetTypeInfoName (ITypeInfo typeInfo) + { + throw new PlatformNotSupportedException (); + } + + public static object GetUniqueObjectForIUnknown (IntPtr unknown) + { + throw new PlatformNotSupportedException (); + } + +#if !MOBILE + [MethodImplAttribute (MethodImplOptions.InternalCall)] + public extern static bool IsComObject (object o); +#else + public static bool IsComObject (object o) + { + throw new PlatformNotSupportedException (); + } #endif [MethodImplAttribute(MethodImplOptions.InternalCall)] @@ -950,16 +990,22 @@ namespace System.Runtime.InteropServices #if !FULL_AOT_RUNTIME [MethodImplAttribute (MethodImplOptions.InternalCall)] private extern static int ReleaseComObjectInternal (object co); +#endif public static int ReleaseComObject (object o) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else if (o == null) throw new ArgumentException ("Value cannot be null.", "o"); if (!IsComObject (o)) throw new ArgumentException ("Value must be a Com object.", "o"); return ReleaseComObjectInternal (o); +#endif } +#if !FULL_AOT_RUNTIME [Obsolete] [MonoTODO] public static void ReleaseThreadCache() @@ -1630,13 +1676,11 @@ namespace System.Runtime.InteropServices #endif } -#if !FULL_AOT_RUNTIME public static int FinalReleaseComObject (object o) { while (ReleaseComObject (o) != 0); return 0; } -#endif [MethodImplAttribute(MethodImplOptions.InternalCall)] private static extern Delegate GetDelegateForFunctionPointerInternal (IntPtr ptr, Type t); diff --git a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/attributes.cs b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/attributes.cs index 756ff5d87c3..17068f63bc9 100644 --- a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/attributes.cs +++ b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/attributes.cs @@ -645,10 +645,7 @@ namespace System.Runtime.InteropServices{ #endif [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, Inherited = false)] [System.Runtime.InteropServices.ComVisible(true)] -#if !MONOTOUCH - public -#endif - sealed class ComImportAttribute : Attribute + public sealed class ComImportAttribute : Attribute { internal static Attribute GetCustomAttribute(RuntimeType type) { diff --git a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/dispatchwrapper.cs b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/dispatchwrapper.cs index 50740031b61..9d0439d95cf 100644 --- a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/dispatchwrapper.cs +++ b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/dispatchwrapper.cs @@ -12,7 +12,7 @@ ** ** =============================================================================*/ -#if !FULL_AOT_RUNTIME + namespace System.Runtime.InteropServices { using System; @@ -31,11 +31,15 @@ namespace System.Runtime.InteropServices { { if (obj != null) { +#if FULL_AOT_RUNTIME + throw new PlatformNotSupportedException (); +#else // Make sure this guy has an IDispatch IntPtr pdisp = Marshal.GetIDispatchForObject(obj); // If we got here without throwing an exception, the QI for IDispatch succeeded. Marshal.Release(pdisp); +#endif } m_WrappedObject = obj; } @@ -51,4 +55,3 @@ namespace System.Runtime.InteropServices { private Object m_WrappedObject; } } -#endif \ No newline at end of file diff --git a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/errorwrapper.cs b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/errorwrapper.cs index 0cf3823868c..694412fd471 100644 --- a/mcs/class/referencesource/mscorlib/system/runtime/interopservices/errorwrapper.cs +++ b/mcs/class/referencesource/mscorlib/system/runtime/interopservices/errorwrapper.cs @@ -12,7 +12,7 @@ ** ** =============================================================================*/ -#if !FULL_AOT_RUNTIME + namespace System.Runtime.InteropServices { using System; @@ -54,4 +54,3 @@ namespace System.Runtime.InteropServices { private int m_ErrorCode; } } -#endif \ No newline at end of file -- 2.25.1