protected override Statement ArrayOps()
{
var subOp = ReadByte();
var array = ReadWord();
var exp = new MethodInvocation("ArrayOps");
switch (subOp)
{
case 0x14: // SO_ASSIGN_STRING
{
var index = Pop();
var text = ReadCharacters();
exp = new MethodInvocation(new MemberAccess(exp, "SetString")).AddArguments(array.ToLiteral(), index, text);
}
break;
case 0x15: // SO_ASSIGN_INT_LIST
{
var b = Pop();
var c = Pop();
var d = ReadVariable(array);
exp = new MethodInvocation(new MemberAccess(exp, "SetInt")).AddArguments(array.ToLiteral(), d, b, c);
}
break;
case 0x16: // SO_ASSIGN_2DIM_LIST
{
var b = Pop();
var len = GetStackList(128);
var d = ReadVariable(array);
var c = Pop();
exp = new MethodInvocation(new MemberAccess(exp, "SetInt2D")).AddArguments(array.ToLiteral(), d, b, c, len);
}
break;
default:
throw new NotSupportedException(string.Format("o6_arrayOps: default case {0} (array {1})", subOp, array));
}
return exp.ToStatement();
}