// (C) 2001 Ximian, Inc. http://www.ximian.com
//
+#if !FULL_AOT_RUNTIME
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.InteropServices;
namespace System.Reflection.Emit {
-#if NET_2_0
[ComVisible (true)]
[ComDefaultInterface (typeof (_SignatureHelper))]
-#endif
[ClassInterface (ClassInterfaceType.None)]
+ [StructLayout (LayoutKind.Sequential)]
public sealed class SignatureHelper : _SignatureHelper {
internal enum SignatureHelperType {
HELPER_FIELD,
private Type returnType;
private CallingConventions callConv;
private CallingConvention unmanagedCallConv;
+#pragma warning disable 649
private Type[][] modreqs;
private Type[][] modopts;
+#pragma warning restore 649
internal SignatureHelper (ModuleBuilder module, SignatureHelperType type)
{
return new SignatureHelper ((ModuleBuilder) mod, SignatureHelperType.HELPER_LOCAL);
}
-#if NET_2_0
public static SignatureHelper GetLocalVarSigHelper ()
{
return new SignatureHelper (null, SignatureHelperType.HELPER_LOCAL);
}
- public static SignatureHelper GetMethodSigHelper(CallingConventions callingConvention, Type returnType)
+ public static SignatureHelper GetMethodSigHelper (CallingConventions callingConvention, Type returnType)
{
return GetMethodSigHelper (null, callingConvention, (CallingConvention)0, returnType, null);
}
- public static SignatureHelper GetMethodSigHelper (CallingConvention unmanagedCallingConvention,
- Type returnType)
+ public static SignatureHelper GetMethodSigHelper (CallingConvention unmanagedCallingConvention, Type returnType)
{
return GetMethodSigHelper (null, CallingConventions.Standard, unmanagedCallingConvention, returnType, null);
}
-#endif
- public static SignatureHelper GetMethodSigHelper( Module mod, CallingConventions callingConvention, Type returnType)
+ public static SignatureHelper GetMethodSigHelper (Module mod, CallingConventions callingConvention, Type returnType)
{
return GetMethodSigHelper (mod, callingConvention, (CallingConvention)0, returnType, null);
}
- public static SignatureHelper GetMethodSigHelper( Module mod, CallingConvention unmanagedCallingConvention, Type returnType)
+ public static SignatureHelper GetMethodSigHelper (Module mod, CallingConvention unmanagedCallConv, Type returnType)
+ {
+ return GetMethodSigHelper (mod, CallingConventions.Standard, unmanagedCallConv, returnType, null);
+ }
+
+ public static SignatureHelper GetMethodSigHelper (Module mod, Type returnType, Type[] parameterTypes)
{
- return GetMethodSigHelper (mod, CallingConventions.Standard, unmanagedCallingConvention, returnType, null);
+ return GetMethodSigHelper (mod, CallingConventions.Standard, (CallingConvention)0, returnType, parameterTypes);
}
- public static SignatureHelper GetMethodSigHelper( Module mod, Type returnType, Type[] parameterTypes)
+ [MonoTODO("Not implemented")]
+ public static SignatureHelper GetPropertySigHelper (Module mod, Type returnType, Type[] parameterTypes)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO("Not implemented")]
+ public static SignatureHelper GetPropertySigHelper (Module mod, Type returnType,
+ Type [] requiredReturnTypeCustomModifiers,
+ Type [] optionalReturnTypeCustomModifiers,
+ Type [] parameterTypes,
+ Type [] [] requiredParameterTypeCustomModifiers,
+ Type [] [] optionalParameterTypeCustomModifiers)
{
- return GetMethodSigHelper (mod, CallingConventions.Standard,
- (CallingConvention)0, returnType,
- parameterTypes);
+ throw new NotImplementedException ();
}
+
[MonoTODO("Not implemented")]
- public static SignatureHelper GetPropertySigHelper( Module mod, Type returnType, Type[] parameterTypes)
+ public static SignatureHelper GetPropertySigHelper (Module mod,
+ CallingConventions callingConvention,
+ Type returnType,
+ Type [] requiredReturnTypeCustomModifiers,
+ Type [] optionalReturnTypeCustomModifiers,
+ Type [] parameterTypes,
+ Type [] [] requiredParameterTypeCustomModifiers,
+ Type [] [] optionalParameterTypeCustomModifiers)
{
throw new NotImplementedException ();
}
}
}
-#if NET_2_0
//
// Appends the given type array @t into the @array passed at
// position @pos. If there is no array, it gets created
array = new_a;
}
- static void ValidateParameterModifiers(string name, Type [] parameter_modifiers)
+ static void ValidateParameterModifiers (string name, Type [] parameter_modifiers)
{
foreach (Type modifier in parameter_modifiers){
if (modifier == null)
AppendArrayAt (ref modopts, optionalCustomModifiers, p);
}
- [MonoTODO("Not implemented")]
- public static SignatureHelper GetPropertySigHelper (Module mod, Type returnType,
- Type [] requiredReturnTypeCustomModifiers,
- Type [] optionalReturnTypeCustomModifiers,
- Type [] parameterTypes,
- Type [] [] requiredParameterTypeCustomModifiers,
- Type [] [] optionalParameterTypeCustomModifiers)
- {
- throw new NotImplementedException ();
- }
-#endif
-
public void AddArgument (Type clsArgument)
{
if (clsArgument == null)
- throw new ArgumentNullException ("argument");
+ throw new ArgumentNullException ("clsArgument");
AppendArray (ref arguments, clsArgument);
}
return "SignatureHelper";
}
- internal static SignatureHelper GetMethodSigHelper( Module mod, CallingConventions callConv, CallingConvention unmanagedCallConv, Type returnType,
+ internal static SignatureHelper GetMethodSigHelper (Module mod, CallingConventions callingConvention, CallingConvention unmanagedCallingConvention, Type returnType,
Type [] parameters)
{
if (mod != null && !(mod is ModuleBuilder))
if (returnType == null)
returnType = typeof (void);
+ if (returnType.IsUserType)
+ throw new NotSupportedException ("User defined subclasses of System.Type are not yet supported.");
+ if (parameters != null) {
+ for (int i = 0; i < parameters.Length; ++i)
+ if (parameters [i].IsUserType)
+ throw new NotSupportedException ("User defined subclasses of System.Type are not yet supported.");
+
+ }
+
SignatureHelper helper =
new SignatureHelper ((ModuleBuilder)mod, SignatureHelperType.HELPER_METHOD);
helper.returnType = returnType;
- helper.callConv = callConv;
- helper.unmanagedCallConv = unmanagedCallConv;
+ helper.callConv = callingConvention;
+ helper.unmanagedCallConv = unmanagedCallingConvention;
if (parameters != null) {
helper.arguments = new Type [parameters.Length];
return helper;
}
- void _SignatureHelper.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
+ void _SignatureHelper.GetIDsOfNames ([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
{
throw new NotImplementedException ();
}
}
}
}
-
+#endif