Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        //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);
        }
Ejemplo n.º 7
0
        //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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        //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);
        }
Ejemplo n.º 10
0
 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;
         }
     }
 }
Ejemplo n.º 11
0
 public abstract void CreateArr(VM.Frame frame, ref Val v, IType type);
Ejemplo n.º 12
0
        void Getref(VM.Frame frm, Val ctx, out Val v, FieldSymbol fld)
        {
            var m = (IList <Val>)ctx.obj;

            v = m[scope_idx];
        }
Ejemplo n.º 13
0
 public abstract void GetCount(VM.Frame frame, Val ctx, ref Val v, FieldSymbol fld);
Ejemplo n.º 14
0
        void Getter(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld)
        {
            var m = (IList <Val>)ctx.obj;

            v.ValueCopyFrom(m[scope_idx]);
        }
Ejemplo n.º 15
0
 public abstract ICoroutine Clear(VM.Frame frame, FuncArgsInfo args_info, ref BHS status);
Ejemplo n.º 16
0
 public abstract ICoroutine RemoveAt(VM.Frame frame, FuncArgsInfo args_info, ref BHS status);
Ejemplo n.º 17
0
 public override void GetCount(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld)
 {
     v.SetNum(((IList <T>)ctx.obj).Count);
 }
Ejemplo n.º 18
0
 public override void CreateArr(VM.Frame frm, ref Val v, IType type)
 {
     v.SetObj(Creator(), type);
 }
Ejemplo n.º 19
0
 public override void CreateArr(VM.Frame frm, ref Val v, IType type)
 {
     v.SetObj(ValList.New(frm.vm), type);
 }
Ejemplo n.º 20
0
        public override void GetCount(VM.Frame frm, Val ctx, ref Val v, FieldSymbol fld)
        {
            var lst = AsList(ctx);

            v.SetNum(lst.Count);
        }
Ejemplo n.º 21
0
 public void Cleanup(VM.Frame frm, ref int ip, FixedStack <VM.FrameContext> frames)
 {
     first_time = true;
 }