static int _GetBaseMetatable(IntPtr L) { LuaState luaState = LuaState.Get(L); int refId; LuaLib.lua_pushstring(L, "__refId"); // |mt|s LuaLib.lua_rawget(L, 1); // |mt|v // v = mt.s refId = (int)LuaLib.lua_tonumber(L, -1); LuaLib.lua_pop(L, 1); // |mt LuaBindMetatable self = luaState.Bindings.GetMetatableByRefId(refId); Type baseType = self._type.BaseType; if (baseType == null) { // No base type LuaLib.lua_pushstring(L, "__base"); // |mt|s LuaLib.lua_pushboolean(L, false); // |mt|s|b LuaLib.lua_rawset(L, -3); // |mt // mt.__base = false } else { LuaBindMetatable baseMetatable = luaState.Bindings.GetMetatable(baseType, self._metatableType); LuaLib.lua_pushstring(L, "__base"); // |mt|s baseMetatable.Push(); // |mt|s|basemt LuaLib.lua_rawset(L, -3); // |mt // mt.__base = basemt } return(0); }
public void PushObject(bool o) { LuaLib.lua_pushboolean(L, o); }