]> O.S.I.I.S - jp/crow.git/commitdiff
LineSpan
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 27 Sep 2021 05:26:49 +0000 (05:26 +0000)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 27 Sep 2021 05:26:49 +0000 (05:26 +0000)
Crow/src/Text/LineSpan.cs [new file with mode: 0644]

diff --git a/Crow/src/Text/LineSpan.cs b/Crow/src/Text/LineSpan.cs
new file mode 100644 (file)
index 0000000..1dc90de
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+using System;
+
+namespace Crow.Text
+{
+       public struct LineSpan : IEquatable<LineSpan>
+       {
+               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}";
+       }
+}