1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/sat/Queue.cc
13 #include "satsolver/queue.h"
16 #include "zypp/base/LogTools.h"
18 #include "zypp/sat/Queue.h"
19 #include "zypp/sat/Solvable.h"
23 ///////////////////////////////////////////////////////////////////
25 { /////////////////////////////////////////////////////////////////
26 ///////////////////////////////////////////////////////////////////
28 { /////////////////////////////////////////////////////////////////
31 : _pimpl( new struct ::_Queue )
33 ::queue_init( _pimpl );
38 ::queue_free( _pimpl );
42 bool Queue::empty() const
43 { return( _pimpl->count == 0 ); }
45 Queue::size_type Queue::size() const
46 { return _pimpl->count; }
48 Queue::const_iterator Queue::begin() const
49 { return _pimpl->elements; }
51 Queue::const_iterator Queue::end() const
52 { return _pimpl->elements + _pimpl->count;}
54 Queue::const_iterator Queue::find( value_type val_r ) const
56 for_( it, begin(), end() )
62 Queue::value_type Queue::first() const
66 return *_pimpl->elements;
69 Queue::value_type Queue::last() const
73 return _pimpl->elements[_pimpl->count-1];
77 { ::queue_empty( *this ); }
79 void Queue::remove( value_type val_r )
81 const_iterator it( find( val_r ) );
84 ::queue_delete( _pimpl, it - begin() );
88 void Queue::push( value_type val_r )
89 { ::queue_push( _pimpl, val_r ); }
91 Queue::value_type Queue::pop()
92 { return ::queue_pop( _pimpl ); }
94 void Queue::push_front( value_type val_r )
95 { ::queue_unshift( _pimpl, val_r ); }
97 Queue::value_type Queue::pop_front()
98 { return ::queue_shift( _pimpl ); }
100 std::ostream & operator<<( std::ostream & str, const Queue & obj )
101 { return dumpRangeLine( str << "Queue ", obj.begin(), obj.end() ); }
103 std::ostream & dumpOn( std::ostream & str, const Queue & obj )
109 for_( it, obj.begin(), obj.end() )
110 str << " " << Solvable(*it) << endl;
115 /////////////////////////////////////////////////////////////////
117 ///////////////////////////////////////////////////////////////////
118 /////////////////////////////////////////////////////////////////
120 ///////////////////////////////////////////////////////////////////