本文整理汇总了C++中ZendArray::addLvalImpl方法的典型用法代码示例。如果您正苦于以下问题:C++ ZendArray::addLvalImpl方法的具体用法?C++ ZendArray::addLvalImpl怎么用?C++ ZendArray::addLvalImpl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZendArray
的用法示例。
在下文中一共展示了ZendArray::addLvalImpl方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: inRange
ArrayData *VectorArray::lval(int64 k, Variant *&ret, bool copy,
bool checkExist /* = false */) {
ret = inRange(k, m_size) ? &tvAsVariant(&m_elems[k]) : nullptr;
if (ret == nullptr && k != m_size) {
ZendArray *a = escalateToZendArray();
a->addLvalImpl(k, &ret, false);
return a;
}
if (LIKELY(!copy)) {
if (ret) return nullptr;
assert(m_size == k);
checkSize();
Variant& v = tvAsUninitializedVariant(&m_elems[k]);
v.setUninitNull();
ret = &v;
checkInsertIterator((ssize_t)k);
m_size++;
return nullptr;
}
if (checkExist && ret && (ret->isReferenced() || ret->isObject())) {
return nullptr;
}
VectorArray *a = NEW(VectorArray)(this);
if (ret) {
Variant& v = tvAsVariant(&a->m_elems[k]);
ret = &v;
assert(ret);
return a;
}
assert(m_size == k);
a->VectorArray::lvalNew(ret, false);
return a;
}
示例2: sd
ArrayData *VectorArray::lval(litstr k, Variant *&ret, bool copy,
bool checkExist /* = false */) {
ZendArray *a = escalateToZendArray();
StringData sd(k, AttachLiteral);
a->addLvalImpl(&sd, sd.hash(), &ret);
return a;
}
示例3: ASSERT
ArrayData *ZendArray::addLval(CStrRef k, Variant *&ret, bool copy) {
ASSERT(!exists(k));
if (UNLIKELY(copy)) {
ZendArray *result = copyImpl();
result->addLvalImpl(k.get(), k->hash(), &ret, false);
return result;
}
addLvalImpl(k.get(), k->hash(), &ret, false);
return NULL;
}
示例4: addLvalImpl
ArrayData *ZendArray::lval(int64 k, Variant *&ret, bool copy,
bool checkExist /* = false */) {
if (!copy) {
addLvalImpl(k, &ret);
return NULL;
}
if (!checkExist) {
ZendArray *a = copyImpl();
a->addLvalImpl(k, &ret);
return a;
}
Bucket *p = find(k);
if (p &&
(p->data.isReferenced() || p->data.isObject())) {
ret = &p->data;
return NULL;
}
ZendArray *a = copyImpl();
a->addLvalImpl(k, &ret, p);
return a;
}
示例5: lval
ArrayData *VectorArray::lval(CVarRef k, Variant *&ret, bool copy,
bool checkExist /* = false */) {
Variant::TypedValueAccessor tva = k.getTypedAccessor();
if (isIntKey(tva)) {
return VectorArray::lval(getIntKey(tva), ret, copy, checkExist);
}
ASSERT(k.isString());
ZendArray *a = escalateToZendArray();
StringData *sd = getStringKey(tva);
a->addLvalImpl(sd, sd->hash(), &ret);
return a;
}
示例6: escalateToZendArray
ArrayData *VectorArray::lval(StringData* k, Variant *&ret, bool copy,
bool checkExist /* = false */) {
ZendArray *a = escalateToZendArray();
a->addLvalImpl(k, k->hash(), &ret);
return a;
}