本文整理汇总了C++中dynamiccontext::Ptr::globalItemSequenceCacheCells方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::globalItemSequenceCacheCells方法的具体用法?C++ Ptr::globalItemSequenceCacheCells怎么用?C++ Ptr::globalItemSequenceCacheCells使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dynamiccontext::Ptr
的用法示例。
在下文中一共展示了Ptr::globalItemSequenceCacheCells方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
Item::Iterator::Ptr EvaluationCache<IsForGlobal>::evaluateSequence(const DynamicContext::Ptr &context) const
{
ItemSequenceCacheCell::Vector &cells = IsForGlobal ? context->globalItemSequenceCacheCells(m_varSlot) : context->itemSequenceCacheCells(m_varSlot);
ItemSequenceCacheCell &cell = cells[m_varSlot];
if(cell.inUse)
{
context->error(QtXmlPatterns::tr("Circularity detected"),
ReportContext::XTDE0640, this);
}
switch(cell.cacheState)
{
case ItemSequenceCacheCell::Full:
{
/**
* We don't use makeListIterator() here because the MIPSPro compiler can't handle it.
*/
return Item::Iterator::Ptr(new ListIterator<Item, Item::List>(cell.cachedItems));
}
case ItemSequenceCacheCell::Empty:
{
cell.inUse = true;
cell.sourceIterator = m_operand->evaluateSequence(IsForGlobal ? topFocusContext(context) : context);
cell.cacheState = ItemSequenceCacheCell::PartiallyPopulated;
/* Fallthrough. */
}
case ItemSequenceCacheCell::PartiallyPopulated:
{
cell.inUse = false;
Q_ASSERT_X(cells.at(m_varSlot).sourceIterator, Q_FUNC_INFO,
"This trigger for a cache bug which hasn't yet been analyzed.");
return Item::Iterator::Ptr(new CachingIterator(cells, m_varSlot, IsForGlobal ? topFocusContext(context) : context));
}
default:
{
Q_ASSERT_X(false, Q_FUNC_INFO, "This path is not supposed to be run.");
return Item::Iterator::Ptr();
}
}
}