# HG changeset patch # User Jordan Miner # Date 1279403536 18000 # Node ID de94552446ab1d4649f15b82fe74aa3b595beb6d # Parent f1e176a76c009e658fbe6bd925f10d1fe6486f6a Add List.removeAt() and tests for it. diff -r f1e176a76c00 -r de94552446ab dynamin/core/list.d --- a/dynamin/core/list.d Sat Jul 17 16:51:03 2010 -0500 +++ b/dynamin/core/list.d Sat Jul 17 16:52:16 2010 -0500 @@ -128,8 +128,12 @@ uint i = find(item); if(i == -1) return; + removeAt(i); + } + void removeAt(uint index) { + T item = _data[index]; - for(++i; i < _count; ++i) + for(uint i = index + 1; i < _count; ++i) _data[i-1] = _data[i]; // must null out to allow to be collected static if(is(T == class) || is(T == interface)) @@ -137,7 +141,7 @@ --_count; static if(hasDelegates) - whenRemoved(item, i); + whenRemoved(item, index); } void insert(T item, uint index) { maybeEnlarge(_count+1); @@ -197,6 +201,12 @@ assert(list.data == "Hello!, Mat"); list.remove('l'); assert(list.data == "Helo!, Mat"); + list.removeAt(0); + assert(list.data == "elo!, Mat"); + list.removeAt(8); + assert(list.data == "elo!, Ma"); + list.removeAt(1); + assert(list.data == "eo!, Ma"); list.clear(); assert(list.data == "");