X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Threading%2FLockCookie.cs;h=6fd05e807ac2b95bae1b055a49a628575e986826;hb=f6fa8f03593266cd8d9c85771eb7db28eda85fa3;hp=9435fd780736b7dd2d4912e84d7c7fc48ffeb0ed;hpb=2007998771b1c4d9e762943676d7959daaf74385;p=mono.git diff --git a/mcs/class/corlib/System.Threading/LockCookie.cs b/mcs/class/corlib/System.Threading/LockCookie.cs index 9435fd78073..6fd05e807ac 100644 --- a/mcs/class/corlib/System.Threading/LockCookie.cs +++ b/mcs/class/corlib/System.Threading/LockCookie.cs @@ -30,10 +30,11 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // +using System.Runtime.InteropServices; namespace System.Threading { - [Serializable] + [ComVisible (true)] public struct LockCookie { internal int ThreadId; @@ -53,6 +54,41 @@ namespace System.Threading ReaderLocks = reader_locks; WriterLocks = writer_locks; } + + public override int GetHashCode () + { + return(base.GetHashCode ()); + } + + public bool Equals (LockCookie obj) + { + if (this.ThreadId == obj.ThreadId && + this.ReaderLocks == obj.ReaderLocks && + this.WriterLocks == obj.WriterLocks) { + return(true); + } else { + return(false); + } + } + + public override bool Equals (Object obj) + { + if (!(obj is LockCookie)) { + return(false); + } + + return(obj.Equals (this)); + } + + public static bool operator == (LockCookie a, LockCookie b) + { + return a.Equals (b); + } + + public static bool operator != (LockCookie a, LockCookie b) + { + return !a.Equals (b); + } } }