From 58a26ca05aacb4736e9e7e652badd43a8085d1f1 Mon Sep 17 00:00:00 2001 From: physick Date: Sun, 12 Jul 2026 11:13:08 +0500 Subject: rudimentary code execution --- src/utils/stringBuilder.c | 30 ++++++++++++++++++++++++++++++ src/utils/stringBuilder.h | 14 ++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/utils/stringBuilder.c create mode 100644 src/utils/stringBuilder.h (limited to 'src/utils') diff --git a/src/utils/stringBuilder.c b/src/utils/stringBuilder.c new file mode 100644 index 0000000..805fb34 --- /dev/null +++ b/src/utils/stringBuilder.c @@ -0,0 +1,30 @@ +#include "stringBuilder.h" +#include +#include + +void AppendStringBuilder(StringBuilder *sb, const char *str, char separator) { + size_t str_len = strlen(str); + if (sb->val == NULL) { + sb->val = malloc(str_len + 1); + if (sb->val == NULL) return; + memcpy(sb->val, str, str_len); + sb->len = str_len; + } else { + char *appended = realloc(sb->val, sb->len + str_len + 2); + if (appended == NULL) return; + sb->val = appended; + + sb->val[sb->len] = separator; + memcpy(sb->val + sb->len + 1, str, str_len); + sb->len = sb->len + str_len + 1; + } + sb->val[sb->len] = 0x0; +} + +void FreeStringBuilder(StringBuilder *sb) { + if (sb->val != NULL) { + free(sb->val); + sb->val = NULL; + } + sb->len = 0; +} diff --git a/src/utils/stringBuilder.h b/src/utils/stringBuilder.h new file mode 100644 index 0000000..a9730a2 --- /dev/null +++ b/src/utils/stringBuilder.h @@ -0,0 +1,14 @@ +#ifndef SB_H +#define SB_H + +#include + +typedef struct { + char *val; + size_t len; +} StringBuilder; + +void AppendStringBuilder(StringBuilder *sb, const char *str, char separator); +void FreeStringBuilder(StringBuilder *sb); + +#endif // SB_H -- cgit v1.3