12 #ifndef ZYPP_POOL_POOLIMPL_H
13 #define ZYPP_POOL_POOLIMPL_H
67 return userLock ? 1 : -1;
75 inline PoolQuery makeTrivialQuery( IdString ident_r )
77 sat::Solvable::SplitIdent ident( ident_r );
81 q.addKind( ident.kind() );
83 q.setCaseSensitive(
true);
89 unsigned s( activeLocks_r.size() );
90 activeLocks_r.remove( makeTrivialQuery( ident_r ) );
91 return( activeLocks_r.size() != s );
96 PoolQuery q( makeTrivialQuery( ident_r ) );
97 for_( it, activeLocks_r.begin(), activeLocks_r.end() )
102 activeLocks_r.push_back( q );
173 return( slv_r.
id() < mystore.size() ? mystore[slv_r.
id()] :
PoolItem() );
237 MIL <<
"HardLockQueries match " << locked.
size() <<
" Solvables." << endl;
246 MIL <<
"Apply " << newLocks_r.size() <<
" HardLockQueries" << endl;
254 MIL <<
"HardLockQueries match " << locked.
size() <<
" Solvables." << endl;
267 typedef std::unordered_set<IdString> IdentSet;
269 IdentSet removedLocks;
277 addedLocks.insert( it->satSolvable().ident() );
280 removedLocks.insert( it->satSolvable().ident() );
285 bool setChanged =
false;
286 for_( it, removedLocks.begin(), removedLocks.end() )
288 if ( addedLocks.find( *it ) != addedLocks.end() )
290 if ( hardLockQueriesRemove( activeLocks_r, *it ) && ! setChanged )
293 for_( it, addedLocks.begin(), addedLocks.end() )
295 if ( hardLockQueriesAdd( activeLocks_r, *it ) && ! setChanged )
308 bool addedItems =
false;
310 std::list<PoolItem> addedProducts;
325 else if ( reusedIDs || (s && ! pi) )
331 addedProducts.push_back( pi );
342 if ( ! addedProducts.empty() )
344 for_( it, addedProducts.begin(), addedProducts.end() )
346 it->setBuddy( asKind<Product>(*it)->referencePackage() );
372 _id2item.insert( std::make_pair(
id, *it ) );
424 #endif // ZYPP_POOL_POOLIMPL_H