lauromoura pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ba34325f430903c8b3c1695f611bc858ab7e71a7

commit ba34325f430903c8b3c1695f611bc858ab7e71a7
Author: Bruno da Silva Belo <brunodasilvab...@gmail.com>
Date:   Mon Oct 28 20:34:55 2019 -0300

    csharp: Add comparables operator to eina_error.
    
    Summary: ref T8394
    
    Reviewers: lauromoura, felipealmeida, segfaultxavi, YOhoho
    
    Reviewed By: YOhoho
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Maniphest Tasks: T8394
    
    Differential Revision: https://phab.enlightenment.org/D10456
---
 src/bindings/mono/eina_mono/eina_error.cs | 107 ++++++++++++++++++++++++++----
 1 file changed, 94 insertions(+), 13 deletions(-)

diff --git a/src/bindings/mono/eina_mono/eina_error.cs 
b/src/bindings/mono/eina_mono/eina_error.cs
index 5c4ac9345b..c936b88179 100644
--- a/src/bindings/mono/eina_mono/eina_error.cs
+++ b/src/bindings/mono/eina_mono/eina_error.cs
@@ -24,7 +24,7 @@ namespace Eina
 /// <summary>Error codes from native Eina methods.
 /// <para>Since EFL 1.23.</para>
 /// </summary>
-public struct Error : IComparable<Error>
+public struct Error : IComparable<Error>, IEquatable<Error>
 {
     int code;
 
@@ -94,17 +94,6 @@ public struct Error : IComparable<Error>
         return error.code;
     }
 
-    /// <summary>
-    ///   Compare two Errors.
-    /// <para>Since EFL 1.23.</para>
-    /// </summary>
-    /// <param name="err">Error to be compared with</param>
-    /// <returns>True with the Errors is equal, False otherwise.</returns>
-    public int CompareTo(Error err)
-    {
-        return code.CompareTo(err.code);
-    }
-
     /// <summary>
     ///   Transform the object to a string representing the object.
     /// <para>Since EFL 1.23.</para>
@@ -197,6 +186,98 @@ public struct Error : IComparable<Error>
     {
         return eina_error_msg_register(msg);
     }
-}
 
+    /// <summary>
+    ///   Gets a hash for <see cref="Eina.Error" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <returns>A hash code.</returns>
+    public override int GetHashCode()
+        => code.GetHashCode() + Message.GetHashCode();
+
+    /// <summary>
+    ///   Compare to a given error.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="err">Error to be compared with.</param>
+    /// <returns>-1, 0 or 1 if -1 if Error is less, equal or greater than 
err.</returns>
+    public int CompareTo(Error err) => code.CompareTo(err.code);
+
+    /// <summary>
+    ///   Check if is equal to obj.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="obj">The object to be checked.</param>
+    /// <returns>false if obj is null or not equals, true otherwise.</returns>
+    public override bool Equals(object obj)
+    {
+        if (object.ReferenceEquals(obj, null))
+            return false;
+            
+        return this.Equals((Error)obj);
+    }
+
+    /// <summary>
+    ///   Check if is equal to err.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="err">The object to be checked.</param>
+    /// <returns>false if obj is null or not equals, true otherwise.</returns>
+    public bool Equals(Error err) => this.CompareTo(err) == 0;
+
+    /// <summary>
+    ///   Check if lhs is equals to rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is equals to rhs, false otherwise.</returns>
+    public static bool operator==(Error lhs, Error rhs) => lhs.Equals(rhs);
+
+    /// <summary>
+    ///   Check if lhs is not equals to rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is not equals to rhs, false otherwise.</returns>
+    public static bool operator!=(Error lhs, Error rhs) => !(lhs == rhs);
+
+    /// <summary>
+    ///   Check if lhs is less than rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is less than rhs, false otherwise.</returns>
+    public static bool operator<(Error lhs, Error rhs) => (lhs.CompareTo(rhs) 
< 0);
+
+    /// <summary>
+    ///   Check if lhs is greater to rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is greater than rhs, false otherwise.</returns>
+    public static bool operator>(Error lhs, Error rhs) => rhs < lhs;
+
+    /// <summary>
+    ///   Check if lhs is equals and less than rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is equals and less than rhs, false 
otherwise.</returns>
+    public static bool operator<=(Error lhs, Error rhs) => !(lhs > rhs);
+
+    /// <summary>
+    ///   Check if lhs is equals and greater than rhs.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="lhs">The left hand side of the operator.</param>
+    /// <param name="rhs">The right hand side of the operator.</param>
+    /// <returns>true if lhs is equals and greater than rhs, false 
otherwise.</returns>
+    public static bool operator>=(Error lhs, Error rhs) => !(lhs < rhs);
+
+}
 }

-- 


Reply via email to