예제 #1
0
        private void InitStack()
        {
            Stack     = new StkId[LuaDef.BASIC_STACK_SIZE];
            StackSize = LuaDef.BASIC_STACK_SIZE;
            StackLast = LuaDef.BASIC_STACK_SIZE - LuaDef.EXTRA_STACK;
            for (int i = 0; i < LuaDef.BASIC_STACK_SIZE; ++i)
            {
                StkId newItem = new StkId();
                Stack[i] = newItem;
                newItem.SetList(Stack);
                newItem.SetIndex(i);
                newItem.V.SetNilValue();
            }
            Top = Stack[0];

            BaseCI = new CallInfo[LuaDef.BASE_CI_SIZE];
            for (int i = 0; i < LuaDef.BASE_CI_SIZE; ++i)
            {
                CallInfo newCI = new CallInfo();
                BaseCI[i]   = newCI;
                newCI.List  = BaseCI;
                newCI.Index = i;
            }
            CI           = BaseCI[0];
            CI.FuncIndex = Top.Index;
            StkId.inc(ref Top).V.SetNilValue();             // `function' entry for this `ci'
            CI.TopIndex = Top.Index + LuaDef.LUA_MINSTACK;
        }
예제 #2
0
 public LuaCsClosureValue(CSharpFunctionDelegate f, int numUpvalues)
 {
     F      = f;
     Upvals = new StkId[numUpvalues];
     for (int i = 0; i < numUpvalues; ++i)
     {
         StkId newItem = new StkId();
         Upvals[i] = newItem;
         newItem.SetList(Upvals);
         newItem.SetIndex(i);
     }
 }
예제 #3
0
 public LuaCsClosureValue( CSharpFunctionDelegate f, int numUpvalues )
 {
     F = f;
     Upvals = new StkId[numUpvalues];
     for(int i=0; i<numUpvalues; ++i) {
         var newItem = new StkId();
         Upvals[i] = newItem;
         newItem.SetList(Upvals);
         newItem.SetIndex(i);
     }
 }