Index: src/list.h |
=================================================================== |
--- src/list.h (revision 1421) |
+++ src/list.h (working copy) |
@@ -53,13 +53,15 @@ |
INLINE(void* operator new(size_t size)) { return P::New(size); } |
INLINE(void operator delete(void* p, size_t)) { return P::Delete(p); } |
+ // Returns a reference to the element at index i. This reference is |
+ // not safe to use after operations that can change the list's |
+ // backing store (eg, Add). |
inline T& operator[](int i) const { |
ASSERT(0 <= i && i < length_); |
return data_[i]; |
} |
inline T& at(int i) const { return operator[](i); } |
inline T& last() const { |
- ASSERT(!is_empty()); |
return at(length_ - 1); |
} |
@@ -72,19 +74,13 @@ |
// Adds a copy of the given 'element' to the end of the list, |
// expanding the list if necessary. |
- T& Add(const T& element); |
+ void Add(const T& element); |
// Added 'count' elements with the value 'value' and returns a |
// vector that allows access to the elements. The vector is valid |
// until the next change is made to this list. |
- Vector<T> AddBlock(const T& value, int count); |
+ Vector<T> AddBlock(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. This function's complexity is linear |
- // in the size of the list. |
- 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. This function's complexity is linear in the |