本文整理汇总了C++中IRGenFunction::getArchetypeAccessPaths方法的典型用法代码示例。如果您正苦于以下问题:C++ IRGenFunction::getArchetypeAccessPaths方法的具体用法?C++ IRGenFunction::getArchetypeAccessPaths怎么用?C++ IRGenFunction::getArchetypeAccessPaths使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IRGenFunction
的用法示例。
在下文中一共展示了IRGenFunction::getArchetypeAccessPaths方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findConformanceDeclaration
static IRGenFunction::ArchetypeAccessPath
findAccessPathDeclaringConformance(IRGenFunction &IGF,
CanArchetypeType archetype,
ProtocolDecl *protocol) {
// Consider all the associated type relationships we know about.
// Use the archetype's parent relationship first if possible.
if (!archetype->isPrimary()) {
auto parent = archetype.getParent();
auto association =
findConformanceDeclaration(parent->getConformsTo(),
archetype->getAssocType(), protocol);
if (association) return { parent, association };
}
for (auto accessPath : IGF.getArchetypeAccessPaths(archetype)) {
auto association =
findConformanceDeclaration(accessPath.BaseType->getConformsTo(),
accessPath.Association, protocol);
if (association) return { accessPath.BaseType, association };
}
llvm_unreachable("no relation found that declares conformance to target");
}