From fccf4cabb48d1bcda26db17e3f6df1eafd140a95 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 3 May 2020 22:21:53 -0500 Subject: [PATCH] Working on string library --- bh.h | 26 +++++++++++++++++++++++++- onyx | Bin 20776 -> 21512 bytes onyx.c | 9 ++++++--- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/bh.h b/bh.h index 24afa216..c0b2a23f 100644 --- a/bh.h +++ b/bh.h @@ -3,7 +3,8 @@ #include #include -#include // TODO: Replace with neede functions +#include +#include // TODO: Replace with needed functions //------------------------------------------------------------------------------------- // Better types @@ -60,6 +61,29 @@ int bh_string_delete(bh_string* str) { return 1; } +int bh_string_ensure_capacity(bh_string* str, u64 cap) { + if (str->capacity >= cap) return 1; + + //TODO: This could fail + str->data = (u8*) realloc((void*) str->data, sizeof(u8) * cap); + str->capacity = cap; + + return 1; +} + +void bh_string_append(bh_string* str1, bh_string* str2) { + if (!bh_string_ensure_capacity(str1, str1->length + str2->length)) return; + + //TODO: Replace with custom memory management + memcpy(str1->data + str1->length, str2->data, str2->length); + str1->length += str2->length; +} + +// TEMP +void bh_string_print(bh_string* str) { + write(STDOUT_FILENO, str->data, str->length); +} + //------------------------------------------------------------------------------------- diff --git a/onyx b/onyx index 8853feca6175d062c3fed89324cf3fc5f652b1dc..d4295645e1a50997b5f9704ea3fd40f6121210f5 100755 GIT binary patch delta 5156 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 S8x8z@fbI$nE}-1(z2|=?_Hfkz delta 3947 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 HZM^w^)k_5| diff --git a/onyx.c b/onyx.c index ea8e8b04..4bb216c6 100644 --- a/onyx.c +++ b/onyx.c @@ -22,9 +22,12 @@ // int main(int argc, char *argv[]) { - bh_string test_str = bh_string_new("Hello World!"); + bh_string test_str1 = bh_string_new("Hello "); + bh_string test_str2 = bh_string_new("World!"); - + bh_string_append(&test_str1, &test_str2); + bh_string_print(&test_str1); - bh_string_delete(&test_str); + bh_string_delete(&test_str1); + bh_string_delete(&test_str2); } \ No newline at end of file -- 2.25.1