ArrayData *VectorString::insert(ssize_t pos, CVarRef v, bool copy) { if (!v.isString()) { ArrayData *ret = NEW(VectorVariant)(this); ret->insert(pos, v, false); return ret; } if (copy) { ArrayData* ret = NEW(VectorString)(this); ret->insert(pos, v, false); return ret; } if (pos >= size()) { return append(v, false); } if (pos < 0) pos = 0; m_elems.insert(pos, v.toString()); return NULL; }
ArrayData *VectorVariant::insert(ssize_t pos, CVarRef v, bool copy) { if (pos >= size()) { return append(v, false); } if (copy) { ArrayData* ret = NEW(VectorVariant)(this); ret->insert(pos, v, false); return ret; } if (pos == ArrayData::invalid_index) pos = 0; m_elems.insert(pos, ArrayFuncs::element(v)); return NULL; }
ArrayData *MapVariant::insert(ssize_t pos, CVarRef v, bool copy) { if (pos >= size()) { return append(v, false); } if (pos < 0) pos = 0; if (copy) { ArrayData* ret = NEW(MapVariant)(this); ret->insert(pos, v, false); return ret; } insertKey(pos); m_elems.insert(pos, ArrayFuncs::element(v)); return NULL; }