#include "array.h" #include "crash.h" #define CRASH_IF_OOB(array, idx) {\ if (idx >= array->length)\ crash("Array access out of bounds: %ld >= %ld\n", idx, array->length);\ } void array_set(array_t* array, size_t idx, void* val) { CRASH_IF_OOB(array, idx); 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 (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; } char str_get(const str_t* str, size_t idx) { CRASH_IF_OOB(str, idx); return str->__data[idx]; }