[corlib] Import System.Threading.WaitHandle
[mono.git] / mcs / class / corlib / System.Threading / LockCookie.cs
index 9435fd780736b7dd2d4912e84d7c7fc48ffeb0ed..6fd05e807ac2b95bae1b055a49a628575e986826 100644 (file)
 // 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);
+               }
        }
 }