// // Created by Nils Polek on 23.01.24. // #ifndef RECORD #define RECORD #include "stackslot.c" #include "instruktion.c" ObjRef newRecord(int size){ ObjRef record; unsigned int objSize; objSize = sizeof(*record) + (size * sizeof(void *)); if((record = malloc(objSize))== NULL){ perror("malloc"); } record->size = MSB & size; for(int i = 0; i < size; i++) { GET_REFS_PTR(record)[i] = malloc(8); } return record; } ObjRef getField(ObjRef arr, int point){ return *(ObjRef *)GET_REFS_PTR(arr)[point]->data; } void setField(ObjRef arr, int point, ObjRef value){ * (ObjRef *)GET_REFS_PTR(arr)[point]->data = value; } #endif