Reviewers: Erik Corry, Message: It's not called anywhere yet, but I'll need it. Order of arguments was chosen to be the same as the STL list insert.
Description: Add an insert function to our list utility class. Please review this at http://codereview.chromium.org/40105 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/list-inl.h M src/list.h Index: src/list.h =================================================================== --- src/list.h (revision 1407) +++ src/list.h (working copy) @@ -79,6 +79,11 @@ // until the next change is made to this list. Vector<T> AddBlock(const T& value, int count); + // Inserts a copy of the given element at index i in the list. All + // elements formerly at or above i are moved up and the length of + // the list increases by one. + T& Insert(int i, const T& element); + // Removes the i'th element without deleting it even if T is a // pointer type; moves all elements above i "down". Returns the // removed element. Index: src/list-inl.h =================================================================== --- src/list-inl.h (revision 1407) +++ src/list-inl.h (working copy) @@ -59,6 +59,18 @@ template<typename T, class P> +T& List<T, P>::Insert(int i, const T& element) { + int free_index = length_ - 1; + Add(last()); // Add grows the list if necessary. + while (free_index > i) { + data_[free_index] = data_[free_index - 1]; + free_index--; + } + data_[free_index] = element; +} + + +template<typename T, class P> T List<T, P>::Remove(int i) { T element = at(i); length_--; --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
