diff options
Diffstat (limited to 'mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs')
-rwxr-xr-x | mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs b/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs new file mode 100755 index 00000000000..40e3b566a22 --- /dev/null +++ b/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs @@ -0,0 +1,121 @@ + +// +// System.Reflection.Emit/SignatureHelper.cs +// +// Author: +// Paolo Molaro (lupus@ximian.com) +// +// (C) 2001 Ximian, Inc. http://www.ximian.com +// + +using System; +using System.Reflection; +using System.Reflection.Emit; +using System.Globalization; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace System.Reflection.Emit { + [Serializable] + public sealed class SignatureHelper { + internal enum SignatureHelperType { + HELPER_FIELD, + HELPER_LOCAL, + HELPER_METHOD, + HELPER_PROPERTY + } + + private ModuleBuilder module; + private Type[] arguments; + private SignatureHelperType type; + + internal SignatureHelper (ModuleBuilder module, SignatureHelperType type) + { + this.type = type; + this.module = module; + } + + public static SignatureHelper GetFieldSigHelper (Module mod) + { + if (!(mod is ModuleBuilder)) + throw new NotImplementedException (); + + return new SignatureHelper ((ModuleBuilder) mod, SignatureHelperType.HELPER_FIELD); + } + public static SignatureHelper GetLocalVarSigHelper (Module mod) + { + if (!(mod is ModuleBuilder)) + throw new NotImplementedException (); + + return new SignatureHelper ((ModuleBuilder) mod, SignatureHelperType.HELPER_LOCAL); + } + [MonoTODO] + public static SignatureHelper GetMethodSigHelper( Module mod, CallingConventions callingConvention, Type returnType) + { + throw new NotImplementedException (); + } + [MonoTODO] + public static SignatureHelper GetMethodSigHelper( Module mod, Type returnType, Type[] parameterTypes) + { + throw new NotImplementedException (); + } + [MonoTODO] + public static SignatureHelper GetPropertySigHelper( Module mod, Type returnType, Type[] parameterTypes) + { + throw new NotImplementedException (); + } + public void AddArgument (Type clsArgument) + { + if (arguments != null) { + Type[] new_a = new Type [arguments.Length + 1]; + System.Array.Copy (arguments, new_a, arguments.Length); + new_a [arguments.Length] = clsArgument; + arguments = new_a; + } else { + arguments = new Type [1]; + arguments [0] = clsArgument; + } + } + [MonoTODO] + public void AddSentinel () + { + throw new NotImplementedException (); + } + [MonoTODO] + public override bool Equals (object obj) + { + throw new NotImplementedException (); + } + [MonoTODO] + public override int GetHashCode () + { + throw new NotImplementedException (); + } + + [MethodImplAttribute(MethodImplOptions.InternalCall)] + internal extern byte[] get_signature_local (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)] + internal extern byte[] get_signature_field (); + + public byte[] GetSignature () + { + switch (type) { + case SignatureHelperType.HELPER_LOCAL: + return get_signature_local (); + case SignatureHelperType.HELPER_FIELD: + return get_signature_field (); + default: + throw new NotImplementedException (); + } + } + + public override string ToString() { + return "SignatureHelper"; + } + + + + } +} + |