//----------------------------------------------------------------// void MOAILuaRef::MakeWeak () { if ( this->mWeak ) return; if ( this->mRef == LUA_NOREF ) return; this->mWeak = true; if ( MOAILuaRuntime::IsValid ()) { MOAILuaRuntime& luaRuntime = MOAILuaRuntime::Get (); MOAILuaStateHandle state = luaRuntime.State (); luaRuntime.mStrongRefTable.PushRef ( state, this->mRef ); luaRuntime.mStrongRefTable.Unref ( state, this->mRef ); this->mRef = luaRuntime.mWeakRefTable.Ref ( state, -1 ); state.Pop ( 1 ); } }
//----------------------------------------------------------------// void MOAISerializer::WriteTableInits ( USStream& stream ) { if ( !this->mTableMap.size ()) return; stream.Print ( "\t--Initializing Tables\n" ); stream.Print ( "\tlocal table\n\n" ); MOAILuaStateHandle state = MOAILuaRuntime::Get ().State (); TableMapIt tableIt = this->mTableMap.begin (); for ( ; tableIt != this->mTableMap.end (); ++tableIt ) { uintptr tableID = tableIt->first; stream.Print ( "\ttable = objects [ 0x%08X ]\n", tableID ); MOAILuaRef& tableRef = tableIt->second; state.Push ( tableRef ); this->WriteTableInitializer ( stream, state, -1, "table" ); state.Pop ( 1 ); stream.Print ( "\n" ); } }