diff options
Diffstat (limited to 'strings')
-rw-r--r-- | strings/strings.cpp | 31 | ||||
-rw-r--r-- | strings/strings.h | 42 | ||||
-rw-r--r-- | strings/test.cpp | 65 |
3 files changed, 0 insertions, 138 deletions
diff --git a/strings/strings.cpp b/strings/strings.cpp deleted file mode 100644 index 4c8486f..0000000 --- a/strings/strings.cpp +++ /dev/null @@ -1,31 +0,0 @@ -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; -} diff --git a/strings/strings.h b/strings/strings.h deleted file mode 100644 index dbaff7a..0000000 --- a/strings/strings.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef AMR_STR -#define AMR_STR - -#include <assert.h> -#include <string.h> - -#define MemCopy memcpy - -// @todo: the function names have been changed a bit for the interest -// of speed. Some structs and functions share the same names, so -// I need to fix this but also make sure the functions have good names - -enum StrStatus {STR_OK=0, STR_FULL}; - -struct str8 { - u8 *buffer; - u64 size; -}; - -struct str8_node { - str8_node *next; - str8 string; -}; - -struct str8_list { - str8_node *first; - str8_node *last; - u64 count; - u64 capacity; -}; - -struct res_str8 { - str8 string; - u64 bytes_count; - enum StrStatus status; -}; - -struct str8 Str8(u8 *string, u64 size); -u64 CstrSize(const char* cstr); -struct res_str8 Str8InitCstr(struct arena *a, const char* cstr, u64 size); - -#endif diff --git a/strings/test.cpp b/strings/test.cpp deleted file mode 100644 index 49f81c9..0000000 --- a/strings/test.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include <stdio.h> -#include "strings.h" -#include "strings.cpp" - -void TestCstrSize() -{ - u64 size = CstrSize("hello sailor\n"); - assert(size == 13 && "test_cstr_size() failed" - "the cstr size was wrong\n"); -} - -void TestEmptyCstrSize() -{ - u64 size = CstrSize(""); - assert(size == 0 && "test_empty_cstr_size() failed" - "the cstr size was wrong\n"); -} - -void TestStr8InitCstr(u8* buffer, u64 buffer_size) -{ - struct arena a = {}; - arena_init(&a, buffer, buffer_size); - struct res_str8 qres = Str8InitCstr(&a, "hello sailor"); - assert((qres.bytes_count == 12) && "Error TestStr8InitCstr:\n" - "Reason: Invalid size of allocated string\n" - "Hint: check what is happening to the bytes_count and how it is set first\n"); -} - -void TestStr8InitCstrEmpty(u8* buffer, u64 buffer_size) -{ - struct arena a = {}; - arena_init(&a, buffer, buffer_size); - struct res_str8 qres = Str8InitCstr(&a, ""); - assert((qres.string.size == 0) && "Error TestStr8InitCstrEmpty:\n" - "Reason: Invalid size of allocated string\n" - "Hint: check what is happening to the bytes_count and how it is set first\n"); -} - -void TestStr8InitCstrNoSpace(u8* buffer, u8 buffer_size) -{ - struct arena a = {}; - arena_init(&a, buffer, buffer_size); - struct res_str8 qres = Str8InitCstr(&a, "hello sailor, looks like you've got no space here on this boat!"); - assert(qres.string.size == 0 && "Error TestStr8InitStrNoSpace:\n" - "Reason: the bytes count is not 0, even though the string is larger than the supposedly available\n" - "arena space. This is an error and should not occur.\n" - "Hint: Look at what is going on in the allocation since that arena helpers handle allocations\n."); -} - -void test_strings() -{ - printf("\n======= Testing Strings Library =======\n"); - printf("===== Testing Cstring Functions =====\n"); - TestCstrSize(); - TestEmptyCstrSize(); - - u64 buffer_size = KB(64); - u8* buffer = (u8*)malloc(sizeof(u8)*buffer_size); - - TestStr8InitCstr(buffer, buffer_size); - TestStr8InitCstrEmpty(buffer, buffer_size); - TestStr8InitCstrNoSpace(buffer, 8); - printf("Cstring tests passed successfully\n"); - free(buffer); -} |