本文整理汇总了C++中SharedVariant::getType方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedVariant::getType方法的具体用法?C++ SharedVariant::getType怎么用?C++ SharedVariant::getType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedVariant
的用法示例。
在下文中一共展示了SharedVariant::getType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getValueRef
HOT_FUNC
CVarRef SharedMap::getValueRef(ssize_t pos) const {
SharedVariant *sv = getValueImpl(pos);
DataType t = sv->getType();
if (!IS_REFCOUNTED_TYPE(t)) return sv->asCVarRef();
if (LIKELY(m_localCache != nullptr)) {
assert(unsigned(pos) < size());
TypedValue* tv = &m_localCache[pos];
if (tv->m_type != KindOfUninit) return tvAsCVarRef(tv);
} else {
static_assert(KindOfUninit == 0, "must be 0 since we use smart_calloc");
m_localCache = (TypedValue*) smart_calloc(size(), sizeof(TypedValue));
}
TypedValue* tv = &m_localCache[pos];
tvAsVariant(tv) = sv->toLocal();
assert(tv->m_type != KindOfUninit);
return tvAsCVarRef(tv);
}
示例2: getValueRef
HOT_FUNC
CVarRef SharedMap::getValueRef(ssize_t pos) const {
SharedVariant *sv = m_arr->getValue(pos);
DataType t = sv->getType();
if (!IS_REFCOUNTED_TYPE(t)) return sv->asCVarRef();
if (LIKELY(m_localCache != NULL)) {
Variant *pv;
ArrayData *escalated DEBUG_ONLY =
m_localCache->ZendArray::lvalPtr((int64)pos, pv, false, false);
assert(!escalated);
if (pv) return *pv;
} else {
m_localCache = NEW(ZendArray)();
m_localCache->incRefCount();
}
Variant v = sv->toLocal();
Variant *r;
ArrayData *escalated DEBUG_ONLY =
m_localCache->ZendArray::addLval((int64)pos, r, false);
assert(!escalated);
*r = v;
return *r;
}