From: Jean-Philippe Bruyère Date: Mon, 27 Sep 2021 05:26:49 +0000 (+0000) Subject: LineSpan X-Git-Tag: v0.9.8-beta~16 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=c0fc101f87d4b4b55dbe7958d68e2a416e191217;p=jp%2Fcrow.git LineSpan --- diff --git a/Crow/src/Text/LineSpan.cs b/Crow/src/Text/LineSpan.cs new file mode 100644 index 00000000..1dc90de6 --- /dev/null +++ b/Crow/src/Text/LineSpan.cs @@ -0,0 +1,31 @@ +// 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}"; + } +}