11 #ifndef ZYPP_BASE_SETTRACKER_H
12 #define ZYPP_BASE_SETTRACKER_H
66 bool changed = ( new_r !=
_current );
80 bool changed = ( new_r !=
_current );
102 bool done =
_current.insert( val_r ).second;
116 bool done =
_current.erase( val_r );
119 if ( !
_added.erase( val_r ) )
163 {
return set_r.find( key_r ) != set_r.end(); }
165 template <
class TORDERED_SET,
typename enable_if =
typename TORDERED_SET::key_compare>
166 static void setDifference(
const TORDERED_SET & lhs,
const TORDERED_SET & rhs, TORDERED_SET & result_r )
169 std::set_difference( lhs.begin(), lhs.end(), rhs.begin(), rhs.end(),
170 std::inserter( result_r, result_r.end() ),
171 typename TORDERED_SET::key_compare() );
174 template <
class TUNORDERED_SET,
typename enable_if =
typename TUNORDERED_SET::hasher,
typename =
void>
175 static void setDifference(
const TUNORDERED_SET & lhs,
const TUNORDERED_SET & rhs, TUNORDERED_SET & result_r )
178 for (
const auto & l : lhs )
179 {
if ( rhs.find( l ) == rhs.end() ) result_r.insert( l ); }
189 template <
class TSet>
190 std::ostream & operator<<( std::ostream & str, const SetTracker<TSet> & obj )
191 {
return str <<
"set(" << obj.current().size() <<
"|+" << obj.added().size() <<
"|-" << obj.removed().size() <<
')'; }
197 #endif // ZYPP_BASE_SETTRACKER_H