aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--text.c6
-rw-r--r--text.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/text.c b/text.c
index ab8a846..df8eb21 100644
--- a/text.c
+++ b/text.c
@@ -1496,3 +1496,9 @@ Filerange text_range_new(size_t a, size_t b) {
.end = MAX(a, b),
};
}
+
+bool text_range_overlap(Filerange *r1, Filerange *r2) {
+ if (!text_range_valid(r1) || !text_range_valid(r2))
+ return false;
+ return r1->start <= r2->end && r2->start <= r1->end;
+}
diff --git a/text.h b/text.h
index e5f1670..65ac053 100644
--- a/text.h
+++ b/text.h
@@ -26,6 +26,8 @@ Filerange text_range_empty(void);
Filerange text_range_union(Filerange*, Filerange*);
/* create new range [min(a,b), max(a,b)] */
Filerange text_range_new(size_t a, size_t b);
+/* test whether two ranges overlap */
+bool text_range_overlap(Filerange*, Filerange*);
typedef struct Text Text;
typedef struct Piece Piece;