1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/sat/WhatObsoletes.cc
14 #include "zypp/base/LogTools.h"
15 #include "zypp/sat/WhatObsoletes.h"
16 #include "zypp/sat/detail/PoolImpl.h"
17 #include "zypp/PoolItem.h"
21 ///////////////////////////////////////////////////////////////////
23 { /////////////////////////////////////////////////////////////////
24 ///////////////////////////////////////////////////////////////////
26 { /////////////////////////////////////////////////////////////////
28 ///////////////////////////////////////////////////////////////////
30 { /////////////////////////////////////////////////////////////////
32 /** WhatObsoletes ctor helper collecting obsoleted installed items. */
33 shared_ptr<void> allocatedProviders( sat::Solvable item_r, const sat::detail::IdType *& first_r )
35 WhatProvides obsoleted( item_r.obsoletes() );
36 if ( obsoleted.empty() )
38 return shared_ptr<void>();
41 // use allocated private data to store the result (incl. trailing NULL)
42 std::vector<sat::detail::IdType> * pdata = 0;
45 for_( it, obsoleted.begin(), obsoleted.end() )
51 ret.reset( (pdata = new std::vector<sat::detail::IdType>) );
53 pdata->push_back( it->id() );
59 pdata->push_back( sat::detail::noId );
60 first_r = &pdata->front();
65 /////////////////////////////////////////////////////////////////
67 ///////////////////////////////////////////////////////////////////
69 WhatObsoletes::WhatObsoletes( Solvable item_r )
71 , _private( allocatedProviders( item_r, _begin ) )
74 WhatObsoletes::WhatObsoletes( const PoolItem & item_r )
76 , _private( allocatedProviders( item_r.satSolvable(), _begin ) )
79 WhatObsoletes::WhatObsoletes( const ResObject::constPtr item_r )
83 _private = allocatedProviders( item_r->satSolvable(), _begin );
86 WhatObsoletes::size_type WhatObsoletes::size() const
91 Capabilities::size_type ret = 0;
92 for ( const sat::detail::IdType * end = _begin; *end; ++end )
99 /******************************************************************
101 ** FUNCTION NAME : operator<<
102 ** FUNCTION TYPE : std::ostream &
104 std::ostream & operator<<( std::ostream & str, const WhatObsoletes & obj )
106 return dumpRange( str << "(" << obj.size() << ")", obj.begin(), obj.end() );
109 /////////////////////////////////////////////////////////////////
111 ///////////////////////////////////////////////////////////////////
112 /////////////////////////////////////////////////////////////////
114 ///////////////////////////////////////////////////////////////////