本文整理汇总了C++中dynamiccontext::Ptr::contextItem方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::contextItem方法的具体用法?C++ Ptr::contextItem怎么用?C++ Ptr::contextItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dynamiccontext::Ptr
的用法示例。
在下文中一共展示了Ptr::contextItem方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: source
Item::Iterator::Ptr AxisStep::evaluateSequence(const DynamicContext::Ptr &context) const
{
/* If we don't have a focus, it's either a bug or our parent isn't a Path
* that have advanced the focus iterator. Hence, attempt to advance the focus on our own. */
if(!context->contextItem())
context->focusIterator()->next();
Q_ASSERT(context->contextItem());
const QXmlNodeModelIndex::Iterator::Ptr source(context->contextItem().asNode().iterate(m_axis));
return makeItemMappingIterator<Item>(ConstPtr(this), source, context);
}
示例2: current
Item::Iterator::Ptr ApplyTemplate::evaluateSequence(const DynamicContext::Ptr &context) const
{
const TemplateMode::Ptr templateMode(effectiveMode(context));
const Template::Ptr &templateMatch = findTemplate(context, templateMode);
if(templateMatch)
return templateMatch->body->evaluateSequence(templateMatch->createContext(this, context, false));
else
{
/* None of our templates matched. Proceed with a built-in. */
const Item current(context->contextItem());
// TODO it can be an atomic value?
const QXmlNodeModelIndex::NodeKind kind(current.asNode().kind());
if(kind == QXmlNodeModelIndex::Element || kind == QXmlNodeModelIndex::Document)
{
pDebug() << "No template match, using builtin template for element() | document-node()";
const Item::Iterator::Ptr focusIterator(makeItemMappingIterator<Item>(ConstPtr(this),
current.asNode().iterate(QXmlNodeModelIndex::AxisChild),
context));
const DynamicContext::Ptr focus(context->createFocus());
focus->setFocusIterator(focusIterator);
return makeSequenceMappingIterator<Item>(ConstPtr(this), focusIterator, focus);
}
return CommonValues::emptyIterator;
}
}
示例3: evaluateSingleton
Item AxisStep::evaluateSingleton(const DynamicContext::Ptr &context) const
{
/* If we don't have a focus, it's either a bug or our parent isn't a Path
* that have advanced the focus iterator. Hence, attempt to advance the focus on our own. */
if(!context->contextItem())
context->focusIterator()->next();
Q_ASSERT(context->contextItem());
const QXmlNodeModelIndex::Iterator::Ptr it(context->contextItem().asNode().iterate(m_axis));
QXmlNodeModelIndex next(it->next());
while(!next.isNull())
{
const Item candidate(mapToItem(next, context));
if(candidate)
return candidate;
else
next = it->next();
};
return Item();
}
示例4: createContext
DynamicContext::Ptr CurrentItemStore::createContext(const DynamicContext::Ptr &old) const
{
return DynamicContext::Ptr(new CurrentItemContext(old->contextItem(), old));
}
示例5: evaluateSingleton
Item ContextItem::evaluateSingleton(const DynamicContext::Ptr &context) const
{
return context->contextItem();
}
示例6: evaluateSingleton
Item ParentNodeAxis::evaluateSingleton(const DynamicContext::Ptr &context) const
{
return context->contextItem().asNode().iterate(QXmlNodeModelIndex::AxisParent)->next();
}
示例7: evaluateSingleton
Item UnparsedEntityURIFN::evaluateSingleton(const DynamicContext::Ptr &context) const
{
checkTargetNode(context->contextItem().asNode(), context, ReportContext::XTDE1370);
return toItem(AnyURI::fromValue(QUrl()));
}
示例8: evaluateSingleton
Item UnparsedEntityPublicIDFN::evaluateSingleton(const DynamicContext::Ptr &context) const
{
checkTargetNode(context->contextItem().asNode(), context, ReportContext::XTDE1380);
return AtomicString::fromValue(QString());
}