aboutsummaryrefslogtreecommitdiff
path: root/text.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2014-09-13 23:00:19 +0200
committerMarc André Tanner <mat@brain-dump.org>2014-09-13 23:00:19 +0200
commit19c1ea602bde2e131bdc89f78786a2efced41d42 (patch)
tree2ccc6d7a4d518d2c73fc296e90b349c791e483c5 /text.c
parent9da490af05b2aac772f0bdbb934dd313c1271749 (diff)
downloadvis-19c1ea602bde2e131bdc89f78786a2efced41d42.tar.gz
vis-19c1ea602bde2e131bdc89f78786a2efced41d42.tar.xz
Introduce some helper functions dealing with Filerange
Diffstat (limited to 'text.c')
-rw-r--r--text.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/text.c b/text.c
index 7cdfd03..3b73a62 100644
--- a/text.c
+++ b/text.c
@@ -1111,3 +1111,22 @@ int text_search_range_backward(Text *txt, size_t pos, size_t len, Regex *r, size
free(buf);
return ret;
}
+
+bool text_range_valid(Filerange *r) {
+ return r->start != EPOS && r->end != EPOS && r->start <= r->end;
+}
+
+Filerange text_range_empty(void) {
+ return (Filerange){ .start = EPOS, .end = EPOS };
+}
+
+Filerange text_range_union(Filerange *r1, Filerange *r2) {
+ if (!text_range_valid(r1))
+ return *r2;
+ if (!text_range_valid(r2))
+ return *r1;
+ return (Filerange) {
+ .start = MIN(r1->start, r2->start),
+ .end = MAX(r1->end, r2->end),
+ };
+}