forked from OSchip/llvm-project
33 lines
835 B
C++
33 lines
835 B
C++
#include "clang/AST/ASTConsumer.h"
|
|
#include "clang/AST/RecursiveASTVisitor.h"
|
|
#include "clang/Frontend/ASTConsumers.h"
|
|
#include "clang/Frontend/CompilerInstance.h"
|
|
#include "clang/Frontend/FrontendActions.h"
|
|
|
|
using namespace clang;
|
|
|
|
namespace {
|
|
class ExtractAPIVisitor : public RecursiveASTVisitor<ExtractAPIVisitor> {
|
|
public:
|
|
bool VisitNamedDecl(NamedDecl *Decl) {
|
|
llvm::outs() << Decl->getName() << "\n";
|
|
return true;
|
|
}
|
|
};
|
|
|
|
class ExtractAPIConsumer : public ASTConsumer {
|
|
public:
|
|
void HandleTranslationUnit(ASTContext &Context) override {
|
|
Visitor.TraverseDecl(Context.getTranslationUnitDecl());
|
|
}
|
|
|
|
private:
|
|
ExtractAPIVisitor Visitor;
|
|
};
|
|
} // namespace
|
|
|
|
std::unique_ptr<ASTConsumer>
|
|
ExtractAPIAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
|
|
return std::make_unique<ExtractAPIConsumer>();
|
|
}
|