本文整理汇总了C++中expression::Ptr::isEvaluated方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::isEvaluated方法的具体用法?C++ Ptr::isEvaluated怎么用?C++ Ptr::isEvaluated使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类expression::Ptr
的用法示例。
在下文中一共展示了Ptr::isEvaluated方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compress
Expression::Ptr SubsequenceFN::compress(const StaticContext::Ptr &context)
{
const Expression::Ptr me(FunctionCall::compress(context));
if(me != this)
return me;
const Expression::Ptr lenArg(m_operands.value(2));
if(lenArg && lenArg->isEvaluated())
{
const xsInteger length = lenArg->as<Literal>()->item().as<Numeric>()->round()->toInteger();
if(length <= 0)
return EmptySequence::create(this, context);
}
return me;
}
示例2: typeCheck
Expression::Ptr DocFN::typeCheck(const StaticContext::Ptr &context,
const SequenceType::Ptr &reqType)
{
/* See the doxygen documentation for this function for the explanation
* to why this implementation is here, as opposed to in
* qsequencegeneratingfns.cpp. */
Q_ASSERT(context);
prepareStaticBaseURI(context);
const Expression::Ptr uriOp(m_operands.first());
if(!uriOp->isEvaluated())
return Expression::Ptr(FunctionCall::typeCheck(context, reqType));
const Item uriItem(uriOp->evaluateSingleton(context->dynamicContext()));
if(!uriItem)
return EmptySequence::create(this, context)->typeCheck(context, reqType); // TODO test this
/* These two lines were previously in a separate function but are now duplicated
* in DocFN::evaluateSingleton(), as part of a workaround for solaris-cc-64. */
const QUrl mayRela(AnyURI::toQUrl<ReportContext::FODC0005>(uriItem.stringValue(), context, this));
const QUrl uri(context->resolveURI(mayRela, staticBaseURI()));
/* The URI is supplied statically, so, let's try to be clever. */
Q_ASSERT_X(context->resourceLoader(), Q_FUNC_INFO,
"No resource loader is set in the StaticContext.");
m_type = context->resourceLoader()->announceDocument(uri, ResourceLoader::MayUse);
if(m_type)
{
Q_ASSERT(CommonSequenceTypes::ZeroOrOneDocumentNode->matches(m_type));
return Expression::Ptr(FunctionCall::typeCheck(context, reqType));
}
else
{
context->error(QtXmlPatterns::tr("It will not be possible to retrieve %1.").arg(formatURI(uri)),
ReportContext::FODC0002, this);
return Expression::Ptr();
}
}