17 #ifndef _DECAF_UTIL_STLQUEUE_H_ 18 #define _DECAF_UTIL_STLQUEUE_H_ 71 class QueueIterator :
public Iterator<T> {
74 typename std::list<T>::iterator current;
75 typename std::list<T>::iterator previous;
76 typename std::list<T>* queue;
80 QueueIterator(
typename std::list<T>* queue ) :
81 current( queue->begin() ), previous( queue->end() ), queue( queue ) {
84 virtual ~QueueIterator() {}
87 if( this->current == queue->end() ) {
90 "Queue::Iterator::next - No more elements to return" );
93 this->previous = this->current;
94 return *( this->current++ );
97 virtual bool hasNext()
const {
98 return ( this->current != queue->end() );
101 virtual void remove() {
102 if( this->previous == queue->end() ) {
105 "Queue::Iterator::remove - Invalid State to call remove" );
108 this->queue->erase( this->previous );
109 this->previous = this->queue->end();
124 return new QueueIterator( &queue );
139 if( queue.empty() ) {
143 return queue.front();
151 if( queue.empty() ) {
155 return queue.front();
163 if( queue.empty() ) {
175 if( queue.empty() ) {
187 queue.push_back( t );
195 queue.push_front( t );
203 if( queue.empty() ) {
209 T temp = queue.front();
228 return queue.empty();
235 std::vector<T> valueArray( queue.begin(), queue.end() );
246 target.queue.insert( target.queue.end(), queue.rbegin(), queue.rend() );
267 virtual void wait(
long long millisecs ) {
268 mutex.
wait( millisecs );
271 virtual void wait(
long long millisecs,
int nanos ) {
272 mutex.
wait( millisecs, nanos );
T & front()
Returns a Reference to the element at the head of the queue.
Definition: StlQueue.h:138
virtual bool tryLock()
Attempts to Lock the object, if the lock is already held by another thread than this method returns f...
void reverse(StlQueue< T > &target) const
Reverses the order of the contents of this queue and stores them in the target queue.
Definition: StlQueue.h:245
StlQueue()
Definition: StlQueue.h:115
T pop()
Removes and returns the element that is at the Head of the queue.
Definition: StlQueue.h:202
virtual void lock()
Locks the object.
Definition: StlQueue.h:251
void push(const T &t)
Places a new Object at the Tail of the queue.
Definition: StlQueue.h:186
virtual void notify()
Signals a waiter on this object that it can now wake up and continue.
Definition: StlQueue.h:275
Mutex object that offers recursive support on all platforms as well as providing the ability to use t...
Definition: Mutex.h:39
virtual void wait(long long millisecs)
Waits on a signal from this object, which is generated by a call to Notify.
Definition: StlQueue.h:267
virtual void unlock()
Unlocks the object.
Definition: StlQueue.h:259
size_t size() const
Gets the Number of elements currently in the Queue.
Definition: StlQueue.h:219
Iterator< T > * iterator()
Gets an Iterator over this Queue.
Definition: StlQueue.h:123
virtual void unlock()
Unlocks the object.
virtual std::vector< T > toArray() const
Definition: StlQueue.h:234
virtual void wait()
Waits on a signal from this object, which is generated by a call to Notify.
virtual void wait()
Waits on a signal from this object, which is generated by a call to Notify.
Definition: StlQueue.h:263
bool empty() const
Checks if this Queue is currently empty.
Definition: StlQueue.h:227
Defines an object that can be used to iterate over the elements of a collection.
Definition: Iterator.h:34
virtual void notifyAll()
Signals the waiters on this object that it can now wake up and continue.
Definition: StlQueue.h:279
void clear()
Empties this queue.
Definition: StlQueue.h:130
virtual void notifyAll()
Signals the waiters on this object that it can now wake up and continue.
virtual ~StlQueue()
Definition: StlQueue.h:117
virtual void notify()
Signals a waiter on this object that it can now wake up and continue.
virtual void lock()
Locks the object.
Definition: IllegalStateException.h:32
The Queue class accepts messages with an psuh(m) command where m is the message to be queued...
Definition: StlQueue.h:60
virtual void wait(long long millisecs, int nanos)
Waits on a signal from this object, which is generated by a call to Notify.
Definition: StlQueue.h:271
Definition: NoSuchElementException.h:31
const T & back() const
Returns a Reference to the element at the tail of the queue.
Definition: StlQueue.h:174
The interface for all synchronizable objects (that is, objects that can be locked and unlocked)...
Definition: Synchronizable.h:37
const T & front() const
Returns a Reference to the element at the head of the queue.
Definition: StlQueue.h:150
void enqueueFront(const T &t)
Places a new Object at the front of the queue.
Definition: StlQueue.h:194
T & back()
Returns a Reference to the element at the tail of the queue.
Definition: StlQueue.h:162
virtual bool tryLock()
Attempts to Lock the object, if the lock is already held by another thread than this method returns f...
Definition: StlQueue.h:255
T & getSafeValue()
Fetch a reference to the safe value this object will return when there is nothing to fetch from the q...
Definition: StlQueue.h:290
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...
Definition: AprPool.h:25