aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ds/array.c32
-rw-r--r--src/mem/alloc.c20
-rw-r--r--src/tester.c2
3 files changed, 25 insertions, 29 deletions
diff --git a/src/ds/array.c b/src/ds/array.c
index e17e1fe..a817d80 100644
--- a/src/ds/array.c
+++ b/src/ds/array.c
@@ -1,4 +1,4 @@
-#define MOSLIB_FORCE_PREFIXES
+#define MOS_FORCE_PREFIXES
#include "moslib/ds/array.h"
#include <stdio.h>
@@ -15,16 +15,12 @@ void *hdr2arr(MosArrHeader *hdr) {
return hdr + 1;
}
-void *init_cap(size_t cap, size_t el_size) {
+void *init(size_t cap, size_t el_size) {
MosArrHeader *hdr = mos_safe_malloc(sizeof(MosArrHeader) + cap * el_size);
*hdr = (MosArrHeader){.len = 0, .cap = cap};
return hdr2arr(hdr);
}
-void *init(size_t el_size) {
- return init_cap(MOS_ARR_INIT_CAP, el_size);
-}
-
void *expand(void *arr, size_t min_cap, size_t el_size) {
MosArrHeader *hdr = arr2hdr(arr);
if (hdr->cap >= min_cap)
@@ -43,25 +39,25 @@ void *expand(void *arr, size_t min_cap, size_t el_size) {
// clang-format off
// init array if it's not, define arr, hdr vars and expand to fit min_cap
#define ini(min_cap) \
- !*(void**)p_arr ? *(void **)p_arr = init(el_size) : 0; \
+ !*(void**)p_arr ? *(void **)p_arr = init(init_cap, el_size) : 0; \
MosArrHeader *hdr = arr2hdr(*(void**)p_arr); \
*(void **)p_arr = expand(*(void**)p_arr, min_cap, el_size); \
void *arr = *(void **)p_arr; \
hdr = arr2hdr(arr)
// clang-format on
-void mos_arr_append_fn(void *p_arr, size_t el_size) {
+void mos_arr_append_fn(void *p_arr, size_t el_size, size_t init_cap) {
ini(hdr->len + 1);
hdr->len++;
(void)arr;
}
-void mos_arr_insert_fn(void *p_arr, size_t i, size_t el_size) {
+void mos_arr_insert_fn(void *p_arr, size_t i, size_t el_size, size_t init_cap) {
ini(hdr->len + 1);
memmove((char *)arr + (i + 1) * el_size, (char *)arr + i * el_size, (hdr->len++ - i) * el_size);
}
-void mos_arr_put_fn(void *p_arr, size_t i, size_t el_size) {
+void mos_arr_put_fn(void *p_arr, size_t i, size_t el_size, size_t init_cap) {
ini(i + 1);
if (i > hdr->len) {
memset((char *)arr + hdr->len * el_size, 0, (i - hdr->len) * el_size);
@@ -69,7 +65,7 @@ void mos_arr_put_fn(void *p_arr, size_t i, size_t el_size) {
}
}
-size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size) {
+size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size, size_t init_cap) {
ini(hdr->len + n);
size_t i = hdr->len;
@@ -78,10 +74,10 @@ size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size) {
return i;
}
-size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size) {
+size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap) {
ini(hdr->len + n);
if (i >= hdr->len)
- return mos_arr_append_n_fn(p_arr, items, n, el_size);
+ return mos_arr_append_n_fn(p_arr, items, n, el_size, init_cap);
memmove((char *)arr + (i + n) * el_size, (char *)arr + i * el_size, (hdr->len - i) * el_size);
memmove((char *)arr + i * el_size, items, n * el_size);
@@ -89,7 +85,7 @@ size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t
return i;
}
-size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size) {
+size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap) {
ini(i + n + 1);
if (i > hdr->len) {
memset((char *)arr + hdr->len * el_size, 0, (i - hdr->len) * el_size);
@@ -101,12 +97,12 @@ size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_
return i;
}
-size_t mos_arr_concat_fn(void *p_arr, void *arr2, size_t el_size) {
+size_t mos_arr_concat_fn(void *p_arr, void *arr2, size_t el_size, size_t init_cap) {
size_t arr2_len = mos_arr_len(arr2);
if (arr2_len == 0)
return -1;
- return mos_arr_append_n_fn(p_arr, arr2, arr2_len, el_size);
+ return mos_arr_append_n_fn(p_arr, arr2, arr2_len, el_size, init_cap);
}
size_t mos_arr_del_fn(void *arr, size_t i, size_t el_size) {
@@ -147,7 +143,7 @@ size_t mos_arr_len(void *arr) {
return arr2hdr(arr)->len;
}
-size_t mos_arr_set_len_fn(void *p_arr, size_t len, size_t el_size) {
+size_t mos_arr_set_len_fn(void *p_arr, size_t len, size_t el_size, size_t init_cap) {
ini(len);
size_t del = hdr->len > len ? hdr->len - len : 0;
@@ -167,7 +163,7 @@ size_t mos_arr_cap(void *arr) {
size_t mos_arr_set_cap_fn(void *p_arr, size_t cap, size_t el_size) {
void *arr = *(void **)p_arr;
if (!arr) {
- *(void **)p_arr = init_cap(cap, el_size);
+ *(void **)p_arr = init(cap, el_size);
return cap;
}
diff --git a/src/mem/alloc.c b/src/mem/alloc.c
index 7a85d2d..60da131 100644
--- a/src/mem/alloc.c
+++ b/src/mem/alloc.c
@@ -1,4 +1,4 @@
-#define MOSLIB_FORCE_PREFIXES
+#define MOS_FORCE_PREFIXES
#include "moslib/mem/alloc.h"
#include <stdio.h>
@@ -7,39 +7,39 @@
#define ERR_MESS(fl, ln, fn, msg) "%s:%d - error in function %s:\n%s\n", fl, ln, fn, msg
-void *mos_safe_malloc_fn(size_t size, const char *file, int line, const char *func) {
- for (size_t i = 0; i < MOS_MAX_ALLOC_ATTEMPTS; i++) {
+void *mos_safe_malloc_fn(size_t size, size_t att, const char *file, int line, const char *func) {
+ for (size_t i = 0; i < att; i++) {
void *p = malloc(size);
if (p)
return p;
- if (i < MOS_MAX_ALLOC_ATTEMPTS - 1) {
+ if (i < att - 1) {
fprintf(stderr, ERR_MESS(file, line, func, "malloc failed - retrying in 1s..."));
sleep(1);
}
}
char errmes[64];
- sprintf(errmes, "FATAL: malloc failed %d times - exiting...", MOS_MAX_ALLOC_ATTEMPTS);
+ sprintf(errmes, "FATAL: malloc failed %zu times - exiting...", att);
fprintf(stderr, ERR_MESS(file, line, func, errmes));
exit(EXIT_FAILURE);
}
-void *mos_safe_realloc_fn(void *ptr, size_t size, const char *file, int line, const char *func) {
+void *mos_safe_realloc_fn(void *ptr, size_t size, size_t att, const char *file, int line, const char *func) {
if (!ptr)
- return mos_safe_malloc_fn(size, file, line, func);
+ return mos_safe_malloc_fn(size, att, file, line, func);
- for (size_t i = 0; i < MOS_MAX_ALLOC_ATTEMPTS; i++) {
+ for (size_t i = 0; i < att; i++) {
void *p = realloc(ptr, size);
if (p)
return p;
- if (i < MOS_MAX_ALLOC_ATTEMPTS - 1) {
+ if (i < att - 1) {
fprintf(stderr, ERR_MESS(file, line, func, "realloc failed - retrying in 1s..."));
sleep(1);
}
}
char errmes[64];
- sprintf(errmes, "FATAL: realloc failed %d times - exiting...", MOS_MAX_ALLOC_ATTEMPTS);
+ sprintf(errmes, "FATAL: realloc failed %zu times - exiting...", att);
fprintf(stderr, ERR_MESS(file, line, func, errmes));
exit(EXIT_FAILURE);
}
diff --git a/src/tester.c b/src/tester.c
index 280eed1..eca4c1a 100644
--- a/src/tester.c
+++ b/src/tester.c
@@ -1,4 +1,4 @@
-#define MOSLIB_FORCE_PREFIXES
+#define MOS_FORCE_PREFIXES
#include "moslib/tester.h"
#include <setjmp.h>