aboutsummaryrefslogtreecommitdiff
path: root/common/queue.h
diff options
context:
space:
mode:
authorJohannes Schickel2008-09-01 16:52:09 +0000
committerJohannes Schickel2008-09-01 16:52:09 +0000
commit2db5747642446bad3e1824afd0358f51c1965c20 (patch)
tree90a0ddc2bba1d44c53f7c375c4b7a51f46f57a2e /common/queue.h
parentc2f2269852c817ccbe43141820896455ee1d3854 (diff)
downloadscummvm-rg350-2db5747642446bad3e1824afd0358f51c1965c20.tar.gz
scummvm-rg350-2db5747642446bad3e1824afd0358f51c1965c20.tar.bz2
scummvm-rg350-2db5747642446bad3e1824afd0358f51c1965c20.zip
- Added tests for newly added Common::Queue
- Changed Common::Queue::front and Common::Queue::back to return references instead of values svn-id: r34240
Diffstat (limited to 'common/queue.h')
-rw-r--r--common/queue.h49
1 files changed, 36 insertions, 13 deletions
diff --git a/common/queue.h b/common/queue.h
index e771ece369..f1881345e8 100644
--- a/common/queue.h
+++ b/common/queue.h
@@ -35,35 +35,58 @@ namespace Common {
*/
template<class T>
class Queue {
-protected:
- List<T> _queue;
public:
- Queue<T>() {}
- Queue<T>(const List<T> &queueContent) : _queue(queueContent) {}
+ typedef T value_type;
+
+public:
+ Queue<T>() : _impl() {}
+ Queue<T>(const Queue<T> &queue) : _impl(queue._impl) {}
+
+ Queue<T> &operator=(const Queue<T> &queue) {
+ _impl = queue._impl;
+ return *this;
+ }
bool empty() const {
- return _queue.empty();
+ return _impl.empty();
}
+
void clear() {
- _queue.clear();
+ _impl.clear();
}
+
void push(const T &x) {
- _queue.push_back(x);
+ _impl.push_back(x);
}
- T back() const {
- return _queue.reverse_begin().operator*();
+
+ T &front() {
+ return *_impl.begin();
}
- T front() const {
- return _queue.begin().operator*();
+
+ const T &front() const {
+ return *_impl.begin();
}
+
+ T &back() {
+ return *_impl.reverse_begin();
+ }
+
+ const T &back() const {
+ return *_impl.reverse_begin();
+ }
+
T pop() {
T tmp = front();
- _queue.pop_front();
+ _impl.pop_front();
return tmp;
}
+
int size() const {
- return _queue.size();
+ return _impl.size();
}
+
+private:
+ List<T> _impl;
};
} // End of namespace Common