#include #include #include #include "apl9.h" int datasizes[] = { [AtypeInt] = sizeof(vlong), [AtypeArray] = sizeof(Array *) }; Array * mkscalarint(vlong i) { Array *a = allocarray(AtypeInt, 0, 1); a->intdata[0] = i; return a; } Array * duparray(Array *a) { Array *b = allocarray(a->type, a->rank, a->size); memcpy(b->shape, a->shape, sizeof(int) * a->rank); memcpy(b->rawdata, a->rawdata, datasizes[a->type]*a->size); if(b->type == AtypeArray) for(int i = 0; i < b->size; i++) incref(b->arraydata[i]); return b; } int simplearray(Array *a) { return a->type != AtypeArray; } int simplescalar(Array *a) { return simplearray(a) && a->rank == 0; }