summaryrefslogtreecommitdiffhomepage
path: root/src/3p/chibicc/strings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/3p/chibicc/strings.c')
-rw-r--r--src/3p/chibicc/strings.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/3p/chibicc/strings.c b/src/3p/chibicc/strings.c
new file mode 100644
index 0000000..0538fef
--- /dev/null
+++ b/src/3p/chibicc/strings.c
@@ -0,0 +1,17 @@
+#include "chibicc.h"
+
+void strarray_push(StringArray *arr, char *s) {
+ if (!arr->data) {
+ arr->data = calloc(8, sizeof(char *));
+ arr->capacity = 8;
+ }
+
+ if (arr->capacity == arr->len) {
+ arr->data = realloc(arr->data, sizeof(char *) * arr->capacity * 2);
+ arr->capacity *= 2;
+ for (int i = arr->len; i < arr->capacity; i++)
+ arr->data[i] = NULL;
+ }
+
+ arr->data[arr->len++] = s;
+}