1234567891011121314151617181920212223242526272829303132 |
- #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>();
- }
|