| 316 | } |
| 317 | |
| 318 | std::set<clang::FunctionDecl *> |
| 319 | findDefinedFunctionDecls(clang::ASTContext &Ctx, std::set<std::string> Names) { |
| 320 | std::set<clang::FunctionDecl *> Result; |
| 321 | std::string MatchTag = "FunctionTag"; |
| 322 | auto Matcher = functionDecl(isDefinition()).bind(MatchTag); |
| 323 | for (auto &Node : match(Matcher, Ctx)) { |
| 324 | auto *Record = const_cast<clang::FunctionDecl *>( |
| 325 | Node.getNodeAs<clang::FunctionDecl>(MatchTag)); |
| 326 | if (!Record) |
| 327 | continue; |
| 328 | |
| 329 | if (Names.size() == 0) { |
| 330 | Result.insert(Record); |
| 331 | continue; |
| 332 | } |
| 333 | |
| 334 | for (auto &MangledName : util::getMangledNames(*Record)) { |
| 335 | if (Names.find(MangledName) != Names.end()) { |
| 336 | Result.insert(Record); |
| 337 | break; |
| 338 | } |
| 339 | } |
| 340 | } |
| 341 | return Result; |
| 342 | } |
| 343 | |
| 344 | } // namespace util |
| 345 |
no test coverage detected