aboutsummaryrefslogtreecommitdiff
path: root/String.c
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2026-04-29 18:26:15 +0300
committerSyndamia <kamen@syndamia.com>2026-05-12 07:08:56 +0300
commit8636d3558523fe30a2be84549c2b6eb5e125e97c (patch)
treec004b54e73d1584fb9f4c17caffbd1534855ab6c /String.c
parent5d3ee795417ad5e0cad8e05a829b143cfb9652e6 (diff)
downloadfoollib-8636d3558523fe30a2be84549c2b6eb5e125e97c.tar
foollib-8636d3558523fe30a2be84549c2b6eb5e125e97c.tar.gz
foollib-8636d3558523fe30a2be84549c2b6eb5e125e97c.zip
feat(String): Implement S_substr function
Diffstat (limited to 'String.c')
-rw-r--r--String.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/String.c b/String.c
index fb003d8..7723525 100644
--- a/String.c
+++ b/String.c
@@ -240,3 +240,20 @@ S_find(String s, char c) {
return index;
}
+
+String
+S_substr(MemoryManager *mm, String s, usize start, usize length) {
+ if (NULL == s)
+ return NULL;
+
+ struct StringMeta *sm = S_metadata(s);
+
+ if (start >= sm->length || 0 == length)
+ return S_newlen(mm, 0);
+
+ String result = S_newlen(mm, length);
+ strncpy(result, s + start, length);
+ result[length] = '\0';
+
+ return result;
+}