public static Val PopRelease(this FixedStack <Val> stack) { var val = stack.Pop(); val.RefMod(RefOp.DEC | RefOp.USR_DEC); return(val); }
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 static void Assign(this FixedStack <Val> s, VM vm, int idx, Val val) { var curr = s[idx]; if (curr != null) { for (int i = 0; i < curr._refs; ++i) { val.RefMod(RefOp.USR_INC); curr.RefMod(RefOp.USR_DEC); } curr.ValueCopyFrom(val); } else { curr = Val.New(vm); curr.ValueCopyFrom(val); curr.RefMod(RefOp.USR_INC); s[idx] = curr; } }
public void Cleanup(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames) { first_time = true; }
public static void PushRetain(this FixedStack <Val> stack, Val val) { val.RefMod(RefOp.INC | RefOp.USR_INC); stack.Push(val); }