本文整理汇总了C++中staticcontext::Ptr::resolveURI方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::resolveURI方法的具体用法?C++ Ptr::resolveURI怎么用?C++ Ptr::resolveURI使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类staticcontext::Ptr
的用法示例。
在下文中一共展示了Ptr::resolveURI方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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();
}
}