// Copyright (c) 2013-2021 Jean-Philippe Bruyère // // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) using System; namespace Crow.Text { public struct LineSpan : IEquatable { public readonly CharLocation Start; public readonly CharLocation End; public LineSpan (CharLocation start, CharLocation end) { Start = start; End = end; } public bool IsEmpty => Start == End; public bool Equals(LineSpan other) => Start == other.Start && End == other.End; public override bool Equals(object obj) => obj is LineSpan ts ? Equals(ts) : false; public override int GetHashCode() => HashCode.Combine(Start, End); public static bool operator ==(LineSpan left, LineSpan right) => left.Equals (right); public static bool operator !=(LineSpan left, LineSpan right) => !left.Equals (right); public override string ToString() => $"{Start},{End}"; } }