public override ICoroutine Clear(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { var arr = frame.stack.Pop(); var lst = AsList(arr); lst.Clear(); arr.Release(); return(null); }
public override ICoroutine RemoveAt(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { int idx = (int)frame.stack.PopRelease().num; var arr = frame.stack.Pop(); var lst = AsList(arr); lst.RemoveAt(idx); arr.Release(); return(null); }
public override ICoroutine Clear(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { int idx = (int)frame.stack.PopRelease().num; var arr = frame.stack.Pop(); var lst = (IList <T>)arr.obj; lst.Clear(); arr.Release(); return(null); }
public override ICoroutine Add(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { var val = frm.stack.Pop(); var arr = frm.stack.Pop(); var lst = AsList(arr); lst.Add(val); val.Release(); arr.Release(); return(null); }
public override ICoroutine Add(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { var val = frm.stack.Pop(); var arr = frm.stack.Pop(); var lst = (IList <T>)arr.obj; lst.Add((T)val.obj); val.Release(); arr.Release(); return(null); }
//NOTE: follows special Opcodes.ArrIdx conventions public override ICoroutine ArrIdx(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { int idx = (int)frame.stack.PopRelease().num; var arr = frame.stack.Pop(); var lst = (IList <T>)arr.obj; var res = Val.NewObj(frame.vm, lst[idx], item_type.Get()); frame.stack.Push(res); arr.Release(); return(null); }
//NOTE: follows special Opcodes.ArrIdx conventions public override ICoroutine ArrIdx(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { int idx = (int)frame.stack.PopRelease().num; var arr = frame.stack.Pop(); var lst = AsList(arr); var res = lst[idx]; frame.stack.PushRetain(res); arr.Release(); return(null); }
void Setter(VM.Frame frm, ref Val ctx, Val v, FieldSymbol fld) { var m = (IList <Val>)ctx.obj; var curr = m[scope_idx]; for (int i = 0; i < curr._refs; ++i) { v.RefMod(RefOp.USR_INC); curr.RefMod(RefOp.USR_DEC); } curr.ValueCopyFrom(v); }
//NOTE: follows special Opcodes.ArrIdxW conventions public override ICoroutine ArrIdxW(VM.Frame frame, FuncArgsInfo args_info, ref BHS status) { int idx = (int)frame.stack.PopRelease().num; var arr = frame.stack.Pop(); var val = frame.stack.Pop(); var lst = AsList(arr); lst[idx] = val; val.Release(); arr.Release(); return(null); }
public void Tick(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames, ref BHS status) { if (first_time) { status = BHS.RUNNING; time_left = (float)frm.stack.PopRelease().num; first_time = false; } else { time_left -= Time.dt; if (time_left > 0) { status = BHS.RUNNING; } } }
public abstract void CreateArr(VM.Frame frame, ref Val v, IType type);
void Getref(VM.Frame frm, Val ctx, out Val v, FieldSymbol fld) { var m = (IList <Val>)ctx.obj; v = m[scope_idx]; }
public abstract void GetCount(VM.Frame frame, Val ctx, ref Val v, FieldSymbol fld);
void Getter(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld) { var m = (IList <Val>)ctx.obj; v.ValueCopyFrom(m[scope_idx]); }
public abstract ICoroutine Clear(VM.Frame frame, FuncArgsInfo args_info, ref BHS status);
public abstract ICoroutine RemoveAt(VM.Frame frame, FuncArgsInfo args_info, ref BHS status);
public override void GetCount(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld) { v.SetNum(((IList <T>)ctx.obj).Count); }
public override void CreateArr(VM.Frame frm, ref Val v, IType type) { v.SetObj(Creator(), type); }
public override void CreateArr(VM.Frame frm, ref Val v, IType type) { v.SetObj(ValList.New(frm.vm), type); }
public override void GetCount(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld) { var lst = AsList(ctx); v.SetNum(lst.Count); }
public void Cleanup(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames) { first_time = true; }