File indexing completed on 2024-04-14 05:32:07

0001 /*
0002     SPDX-FileCopyrightText: 2019 Klarälvdalens Datakonsult AB a KDAB Group company info@kdab.com
0003     SPDX-FileContributor: SĂ©rgio Martins <sergio.martins@kdab.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef CLAZY_MINI_AST_DUMPER
0009 #define CLAZY_MINI_AST_DUMPER
0010 
0011 #include <clang/AST/ASTConsumer.h>
0012 #include <clang/AST/RecursiveASTVisitor.h>
0013 #include <clang/Frontend/FrontendAction.h>
0014 #include <llvm/ADT/StringRef.h>
0015 
0016 #include <memory>
0017 #include <string>
0018 #include <vector>
0019 
0020 namespace clang
0021 {
0022 class CompilerInstance;
0023 class ASTContext;
0024 class Decl;
0025 class Stmt;
0026 }
0027 
0028 class MiniAstDumperASTAction : public clang::PluginASTAction
0029 {
0030 public:
0031     MiniAstDumperASTAction();
0032 
0033 protected:
0034     bool ParseArgs(const clang::CompilerInstance &ci, const std::vector<std::string> &args_) override;
0035     std::unique_ptr<clang::ASTConsumer> CreateASTConsumer(clang::CompilerInstance &ci, llvm::StringRef) override;
0036 };
0037 
0038 class MiniASTDumperConsumer : public clang::ASTConsumer, public clang::RecursiveASTVisitor<MiniASTDumperConsumer>
0039 {
0040 public:
0041     explicit MiniASTDumperConsumer();
0042     ~MiniASTDumperConsumer() override;
0043 
0044     bool VisitDecl(clang::Decl *decl);
0045     bool VisitStmt(clang::Stmt *stm);
0046     void HandleTranslationUnit(clang::ASTContext &ctx) override;
0047 
0048 private:
0049     MiniASTDumperConsumer(const MiniASTDumperConsumer &) = delete;
0050 };
0051 
0052 #endif