summaryrefslogtreecommitdiff
path: root/slice.c
diff options
context:
space:
mode:
Diffstat (limited to 'slice.c')
-rw-r--r--slice.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/slice.c b/slice.c
index f2b64fc..d86a75e 100644
--- a/slice.c
+++ b/slice.c
@@ -37,8 +37,22 @@ slice_sub(Slice src, int begin, int end)
int
slice_equal(Slice s0, Slice s1)
{
- if (s0.end - s0.begin != s1.end - s1.begin)
+ if (slice_len(s0) != slice_len(s1))
return 0;
return 0 ==
- strncmp(s0.str + s0.begin, s1.str + s1.begin, s0.end - s0.begin);
+ strncmp(s0.str + s0.begin, s1.str + s1.begin, slice_len(s0));
+}
+
+int
+slice_len(Slice slice)
+{
+ return slice.end - slice.begin;
+}
+
+void *
+slice_cpy(void *dest, Slice slice)
+{
+ memcpy(dest, slice.str + slice.begin, slice_len(slice));
+ ((char*)dest)[slice_len(slice)] = '\0';
+ return dest;
}