diff options
| author | Max Horn | 2009-04-27 14:23:20 +0000 |
|---|---|---|
| committer | Max Horn | 2009-04-27 14:23:20 +0000 |
| commit | e579f91b5c1b0949954037acf5bb4b364bfeb2b5 (patch) | |
| tree | 3665306d61515c640885ce0bbec9b4d9c3a82d7d /common | |
| parent | 6322478508e4a2a412efdb819b38d54c067cbbb6 (diff) | |
| download | scummvm-rg350-e579f91b5c1b0949954037acf5bb4b364bfeb2b5.tar.gz scummvm-rg350-e579f91b5c1b0949954037acf5bb4b364bfeb2b5.tar.bz2 scummvm-rg350-e579f91b5c1b0949954037acf5bb4b364bfeb2b5.zip | |
COMMON: Made sure Common::List and Common::array each have all front/back/push_back/push_front, as have their STL counterparts
svn-id: r40163
Diffstat (limited to 'common')
| -rw-r--r-- | common/array.h | 25 | ||||
| -rw-r--r-- | common/list.h | 28 |
2 files changed, 42 insertions, 11 deletions
diff --git a/common/array.h b/common/array.h index 491ed138a2..097dcbfdca 100644 --- a/common/array.h +++ b/common/array.h @@ -76,6 +76,31 @@ public: _size += array._size; } + void pop_back() { + assert(_size > 0); + _size--; + } + + T &front() { + assert(_size > 0); + return _storage[0]; + } + + const T &front() const { + assert(_size > 0); + return _storage[0]; + } + + T &back() { + assert(_size > 0); + return _storage[_size-1]; + } + + const T &back() const { + assert(_size > 0); + return _storage[_size-1]; + } + void insert_at(int idx, const T &element) { assert(idx >= 0 && (uint)idx <= _size); ensureCapacity(_size + 1); diff --git a/common/list.h b/common/list.h index 1685843e8e..d4252db8bb 100644 --- a/common/list.h +++ b/common/list.h @@ -63,14 +63,6 @@ public: clear(); } - void push_front(const t_T &element) { - insert(begin(), element); - } - - void push_back(const t_T &element) { - insert(end(), element); - } - void insert(iterator pos, const t_T &element) { ListInternal::NodeBase *newNode = new Node(element); @@ -127,9 +119,24 @@ public: ++i; } + void push_front(const t_T &element) { + // TODO: Bypass iterators here for improved efficency + insert(begin(), element); + } + + void push_back(const t_T &element) { + // TODO: Bypass iterators here for improved efficency + insert(end(), element); + } + void pop_front() { - iterator i = begin(); - i = erase(i); + // TODO: Bypass iterators here for improved efficency + erase(begin()); + } + + void pop_back() { + // TODO: Bypass iterators here for improved efficency + erase(reverse_begin()); } t_T &front() { @@ -148,7 +155,6 @@ public: return static_cast<Node *>(_anchor._prev)->_data; } - List<t_T> &operator=(const List<t_T> &list) { if (this != &list) { iterator i; |
