public LuaType Type(int idx) { if (!stack.isValid(idx)) { return(Consts.LUA_TNONE); } var val = stack.get(idx); return(LuaValue.typeOf(val)); }
LuaType getTable(object t, object k) { if (LuaValue.isLuaTable(t)) { var tbl = LuaValue.toLuaTable(t); var v = tbl.get(k); stack.push(v); return(LuaValue.typeOf(v)); } throw new Exception("not a table!"); }
LuaType getTable(object t, object k) { if (LuaValue.isLuaTable(t)) { var tbl = LuaValue.toLuaTable(t); var v = tbl.get(k); if (v.GetType().IsEquivalentTo(typeof(LuaValue))) { v = ((LuaValue)v); } stack.push(v); return(LuaValue.typeOf(v)); } throw new Exception("not a table!"); }
LuaType getTable(object t, object k, bool raw) { if (t is LuaTable luaTable) { var v = luaTable.get(k); if (raw || v != null || !luaTable.hasMetafield("__index")) { stack.push(v); return(LuaValue.typeOf(v)); } } if (!raw) { var mf = getMetafield(t, "__index", this); if (mf != null) { switch (mf) { case LuaTable mfTable: getTable(mfTable, k, false); break; case Closure closure: stack.push(closure); stack.push(t); stack.push(k); Call(2, 1); var v = stack.get(-1); return(LuaValue.typeOf(v)); } } } throw new Exception("not a table!"); }