summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-07-12 11:13:08 +0500
committerphysick <mynameisgennadiy@vk.com>2026-07-12 11:13:08 +0500
commit58a26ca05aacb4736e9e7e652badd43a8085d1f1 (patch)
tree5009c076fdcf83c970a580624f02dc89cb3d2beb /src/utils
parenta35731f94b0f0072783d7aba8dd24670b75716cc (diff)
rudimentary code execution
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/stringBuilder.c30
-rw-r--r--src/utils/stringBuilder.h14
2 files changed, 44 insertions, 0 deletions
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 <stdlib.h>
+#include <string.h>
+
+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 <stddef.h>
+
+typedef struct {
+ char *val;
+ size_t len;
+} StringBuilder;
+
+void AppendStringBuilder(StringBuilder *sb, const char *str, char separator);
+void FreeStringBuilder(StringBuilder *sb);
+
+#endif // SB_H