ssize_t VectorImpl::insertAt(const void* item, size_t index, size_t numItems) { if (index > size()) return BAD_INDEX; void* where = _grow(index, numItems); if (where) { if (item) { _do_splat(where, item, numItems); } else { _do_construct(where, numItems); } } return where ? index : (ssize_t)NO_MEMORY; }
ssize_t VectorImpl::replaceAt(const void* prototype, size_t index) { LOG_ASSERT(index<size(), "[%p] replace: index=%d, size=%d", this, (int)index, (int)size()); void* item = editItemLocation(index); if (item == 0) return NO_MEMORY; _do_destroy(item, 1); if (prototype == 0) { _do_construct(item, 1); } else { _do_copy(item, prototype, 1); } return ssize_t(index); }