From 79ab1a4223d53bbdbffc55ae7f9740d953c57945 Mon Sep 17 00:00:00 2001 From: glenda Date: Sat, 22 Oct 2022 19:03:56 +0000 Subject: Prepare for a namespace implementation at some point --- array.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index 3643ee6..71c35f6 100644 --- a/array.c +++ b/array.c @@ -12,7 +12,8 @@ int datasizes[] = { [AtypeFloat] = sizeof(double), [AtypeRune] = sizeof(Rune), [AtypeMixed] = sizeof(Mixed), - [AtypeArray] = sizeof(Array *) + [AtypeArray] = sizeof(Array *), + [AtypeNamespace] = sizeof(Namespace *), }; Array * @@ -49,6 +50,14 @@ mkrunearray(Rune *str) return a; } +Array * +mkscalarns(Namespace *ns) +{ + Array *a = allocarray(AtypeNamespace, 0, 1); + a->nsdata[0] = ns; + return a; +} + Array * duparray(Array *a) { @@ -198,6 +207,9 @@ arrayitem(Array *a, int index) res = a->arraydata[index]; incref(res); break; + case AtypeNamespace: + res = mkscalarns(a->nsdata[index]); + break; default: throwerror(L"Unhandled case in arrayitem 2", ENotImplemented); } @@ -321,6 +333,9 @@ comparearray(Array *a, Array *b, int checkshapes) case AtypeArray: sub = comparearray(a->arraydata[i], b->arraydata[i], checkshapes); break; + case AtypeNamespace: + sub = a->nsdata[i] > b->nsdata[i] ? 1 : a->nsdata[i] == b->nsdata[i] ? 0 : -1; + break; default: print("Missing comparison code for type %d\n", GetType(a)); exits(nil); -- cgit v1.2.3