From c0fc101f87d4b4b55dbe7958d68e2a416e191217 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 27 Sep 2021 05:26:49 +0000 Subject: [PATCH] LineSpan --- Crow/src/Text/LineSpan.cs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Crow/src/Text/LineSpan.cs 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}"; + } +} -- 2.47.3