aboutsummaryrefslogtreecommitdiff
path: root/src/types/str.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/types/str.c')
-rw-r--r--src/types/str.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/types/str.c b/src/types/str.c
new file mode 100644
index 0000000..279567f
--- /dev/null
+++ b/src/types/str.c
@@ -0,0 +1,47 @@
+#include "str.h"
+#include "lua.h"
+
+str* str_init(char* init){
+ if(init == NULL){
+ char cc = '\0';
+ init = &cc;
+ }
+
+ size_t len = strlen(init);
+ str* s = malloc(sizeof * s);
+ s->c = malloc(len + 1);
+ s->len = len ;
+
+ memcpy(s->c, init, len + 1);
+ return s;
+}
+
+void str_free(str* s){
+ free(s->c);
+ return free(s);
+}
+
+void str_push(str* s, char* insert){
+ s->len += strlen(insert);
+ s->c = realloc(s->c, s->len + 5);
+ strcat(s->c, insert);
+}
+
+void str_pushl(str* s, char* insert, size_t l){
+
+ s->c = realloc(s->c, s->len + l + 5);
+ //strcat(s->c, insert);
+ for(int i = 0; i != l; i++){
+ s->c[i + s->len] = insert[i];
+ }
+ s->len += l;
+ s->c[s->len] = '\0';
+}
+
+void str_clear(str* s){
+ memset(s->c, 0, s->len);
+
+ s->len = 0;
+}
+
+