本文整理汇总了C++中ArrayData::prepend方法的典型用法代码示例。如果您正苦于以下问题:C++ ArrayData::prepend方法的具体用法?C++ ArrayData::prepend怎么用?C++ ArrayData::prepend使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArrayData
的用法示例。
在下文中一共展示了ArrayData::prepend方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: escalateToNonEmptyZendArray
ArrayData *VectorArray::prepend(CVarRef v, bool copy) {
if (UNLIKELY(m_size == m_capacity)) {
ZendArray *a = escalateToNonEmptyZendArray();
ArrayData *aa UNUSED = a->prepend(v, false);
assert(!aa);
return a;
}
if (UNLIKELY(copy)) {
ArrayData *a = UNLIKELY(m_size >= FixedSize && Util::isPowerOfTwo(m_size)) ?
// in this case, we would escalate in the capacity check anyway
static_cast<ArrayData*>(escalateToNonEmptyZendArray()) :
static_cast<ArrayData*>(NEW(VectorArray)(this));
ArrayData *aa UNUSED = a->prepend(v, false);
assert(!aa);
return a;
}
checkSize();
for (uint i = m_size; i > 0; i--) {
// copying TV's by value, intentionally not refcounting.
m_elems[i] = m_elems[i-1];
}
tvAsUninitializedVariant(&m_elems[0]).constructValHelper(v);
m_size++;
// To match PHP-like semantics, the prepend operation resets the array's
// internal iterator
m_pos = (ssize_t)0;
return nullptr;
}
示例2: escalate
ArrayData *SharedMap::prepend(CVarRef v, bool copy) {
ArrayData *escalated = escalate();
ArrayData *ee = escalated->prepend(v, false);
if (ee) {
escalated->release();
return ee;
}
return escalated;
}
示例3: NEW
ArrayData *MapVariant::prepend(CVarRef v, bool copy) {
if (copy) {
ArrayData* ret = NEW(MapVariant)(this);
ret->prepend(v, false);
return ret;
}
insertKeyAtPos(0);
m_elems.insert(0, ArrayFuncs::element(v));
return NULL;
}
示例4: releaseIfCopied
ArrayData *SharedMap::prepend(CVarRef v, bool copy) {
ArrayData *escalated = SharedMap::escalate();
return releaseIfCopied(escalated, escalated->prepend(v, false));
}
示例5: releaseIfCopied
ArrayData *APCLocalArray::Prepend(ArrayData* ad, const Variant& v, bool copy) {
ArrayData *escalated = Escalate(ad);
return releaseIfCopied(escalated, escalated->prepend(v, false));
}
示例6: releaseIfCopied
ArrayData *SharedMap::Prepend(ArrayData* ad, CVarRef v, bool copy) {
ArrayData *escalated = Escalate(ad);
return releaseIfCopied(escalated, escalated->prepend(v, false));
}