From f1d5962442539218c0ec9b15c7b3c81e1f8dd71d Mon Sep 17 00:00:00 2001 From: Andrew Haynes Date: Thu, 17 Sep 2026 08:10:52 -0400 Subject: [PATCH] REFACTOR: Error debugging for most functions --- include/char.h | 2 +- src/char.c | 39 +++++++++++++++++++++------------------ src/main.c | 36 +++++++++++++++++++++++------------- 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/include/char.h b/include/char.h index b9dc65f..4cf74bb 100644 --- a/include/char.h +++ b/include/char.h @@ -53,7 +53,7 @@ max_size(const Vec8_t* ptr); void delete (const Vec8_t* vec); Vec8_t -clear(Vec8_t* vec); +clear(const Vec8_t* vec); char at(const Vec8_t* vec, int idx); diff --git a/src/char.c b/src/char.c index 4080c1e..6a1255f 100644 --- a/src/char.c +++ b/src/char.c @@ -48,6 +48,7 @@ push_back(Vec8_t* vec, const char val) if (!vec->arr) { LOGERROR(ERR_BUF_NULL); + LOG("If you think this is wrong, reserve memory first"); return dst; } if (vec->size + 1 > vec->max_size) @@ -149,13 +150,12 @@ shrink_to_fit(Vec8_t* ptr) int swap(Vec8_t* ptr, Vec8_t* ptr_other) { - Vec8_t empty = create(nullptr, 0); - if (ptr == nullptr || ptr_other == nullptr) return 0; - if (ptr->arr == nullptr || ptr_other->arr == nullptr) return 0; + Vec8_t empty = create(nullptr, -1); + if (ptr == nullptr || ptr_other == nullptr || ptr->arr == nullptr || + ptr_other->arr == nullptr) + return 0; empty.arr = ptr->arr; - ptr->arr = nullptr; ptr->arr = ptr_other->arr; - ptr_other->arr = nullptr; ptr_other->arr = empty.arr; if (ptr != nullptr && ptr_other != nullptr) { @@ -202,18 +202,23 @@ delete(const Vec8_t* vec) } Vec8_t -clear(Vec8_t* vec) +clear(const Vec8_t* vec) { - if (vec != nullptr && vec->size > 0) + Vec8_t dst = create(nullptr, -1); + if (!vec && !vec->arr) + { + return dst; + } + dst.arr = vec->arr; + if (vec->size > 0) { for (int i = 0; i < vec->size; i++) { - if (!vec->arr) continue; - vec->arr[i] = 0; + dst.arr[i] = 0; } - vec->size = 0; + dst.size = 0; } - return *vec; + return dst; } char @@ -221,11 +226,13 @@ at(const Vec8_t* vec, const int idx) { if (vec == nullptr) { - return -2; + LOGERROR(ERR_VECTOR_NULL); + return ERR_VECTOR_NULL; } if (vec->arr == nullptr) { - return -3; + LOGERROR(ERR_BUF_NULL); + return ERR_BUF_NULL; } if (vec->size <= idx) { @@ -235,11 +242,7 @@ at(const Vec8_t* vec, const int idx) exit(-4); // return -4; } - if (vec != nullptr && vec->arr != nullptr && vec->size > idx) - { - return vec->arr[idx]; - } - return -1; + return vec->arr[idx]; } __attribute__((overloadable)) Vec8_t* diff --git a/src/main.c b/src/main.c index 25a3f1c..6514ae4 100644 --- a/src/main.c +++ b/src/main.c @@ -22,21 +22,31 @@ int main() { - char arr[] = { 'a' }; - // Vec8_t v1 = create(arr, find_len(arr)); - // Vec8_t v1 = create((char[]) { 'a', 'b', 'c', 'd' }, 4); - Vec8_t v1 = create(nullptr, 0); + char arr[] = { '1', '2', '3', '4' }; + Vec8_t v1 = create(arr, find_len(arr)); + Vec8_t v2 = create((char[]) { 'a', 'b', 'c', 'd' }, 4); + + print_vec(&v1); + print_vec(&v2); + + if (swap(&v1, &v2)) + { + print_vec(&v1); + print_vec(&v2); + } + // Vec8_t v1 = create(nullptr, 0); // v1 = reserve(&v1, 10); // v1 = pop_back(&v1); - for (int i = 0; i < 10; i++) - { - v1 = push_back(&v1, 'a'); - } - print_vec(&v1); - printf("SIZE: %zu\n", v1.size); - v1 = push_back(&v1, 'a'); - print_vec(&v1); - printf("SIZE: %zu\n", v1.size); + // for (int i = 0; i < 10; i++) + // { + // v1 = push_back(&v1, 'a'); + // } + // print_vec(&v1); + // printf("SIZE: %zu\n", v1.size); + // v1 = push_back(&v1, 'a'); + // print_vec(&v1); + // printf("SIZE: %zu\n", v1.size); delete(&v1); + delete(&v2); return 0; }