summaryrefslogtreecommitdiff
path: root/strings/strings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'strings/strings.cpp')
-rw-r--r--strings/strings.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/strings/strings.cpp b/strings/strings.cpp
new file mode 100644
index 0000000..4c8486f
--- /dev/null
+++ b/strings/strings.cpp
@@ -0,0 +1,31 @@
+u64 CstrSize(const char* cstr)
+{
+ u8 *iter = (u8*)cstr;
+ u64 size = 0;
+ for(;*iter != 0; *iter++) {
+ size += 1;
+ }
+
+ return size;
+}
+
+struct str8 Str8(u8 *string, u64 size)
+{
+ struct str8 result = {string, size};
+ return result;
+}
+
+struct res_str8 Str8InitCstr(struct arena *a, const char* cstr)
+{
+ u64 cstr_size = CstrSize(cstr);
+ struct res_void cstr_res = arena_alloc(a, cstr_size);
+ u8 *str = (u8 *)cstr_res.memory;
+ u64 str_size = cstr_res.bytes_count;
+
+ MemCopy((void*)str, (void*)cstr, str_size*sizeof(u8));
+
+ struct res_str8 result = {};
+ result.string = Str8(str, str_size);
+ result.bytes_count = str_size;
+ return result;
+}