namespace RemoteFrameBuffer.Common { public struct RfbProtoVersion(Int16 major, Int16 minor) { public Int16 Major = major; public Int16 Minor = minor; public override Boolean Equals(Object? obj) => obj is RfbProtoVersion version && this.Major == version.Major && this.Minor == version.Minor; public override Int32 GetHashCode() => HashCode.Combine(this.Major, this.Minor); public static Boolean operator ==(RfbProtoVersion a, RfbProtoVersion b) { return (a.Major == b.Major) && (a.Minor == b.Minor); } public static Boolean operator !=(RfbProtoVersion a, RfbProtoVersion b) { return !(a == b); } public static Boolean operator <(RfbProtoVersion a, RfbProtoVersion b) { if (a.Major == b.Major) { return a.Minor < b.Minor; } else { return a.Major < b.Major; } } public static Boolean operator >(RfbProtoVersion a, RfbProtoVersion b) { return b < a; } public static Boolean operator <=(RfbProtoVersion a, RfbProtoVersion b) { return !(b < a); } public static Boolean operator >=(RfbProtoVersion a, RfbProtoVersion b) { return !(a < b); } } }