ArrayData *APCLocalArray::LvalNew(ArrayData* ad, Variant *&ret, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->lvalNew(ret, false)); }
ArrayData* APCLocalArray::SetStr(ArrayData* ad, StringData* k, Cell v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->set(k, tvAsCVarRef(&v), false)); }
ArrayData* APCLocalArray::AppendRef(ArrayData* ad, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->appendRef(v, false)); }
ArrayData *APCLocalArray::LvalStr(ArrayData* ad, StringData* k, Variant *&ret, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->lval(k, ret, false)); }
ArrayData* APCLocalArray::Prepend(ArrayData* ad, Cell v, bool copy) { auto escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->prepend(v, false)); }
ArrayData* APCLocalArray::SetInt(ArrayData* ad, int64_t k, const Variant& v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->set(k, v, false)); }
ArrayData *SharedMap::AppendWithRef(ArrayData* ad, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->appendWithRef(v, false)); }
ArrayData* APCLocalArray::RemoveStr(ArrayData* ad, const StringData* k, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->remove(k, false)); }
ArrayData* SharedMap::SetRefStr(ArrayData* ad, StringData* k, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->setRef(k, v, false)); }
ArrayData *SharedMap::AddLvalStr(ArrayData* ad, StringData* k, Variant *&ret, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->addLval(k, ret, false)); }
ArrayData* SharedMap::SetInt(ArrayData* ad, int64_t k, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->set(k, v, false)); }
ArrayData *SharedMap::LvalInt(ArrayData* ad, int64_t k, Variant *&ret, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->lval(k, ret, false)); }
ArrayData *APCLocalArray::Prepend(ArrayData* ad, const Variant& v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->prepend(v, false)); }
ArrayData* APCLocalArray::SetRefStr(ArrayData* ad, StringData* k, Variant& v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->setRef(k, v, false)); }
ArrayData *SharedMap::Merge(ArrayData* ad, const ArrayData *elems, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->merge(elems, false)); }
ArrayData *APCLocalArray::RemoveInt(ArrayData* ad, int64_t k, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->remove(k, false)); }
ArrayData *SharedMap::Prepend(ArrayData* ad, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->prepend(v, false)); }
ArrayData* APCLocalArray::AppendWithRef(ArrayData* ad, const Variant& v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->appendWithRef(v, false)); }
ArrayData* APCLocalArray::SetRefInt(ArrayData* ad, int64_t k, CVarRef v, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->setRef(k, v, false)); }
ArrayLval APCLocalArray::LvalInt(ArrayData* ad, int64_t k, bool copy) { auto const escalated = Escalate(ad); auto const r = escalated->lval(k, false); return {releaseIfCopied(escalated, r.array), r.val}; }
ArrayData* SharedArray::Plus(ArrayData* ad, const ArrayData *elems, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->plus(elems, false)); }