diff options
Diffstat (limited to 'mcs/class/corlib/System/Delegate.cs')
-rw-r--r-- | mcs/class/corlib/System/Delegate.cs | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/mcs/class/corlib/System/Delegate.cs b/mcs/class/corlib/System/Delegate.cs deleted file mode 100644 index 5c332cd8cf4..00000000000 --- a/mcs/class/corlib/System/Delegate.cs +++ /dev/null @@ -1,195 +0,0 @@ -// -// System.Delegate.cs -// -// Author: -// Miguel de Icaza (miguel@ximian.com) -// Daniel Stodden (stodden@in.tum.de) -// -// (C) Ximian, Inc. http://www.ximian.com -// -// TODO: Mucho left to implement -// - -using System; -using System.Globalization; -using System.Reflection; -using System.Runtime.Serialization; - -namespace System { - - [MonoTODO] - public abstract class Delegate : ICloneable, ISerializable { - protected Type target_type; - protected object m_target; - protected string method_name; - protected IntPtr method_ptr; - protected IntPtr delegate_trampoline; - protected MethodInfo method_info; - - protected Delegate (object target, string method) - { - if (target == null) - throw new ArgumentNullException (Locale.GetText ("Target object is null")); - - if (method == null) - throw new ArgumentNullException (Locale.GetText ("method name is null")); - - this.target_type = null; - this.method_ptr = IntPtr.Zero; - this.m_target = target; - this.method_name = method; - } - - protected Delegate (Type target_type, string method) - { - if (m_target == null) - throw new ArgumentNullException (Locale.GetText ("Target type is null")); - - if (method == null) - throw new ArgumentNullException (Locale.GetText ("method string is null")); - - this.target_type = target_type; - this.method_ptr = IntPtr.Zero; - this.m_target = null; - this.method_name = method; - } - - public MethodInfo Method { - get { - return method_info; - } - } - - public object Target { - get { - return m_target; - } - } - - // - // Methods - // - - public object DynamicInvoke( object[] args ) - { - return DynamicInvokeImpl( args ); - } - - public virtual object DynamicInvokeImpl( object[] args ) - { - return Method.Invoke( m_target, args ); - } - - public virtual object Clone() - { - return MemberwiseClone(); - } - - public override bool Equals (object o) - { - if ( o == null ) - return false; - - if ( o.GetType() != this.GetType() ) - return false; - - Delegate d = (Delegate) o; - if ((d.target_type == target_type) && - (d.m_target == m_target) && - (d.method_name == method_name) && - (d.method_ptr == method_ptr)) - return true; - - return false; - } - - public override int GetHashCode () - { - return (int)method_ptr; - } - - // This is from ISerializable - [MonoTODO] - public void GetObjectData (SerializationInfo info, StreamingContext context) - { - // TODO: IMPLEMENT ME - } - - public virtual Delegate[] GetInvocationList() - { - return new Delegate[] { this }; - } - - /// <symmary> - /// Returns a new MulticastDelegate holding the - /// concatenated invocation lists of MulticastDelegates a and b - /// </symmary> - public static Delegate Combine (Delegate a, Delegate b) - { - if (a == null){ - if (b == null) - return null; - return b; - } else - if (b == null) - return a; - - if (a.GetType () != b.GetType ()) - throw new ArgumentException (Locale.GetText ("Incompatible Delegate Types")); - - return a.CombineImpl (b); - } - - /// <symmary> - /// Returns a new MulticastDelegate holding the - /// concatenated invocation lists of an Array of MulticastDelegates - /// </symmary> - public static Delegate Combine( Delegate[] delegates ) - { - Delegate retval = null; - - foreach ( Delegate next in delegates ) - retval = Combine( retval, next ); - - return retval; - } - - - protected virtual Delegate CombineImpl (Delegate d) - { - throw new MulticastNotSupportedException (""); - } - - - public static Delegate Remove( Delegate source, Delegate value ) - { - if ( source == null ) - return null; - - return source.RemoveImpl( value ); - } - - protected virtual Delegate RemoveImpl( Delegate d ) - { - if ( this.Equals( d ) ) - return null; - - return this; - } - - public static bool operator ==( Delegate a, Delegate b ) - { - if ((object)a == null) { - if ((object)b == null) - return true; - return false; - } - return a.Equals( b ); - } - - public static bool operator !=( Delegate a, Delegate b ) - { - return !(a == b); - } - } -} |