File indexing completed on 2024-04-28 09:33:47
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