本文整理汇总了C++中clang::QualType::getNonReferenceType方法的典型用法代码示例。如果您正苦于以下问题:C++ QualType::getNonReferenceType方法的具体用法?C++ QualType::getNonReferenceType怎么用?C++ QualType::getNonReferenceType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类clang::QualType
的用法示例。
在下文中一共展示了QualType::getNonReferenceType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ShouldRegisterMetaType
bool MocNg::ShouldRegisterMetaType(clang::QualType T)
{
if (T->isVoidType() || (T->isReferenceType() && !T.getNonReferenceType().isConstQualified()))
return false;
if (registered_meta_type.count(T->getCanonicalTypeUnqualified().getTypePtr()))
return true;
T = T.getNonReferenceType();
if (T->isPointerType()) {
// registering pointer to forward declared type fails.
const clang::CXXRecordDecl* Pointee = T->getPointeeCXXRecordDecl();
if (Pointee && !Pointee->hasDefinition())
return false;
return true;
}
const clang::ClassTemplateSpecializationDecl* TD = llvm::dyn_cast_or_null<clang::ClassTemplateSpecializationDecl>(T->getAsCXXRecordDecl());
if (TD) {
if (!TD->hasDefinition())
return false;
for (uint I = 0; I < TD->getTemplateArgs().size(); ++I) {
const auto &Arg = TD->getTemplateArgs().get(I);
if (Arg.getKind() == clang::TemplateArgument::Type) {
if (!ShouldRegisterMetaType(Arg.getAsType()))
return false;
}
}
}
return true;
}