ArrayData* ProxyArray::Merge(ArrayData* ad, const ArrayData* elems) { auto r = innerArr(ad)->merge(elems); reseatable(ad, r); return ad; }
bool ProxyArray::ExistsStr(const ArrayData* ad, const StringData* k) { return innerArr(ad)->exists(k); }
const TypedValue* ProxyArray::NvGetInt(const ArrayData* ad, int64_t k) { return innerArr(ad)->nvGet(k); }
size_t ProxyArray::Vsize(const ArrayData* ad) { return innerArr(ad)->size(); }
const Variant& ProxyArray::GetValueRef(const ArrayData* ad, ssize_t pos) { return innerArr(ad)->getValueRef(pos); }
ArrayData* ProxyArray::ZSetInt(ArrayData* ad, int64_t k, RefData* v) { auto r = innerArr(ad)->zSet(k, v); reseatable(ad, r); return ad; }
ArrayData* ProxyArray::ZAppend(ArrayData* ad, RefData* v, int64_t* key_ptr) { auto r = innerArr(ad)->zAppend(v, key_ptr); reseatable(ad, r); return ad; }
ssize_t ProxyArray::IterBegin(const ArrayData* ad) { return innerArr(ad)->iter_begin(); }
ssize_t ProxyArray::IterLast(const ArrayData* ad) { return innerArr(ad)->iter_last(); }
void ProxyArray::OnSetEvalScalar(ArrayData* ad) { innerArr(ad)->onSetEvalScalar(); }
ArrayData* ProxyArray::Escalate(const ArrayData* ad) { auto r = innerArr(ad)->escalate(); reseatable(ad, r); return const_cast<ArrayData*>(ad); }
void ProxyArray::Renumber(ArrayData* ad) { innerArr(ad)->renumber(); }
ArrayData* ProxyArray::Dequeue(ArrayData* ad, Variant &value) { auto r = innerArr(ad)->dequeue(value); reseatable(ad, r); return ad; }
ArrayData* ProxyArray::Pop(ArrayData* ad, Variant &value) { auto r = innerArr(ad)->pop(value); reseatable(ad, r); return ad; }
bool ProxyArray::Uasort(ArrayData* ad, const Variant& cmp_function) { reseatable(ad, innerArr(ad)->escalateForSort(SORTFUNC_UASORT)); return innerArr(ad)->uasort(cmp_function); }
ssize_t ProxyArray::IterEnd(const ArrayData* ad) { return innerArr(ad)->iter_end(); }
bool ProxyArray::IsVectorData(const ArrayData* ad) { return innerArr(ad)->isVectorData(); }
ssize_t ProxyArray::IterAdvance(const ArrayData* ad, ssize_t prev) { return innerArr(ad)->iter_advance(prev); }
ArrayData* ProxyArray::ZSetStr(ArrayData* ad, StringData* k, RefData* v) { auto r = innerArr(ad)->zSet(k, v); reseatable(ad, r); return ad; }
ssize_t ProxyArray::IterRewind(const ArrayData* ad, ssize_t prev) { return innerArr(ad)->iter_rewind(prev); }
ArrayData* ProxyArray::CopyWithStrongIterators(const ArrayData* ad) { return innerArr(ad)->copyWithStrongIterators(); }
bool ProxyArray::ValidMArrayIter(const ArrayData* ad, const MArrayIter & fp) { return innerArr(ad)->validMArrayIter(fp); }
void ProxyArray::NvGetKey(const ArrayData* ad, TypedValue* out, ssize_t pos) { return innerArr(ad)->nvGetKey(out, pos); }
bool ProxyArray::AdvanceMArrayIter(ArrayData* ad, MArrayIter& fp) { return innerArr(ad)->advanceMArrayIter(fp); }
bool ProxyArray::ExistsInt(const ArrayData* ad, int64_t k) { return innerArr(ad)->exists(k); }
ArrayData* ProxyArray::EscalateForSort(ArrayData* ad, SortFunction sf) { auto r = innerArr(ad)->escalateForSort(sf); reseatable(ad, r); return ad; }
const TypedValue* ProxyArray::NvGetStr(const ArrayData* ad, const StringData* k) { return innerArr(ad)->nvGet(k); }
void ProxyArray::Asort(ArrayData* ad, int sort_flags, bool ascending) { auto const sf = getSortFunction(SORTFUNC_ASORT, ascending); reseatable(ad, innerArr(ad)->escalateForSort(sf)); return innerArr(ad)->asort(sort_flags, ascending); }
ArrayData* ProxyArray::Copy(const ArrayData* ad) { return innerArr(ad)->copy(); }
ArrayData* ProxyArray::PlusEq(ArrayData* ad, const ArrayData* elems) { auto r = innerArr(ad)->plusEq(elems); reseatable(ad, r); return ad; }