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() );
256 return mutex.tryLock();
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 );
Definition IllegalStateException.h:32
Defines an object that can be used to iterate over the elements of a collection.
Definition Iterator.h:34
Definition NoSuchElementException.h:31
size_t size() const
Gets the Number of elements currently in the Queue.
Definition StlQueue.h:219
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
const T & back() const
Returns a Reference to the element at the tail of the queue.
Definition StlQueue.h:174
void enqueueFront(const T &t)
Places a new Object at the front of the queue.
Definition StlQueue.h:194
virtual void lock()
Locks the object.
Definition StlQueue.h:251
virtual ~StlQueue()
Definition StlQueue.h:117
bool empty() const
Checks if this Queue is currently empty.
Definition StlQueue.h:227
Iterator< T > * iterator()
Gets an Iterator over this Queue.
Definition StlQueue.h:123
virtual void wait()
Waits on a signal from this object, which is generated by a call to Notify.
Definition StlQueue.h:263
virtual void unlock()
Unlocks the object.
Definition StlQueue.h:259
StlQueue()
Definition StlQueue.h:115
const T & front() const
Returns a Reference to the element at the head of the queue.
Definition StlQueue.h:150
T & back()
Returns a Reference to the element at the tail of the queue.
Definition StlQueue.h:162
virtual void notifyAll()
Signals the waiters on this object that it can now wake up and continue.
Definition StlQueue.h:279
virtual std::vector< T > toArray() const
Definition StlQueue.h:234
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
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
T pop()
Removes and returns the element that is at the Head of the queue.
Definition StlQueue.h:202
void clear()
Empties this queue.
Definition StlQueue.h:130
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
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
T & front()
Returns a Reference to the element at the head of the queue.
Definition StlQueue.h:138
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
Mutex object that offers recursive support on all platforms as well as providing the ability to use t...
Definition Mutex.h:39
The interface for all synchronizable objects (that is, objects that can be locked and unlocked).
Definition Synchronizable.h:37
Definition AbstractCollection.h:33
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
Definition AprPool.h:25