From 7d75e8ff7531935c2316b22807cdb97ff033aeaa Mon Sep 17 00:00:00 2001 From: otya128 Date: Sat, 17 Dec 2016 14:46:38 +0900 Subject: [PATCH] Fix array --- SMILEBASIC/type.d | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/SMILEBASIC/type.d b/SMILEBASIC/type.d index b5bb9bb..1715dce 100644 --- a/SMILEBASIC/type.d +++ b/SMILEBASIC/type.d @@ -388,7 +388,7 @@ class Array(T) { if(dimCount != 4) throw new SyntaxError(); if(i1 >= dim[3] || i2 >= dim[2] || i3 >= dim[1] || i4 >= dim[0]) throw new SubscriptOutOfRange(); - return array[i1];//array[i1 * dim[0] * dim[1] * dim[2] + i2 * dim[1] + i3]; + return array[i1 * dim[0] * dim[1] * dim[2] + i2 * dim[0] * dim[1] + i3 * dim[0] + i4]; } T opIndexAssign(T v, int i1) { @@ -412,7 +412,7 @@ class Array(T) { if(dimCount != 4) throw new SyntaxError(); if(i1 >= dim[3] || i2 >= dim[2] || i3 >= dim[1] || i4 >= dim[0]) throw new SubscriptOutOfRange(); - return array[i1] = v;//array[i1 * dim[0] * dim[1] * dim[2] + i2 * dim[1] + i3] = v; + return array[i1 * dim[0] * dim[1] * dim[2] + i2 * dim[0] * dim[1] + i3 * dim[0] + i4] = v; } void push(T v) { @@ -474,6 +474,12 @@ class Array(T) { case 1: return index[0]; + case 2: + return index[0] * dim[0] + index[1]; + case 3: + return index[0] * dim[0] * dim[1] + index[1] * dim[0] + index[2]; + case 4: + return index[0] * dim[0] * dim[1] * dim[2] + index[1] * dim[0] * dim[1] + index[2] * dim[0] + index[3]; default: throw new RangeError(); }