#pragma once #include #include #include #include #include #include #include #include #include #include #include static const clang::Type* StripTypedef(clang::QualType type) { if (type->isTypedefNameType()) { return StripTypedef(type->getAs()->getDecl()->getUnderlyingType()); } else { return type.getTypePtr(); } } // FIXME: Need to support other triple except default target triple static std::string GetDeclHeaderFile(clang::ASTContext& Ctx, clang::Decl* Decl) { const auto& SourceManager = Ctx.getSourceManager(); const clang::FileID FileID = SourceManager.getFileID(Decl->getBeginLoc()); const clang::FileEntry *FileEntry = SourceManager.getFileEntryForID(FileID); if (FileEntry) { return FileEntry->getName().str(); } return ""; }