| 864 | |
| 865 | template <class T, size_t N, class AP> |
| 866 | inline bool |
| 867 | Vector<T,N,AP>::insert(T *p, const T &val) |
| 868 | { |
| 869 | JS_ASSERT(begin() <= p && p <= end()); |
| 870 | size_t pos = p - begin(); |
| 871 | JS_ASSERT(pos <= mLength); |
| 872 | size_t oldLength = mLength; |
| 873 | if (pos == oldLength) |
| 874 | return append(val); |
| 875 | { |
| 876 | T oldBack = back(); |
| 877 | if (!append(oldBack)) /* Dup the last element. */ |
| 878 | return false; |
| 879 | } |
| 880 | for (size_t i = oldLength; i > pos; --i) |
| 881 | (*this)[i] = (*this)[i - 1]; |
| 882 | (*this)[pos] = val; |
| 883 | return true; |
| 884 | } |
| 885 | |
| 886 | template<typename T, size_t N, class AP> |
| 887 | inline void |