summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'array.c')
-rw-r--r--array.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/array.c b/array.c
index c941b05..c7df5b5 100644
--- a/array.c
+++ b/array.c
@@ -7,20 +7,23 @@
void array_set(array_t* array, size_t idx, void* val) {
CRASH_IF_OOB(array, idx);
- array->data[idx] = val;
+ char* data_ptr = (char*)array->__data + idx*array->elemsz;
+ for (size_t i = 0; i < array->elemsz; i++) {
+ data_ptr[i] = *((char*)val + i);
+ }
}
void* array_get(const array_t* array, size_t idx) {
CRASH_IF_OOB(array, idx);
- return array->data[idx];
+ return (char*)array->__data + idx*array->elemsz;
}
void str_set(str_t* str, size_t idx, char val) {
CRASH_IF_OOB(str, idx);
- str->data[idx] = val;
+ str->__data[idx] = val;
}
char str_get(const str_t* str, size_t idx) {
CRASH_IF_OOB(str, idx);
- return str->data[idx];
+ return str->__data[idx];
}