libzypp  17.14.0
Queue.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
11 #ifndef ZYPP_SAT_QUEUE_H
12 #define ZYPP_SAT_QUEUE_H
13 
14 #include <iosfwd>
15 
16 #include "zypp/base/PtrTypes.h"
18 
20 namespace zypp
21 {
23  namespace sat
24  {
25  class Queue;
26  typedef Queue SolvableQueue;
27  typedef Queue StringQueue;
28 
34  class Queue
35  {
36  public:
37  typedef unsigned size_type;
39  typedef const value_type* const_iterator;
40 
41  public:
43  Queue();
44 
46  ~Queue();
47 
48  bool empty() const;
49  size_type size() const;
50  const_iterator begin() const;
51  const_iterator end() const;
52 
54  const_iterator find( value_type val_r ) const;
55 
57  bool contains( value_type val_r ) const
58  { return( find( val_r ) != end() ); }
59 
61  value_type first() const;
62 
64  value_type last() const;
65 
69  const value_type & at( size_type idx_r ) const;
70 
74  value_type & at( size_type idx_r );
75 
77  const value_type & operator[]( size_type idx_r ) const;
78 
80  value_type & operator[]( size_type idx_r );
81 
83  void clear();
84 
86  void remove( value_type val_r );
87 
89  void push( value_type val_r );
91  void push_back( value_type val_r )
92  { push( val_r ); }
93 
95  void pushUnique( value_type val_r );
96 
98  value_type pop();
101  { return pop(); }
102 
104  void push_front( value_type val_r );
105 
108 
109  public:
110  operator detail::CQueue *();
111  operator const detail::CQueue *() const
112  { return _pimpl.get(); }
113  private:
115  };
116 
118  std::ostream & operator<<( std::ostream & str, const Queue & obj );
119 
121  std::ostream & dumpOn( std::ostream & str, const Queue & obj );
122 
124  bool operator==( const Queue & lhs, const Queue & rhs );
125 
127  inline bool operator!=( const Queue & lhs, const Queue & rhs )
128  { return !( lhs == rhs ); }
129 
130  } // namespace sat
132 
134  template<> sat::detail::CQueue * rwcowClone<sat::detail::CQueue>( const sat::detail::CQueue * rhs );
135 
136 } // namespace zypp
138 #endif // ZYPP_SAT_QUEUE_H