aboutsummaryrefslogtreecommitdiff
path: root/src/stdlib/c_strings.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-10-18 19:02:07 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-10-18 19:02:07 -0400
commit5bdf96234a388cbd3854747b0667620ebb60ccdf (patch)
treee4ab4055e0190f4a080b69fcd933cd8ca6146260 /src/stdlib/c_strings.c
parent82e3c05d547b2372ca4033c68469479260092b5a (diff)
Improved CLI parsing and add CString.join()
Diffstat (limited to 'src/stdlib/c_strings.c')
-rw-r--r--src/stdlib/c_strings.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/stdlib/c_strings.c b/src/stdlib/c_strings.c
index 54ea1e40..57960577 100644
--- a/src/stdlib/c_strings.c
+++ b/src/stdlib/c_strings.c
@@ -66,6 +66,17 @@ static void CString$deserialize(FILE *in, void *out, List_t *pointers, const Typ
}
public
+const char *CString$join(const char *glue, List_t strings) {
+ Text_t ret = EMPTY_TEXT;
+ Text_t glue_text = Text$from_str(glue);
+ for (int64_t i = 0; i < (int64_t)strings.length; i++) {
+ if (i > 0) ret = Texts(ret, glue_text);
+ ret = Texts(ret, Text$from_str(*(const char **)(strings.data + i * strings.stride)));
+ }
+ return Text$as_c_string(ret);
+}
+
+public
const TypeInfo_t CString$info = {
.size = sizeof(const char *),
.align = __alignof__(const char *),