From a36a6bcd305806536230995599d69e1f30ccbab0 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Mon, 17 Jan 2022 21:45:28 +0000 Subject: Implement text data --- array.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'array.c') diff --git a/array.c b/array.c index 4208d9f..5fb2a32 100644 --- a/array.c +++ b/array.c @@ -9,6 +9,7 @@ Array *inttofloatarray(Array *); int datasizes[] = { [AtypeInt] = sizeof(vlong), [AtypeFloat] = sizeof(double), + [AtypeRune] = sizeof(Rune), [AtypeArray] = sizeof(Array *) }; @@ -28,6 +29,24 @@ mkscalarfloat(double f) return a; } +Array * +mkscalarrune(Rune r) +{ + Array *a = allocarray(AtypeRune, 0, 1); + a->runedata[0] = r; + return a; +} + +Array * +mkrunearray(Rune *str) +{ + Array *a = allocarray(AtypeRune, 1, runestrlen(str)); + a->shape[0] = a->size; + for(int i = 0; i < a->size; i++) + a->runedata[i] = str[i]; + return a; +} + Array * duparray(Array *a) { @@ -135,6 +154,9 @@ arrayitem(Array *a, int index) case AtypeFloat: res = mkscalarfloat(a->floatdata[index]); break; + case AtypeRune: + res = mkscalarrune(a->runedata[index]); + break; case AtypeArray: res = a->arraydata[index]; incref(res); -- cgit v1.2.3