LuaArguments ipairs(LuaArguments args) { LuaObject handler = LuaEvents.getMetamethod(args[0], "__ipairs"); if (!handler.IsNil) { return(handler.Call(args)); } else { if (args[0].IsTable) { LuaFunction f = delegate(LuaArguments x) { var s = x[0]; var var = x[1].AsNumber() + 1; var val = s[var]; if (val == LuaObject.Nil) { return(Return(LuaObject.Nil)); } else { return(Return(var, val)); } }; return(Return(f, args[0], 0)); } else { throw new LuaException("t must be a table"); } } }
LuaArguments pairs(LuaArguments args) { LuaObject handler = LuaEvents.getMetamethod(args[0], "__pairs"); if (!handler.IsNil) { return(handler.Call(args)); } else { return(Return((LuaFunction)next, args[0], LuaObject.Nil)); } }