aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-10-15 15:32:32 +0000
committerMax Horn2002-10-15 15:32:32 +0000
commitd8c26a61aef379c9ad43d4f5cc101ee1ed22440b (patch)
tree843c3d975fbe28d21978053de89dba8663648f00
parentbd15755b17e0ed616114db52821e0fce58f0a29e (diff)
downloadscummvm-rg350-d8c26a61aef379c9ad43d4f5cc101ee1ed22440b.tar.gz
scummvm-rg350-d8c26a61aef379c9ad43d4f5cc101ee1ed22440b.tar.bz2
scummvm-rg350-d8c26a61aef379c9ad43d4f5cc101ee1ed22440b.zip
added insert_at method to List template
svn-id: r5153
-rw-r--r--common/list.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/common/list.h b/common/list.h
index 87e8b5ab34..f5f3e4967a 100644
--- a/common/list.h
+++ b/common/list.h
@@ -49,12 +49,27 @@ public:
delete [] _data;
}
- void push_back(const T& str)
+ void push_back(const T& element)
{
ensureCapacity(_size + 1);
- _data[_size++] = str;
+ _data[_size++] = element;
}
+ void insert_at(int idx, const T& element)
+ {
+ assert(idx >= 0 && idx <= _size);
+ ensureCapacity(_size + 1);
+ // The following loop is not efficient if you can just memcpy things around.
+ // e.g. if you have a list of ints. But for real objects (String...), memcpy
+ // is *not* usually a good idea!
+ for (int i = _size; i > idx; i--) {
+ _data[i] = _data[i-1];
+ }
+ _data[idx] = element;
+ _size++;
+ }
+
+
// TODO: insert, remove, ...
T& operator [](int idx)