REFACTOR: Error debugging for most functions

This commit is contained in:
2026-09-17 08:10:52 -04:00
parent db5f00804e
commit f1d5962442
3 changed files with 45 additions and 32 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ max_size(const Vec8_t* ptr);
void delete (const Vec8_t* vec); void delete (const Vec8_t* vec);
Vec8_t Vec8_t
clear(Vec8_t* vec); clear(const Vec8_t* vec);
char char
at(const Vec8_t* vec, int idx); at(const Vec8_t* vec, int idx);
+21 -18
View File
@@ -48,6 +48,7 @@ push_back(Vec8_t* vec, const char val)
if (!vec->arr) if (!vec->arr)
{ {
LOGERROR(ERR_BUF_NULL); LOGERROR(ERR_BUF_NULL);
LOG("If you think this is wrong, reserve memory first");
return dst; return dst;
} }
if (vec->size + 1 > vec->max_size) if (vec->size + 1 > vec->max_size)
@@ -149,13 +150,12 @@ shrink_to_fit(Vec8_t* ptr)
int int
swap(Vec8_t* ptr, Vec8_t* ptr_other) swap(Vec8_t* ptr, Vec8_t* ptr_other)
{ {
Vec8_t empty = create(nullptr, 0); Vec8_t empty = create(nullptr, -1);
if (ptr == nullptr || ptr_other == nullptr) return 0; if (ptr == nullptr || ptr_other == nullptr || ptr->arr == nullptr ||
if (ptr->arr == nullptr || ptr_other->arr == nullptr) return 0; ptr_other->arr == nullptr)
return 0;
empty.arr = ptr->arr; empty.arr = ptr->arr;
ptr->arr = nullptr;
ptr->arr = ptr_other->arr; ptr->arr = ptr_other->arr;
ptr_other->arr = nullptr;
ptr_other->arr = empty.arr; ptr_other->arr = empty.arr;
if (ptr != nullptr && ptr_other != nullptr) if (ptr != nullptr && ptr_other != nullptr)
{ {
@@ -202,18 +202,23 @@ delete(const Vec8_t* vec)
} }
Vec8_t 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++) for (int i = 0; i < vec->size; i++)
{ {
if (!vec->arr) continue; dst.arr[i] = 0;
vec->arr[i] = 0;
} }
vec->size = 0; dst.size = 0;
} }
return *vec; return dst;
} }
char char
@@ -221,11 +226,13 @@ at(const Vec8_t* vec, const int idx)
{ {
if (vec == nullptr) if (vec == nullptr)
{ {
return -2; LOGERROR(ERR_VECTOR_NULL);
return ERR_VECTOR_NULL;
} }
if (vec->arr == nullptr) if (vec->arr == nullptr)
{ {
return -3; LOGERROR(ERR_BUF_NULL);
return ERR_BUF_NULL;
} }
if (vec->size <= idx) if (vec->size <= idx)
{ {
@@ -235,11 +242,7 @@ at(const Vec8_t* vec, const int idx)
exit(-4); exit(-4);
// return -4; // return -4;
} }
if (vec != nullptr && vec->arr != nullptr && vec->size > idx) return vec->arr[idx];
{
return vec->arr[idx];
}
return -1;
} }
__attribute__((overloadable)) Vec8_t* __attribute__((overloadable)) Vec8_t*
+23 -13
View File
@@ -22,21 +22,31 @@
int int
main() main()
{ {
char arr[] = { 'a' }; char arr[] = { '1', '2', '3', '4' };
// Vec8_t v1 = create(arr, find_len(arr)); Vec8_t v1 = create(arr, find_len(arr));
// Vec8_t v1 = create((char[]) { 'a', 'b', 'c', 'd' }, 4); Vec8_t v2 = create((char[]) { 'a', 'b', 'c', 'd' }, 4);
Vec8_t v1 = create(nullptr, 0);
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 = reserve(&v1, 10);
// v1 = pop_back(&v1); // v1 = pop_back(&v1);
for (int i = 0; i < 10; i++) // for (int i = 0; i < 10; i++)
{ // {
v1 = push_back(&v1, 'a'); // v1 = push_back(&v1, 'a');
} // }
print_vec(&v1); // print_vec(&v1);
printf("SIZE: %zu\n", v1.size); // printf("SIZE: %zu\n", v1.size);
v1 = push_back(&v1, 'a'); // v1 = push_back(&v1, 'a');
print_vec(&v1); // print_vec(&v1);
printf("SIZE: %zu\n", v1.size); // printf("SIZE: %zu\n", v1.size);
delete(&v1); delete(&v1);
delete(&v2);
return 0; return 0;
} }