Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Baulig <martin@novell.com>2002-03-23 21:04:04 +0300
committerMartin Baulig <martin@novell.com>2002-03-23 21:04:04 +0300
commitc0ba15fb73123a1d7bf5ffe01945aff7855ea593 (patch)
treea7c75bdd0315bb91d868c78ea82859c0d547a65c /mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs
parentcb72b6c9ccf7b667a6dc06c6d63656396b711b2a (diff)
2002-03-23 Martin Baulig <martin@gnome.org>
* SignatureHelper.cs (GetFieldSignatureHelper, GetLocalSignatureHelper): Implemented. * LocalBuilder.cs (LocalBuilder): This internal constructor now takes a ModuleBuilder argument instead of a ISymbolWriter one. (SetLocalSymInfo): Create and pass type signature to DefineLocalVariable. svn path=/trunk/mcs/; revision=3291
Diffstat (limited to 'mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs')
-rwxr-xr-xmcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs100
1 files changed, 82 insertions, 18 deletions
diff --git a/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs b/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs
index 9838728d541..34974bbd387 100755
--- a/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/SignatureHelper.cs
@@ -17,34 +17,98 @@ using System.Runtime.InteropServices;
namespace System.Reflection.Emit {
public sealed class SignatureHelper {
- public static SignatureHelper GetFieldSigHelper (Module mod) {
- return null;
+ internal enum SignatureHelperType {
+ HELPER_FIELD,
+ HELPER_LOCAL,
+ HELPER_METHOD,
+ HELPER_PROPERTY
}
- public static SignatureHelper GetLocalVarSigHelper( Module mod) {
- return null;
+
+ 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 GetMethodSigHelper( Module mod, CallingConventions callingConvention, Type returnType) {
- return null;
+ public static SignatureHelper GetLocalVarSigHelper (Module mod)
+ {
+ if (!(mod is ModuleBuilder))
+ throw new NotImplementedException ();
+
+ return new SignatureHelper ((ModuleBuilder) mod, SignatureHelperType.HELPER_LOCAL);
}
- public static SignatureHelper GetMethodSigHelper( Module mod, Type returnType, Type[] parameterTypes) {
- return null;
+ [MonoTODO]
+ public static SignatureHelper GetMethodSigHelper( Module mod, CallingConventions callingConvention, Type returnType)
+ {
+ throw new NotImplementedException ();
}
- public static SignatureHelper GetPropertySigHelper( Module mod, Type returnType, Type[] parameterTypes) {
- return null;
+ [MonoTODO]
+ public static SignatureHelper GetMethodSigHelper( Module mod, Type returnType, Type[] parameterTypes)
+ {
+ throw new NotImplementedException ();
}
- public void AddArgument( Type clsArgument) {
+ [MonoTODO]
+ public static SignatureHelper GetPropertySigHelper( Module mod, Type returnType, Type[] parameterTypes)
+ {
+ throw new NotImplementedException ();
}
- public void AddSentinel() {
+ 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;
+ }
}
- public override bool Equals( object obj) {
- return false;
+ [MonoTODO]
+ public void AddSentinel ()
+ {
+ throw new NotImplementedException ();
}
- public override int GetHashCode() {
- return 0;
+ [MonoTODO]
+ public override bool Equals (object obj)
+ {
+ throw new NotImplementedException ();
}
- public byte[] GetSignature() {
- return null;
+ [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";
}