@@ -1,6 +1,8 @@ | |||
namespace Discord | |||
using System; | |||
namespace Discord | |||
{ | |||
public sealed class ChannelType : StringEnum | |||
public sealed class ChannelType : StringEnum, IEquatable<ChannelType> | |||
{ | |||
/// <summary> A text-only channel. </summary> | |||
public static ChannelType Text { get; } = new ChannelType("text"); | |||
@@ -25,10 +27,11 @@ | |||
} | |||
} | |||
public static implicit operator ChannelType(string value) => FromString(value); | |||
public static bool operator ==(ChannelType a, ChannelType b) => a?.Value == b?.Value; | |||
public static bool operator !=(ChannelType a, ChannelType b) => a?.Value != b?.Value; | |||
public override bool Equals(object obj) => (obj as ChannelType)?.Value == Value; | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
} | |||
public static implicit operator ChannelType(string value) => FromString(value); | |||
public static bool operator ==(ChannelType a, ChannelType b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(ChannelType a, ChannelType b) => !(a == b); | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as ChannelType)?.Equals(this) ?? false; | |||
public bool Equals(ChannelType type) => type != null && type.Value == Value; | |||
} | |||
} |
@@ -25,10 +25,11 @@ | |||
} | |||
} | |||
public static implicit operator PermissionTarget(string value) => FromString(value); | |||
public static bool operator ==(PermissionTarget a, PermissionTarget b) => a?.Value == b?.Value; | |||
public static bool operator !=(PermissionTarget a, PermissionTarget b) => a?.Value != b?.Value; | |||
public override bool Equals(object obj) => (obj as PermissionTarget)?.Value == Value; | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
} | |||
public static implicit operator PermissionTarget(string value) => FromString(value); | |||
public static bool operator ==(PermissionTarget a, PermissionTarget b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(PermissionTarget a, PermissionTarget b) => !(a == b); | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as PermissionTarget)?.Equals(this) ?? false; | |||
public bool Equals(PermissionTarget type) => type != null && type.Value == Value; | |||
} | |||
} |
@@ -29,10 +29,12 @@ | |||
} | |||
} | |||
public static implicit operator UserStatus(string value) => FromString(value); | |||
public static bool operator ==(UserStatus a, UserStatus b) => a?.Value == b?.Value; | |||
public static bool operator !=(UserStatus a, UserStatus b) => a?.Value != b?.Value; | |||
public override bool Equals(object obj) => (obj as UserStatus)?.Value == Value; | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
} | |||
public static implicit operator UserStatus(string value) => FromString(value); | |||
public static bool operator ==(UserStatus a, UserStatus b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(UserStatus a, UserStatus b) => !(a == b); | |||
public override int GetHashCode() => Value.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as UserStatus)?.Equals(this) ?? false; | |||
public bool Equals(UserStatus type) => type != null && type.Value == Value; | |||
} | |||
} |
@@ -2,7 +2,7 @@ | |||
namespace Discord | |||
{ | |||
public sealed class Color | |||
public sealed class Color : IEquatable<Color> | |||
{ | |||
public static readonly Color Default = PresetColor(0); | |||
@@ -77,8 +77,12 @@ namespace Discord | |||
_rawValue = (_rawValue & mask) | ((uint)value << bit); | |||
} | |||
public override bool Equals(object obj) => obj is Color && (obj as Color)._rawValue == _rawValue; | |||
public override int GetHashCode() => unchecked(_rawValue.GetHashCode() + 1678); | |||
public override string ToString() => '#' + _rawValue.ToString("X"); | |||
} | |||
public static bool operator ==(Color a, Color b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(Color a, Color b) => !(a == b); | |||
public override int GetHashCode() => _rawValue.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as Color)?.Equals(this) ?? false; | |||
public bool Equals(Color color) => color != null && color._rawValue == _rawValue; | |||
public override string ToString() => '#' + _rawValue.ToString("X"); | |||
} | |||
} |
@@ -77,7 +77,7 @@ namespace Discord | |||
public bool ManageChannel { get { return GetBit(PermissionsBits.ManageChannel); } set { SetBit(PermissionsBits.ManageChannel, value); } } | |||
} | |||
public abstract class Permissions | |||
public abstract class Permissions : IEquatable<Permissions> | |||
{ | |||
private bool _isLocked; | |||
private uint _rawValue; | |||
@@ -144,8 +144,11 @@ namespace Discord | |||
throw new InvalidOperationException("Unable to edit cached permissions directly, use Copy() to make an editable copy."); | |||
} | |||
public override bool Equals(object obj) => obj is Permissions && (obj as Permissions)._rawValue == _rawValue; | |||
public override int GetHashCode() => unchecked(_rawValue.GetHashCode() + 393); | |||
public static bool operator ==(Permissions a, Permissions b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(Permissions a, Permissions b) => !(a == b); | |||
public override int GetHashCode() => _rawValue.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as Permissions)?.Equals(this) ?? false; | |||
public bool Equals(Permissions permission) => permission?._rawValue == _rawValue; | |||
} | |||
public sealed class DualChannelPermissions | |||
@@ -231,9 +234,10 @@ namespace Discord | |||
} | |||
public DualChannelPermissions Copy() => new DualChannelPermissions(Allow.RawValue, Deny.RawValue); | |||
public override bool Equals(object obj) => obj is DualChannelPermissions && | |||
(obj as DualChannelPermissions).Allow.Equals(Allow) && | |||
(obj as DualChannelPermissions).Deny.Equals(Deny); | |||
public override int GetHashCode() => unchecked(Allow.GetHashCode() + Deny.GetHashCode() + 1724); | |||
} | |||
public static bool operator ==(DualChannelPermissions a, DualChannelPermissions b) => ((object)a == null && (object)b == null) || (a?.Equals(b) ?? false); | |||
public static bool operator !=(DualChannelPermissions a, DualChannelPermissions b) => !(a == b); | |||
public override int GetHashCode() => Allow.GetHashCode() ^ Deny.GetHashCode(); | |||
public override bool Equals(object obj) => (obj as DualChannelPermissions)?.Equals(this) ?? false; | |||
public bool Equals(DualChannelPermissions permission) => permission != null && permission.Allow == Allow && permission.Deny == Deny; | |||
} | |||
} |