Serenity Operating System
at master 30 lines 855 B view raw
1/* 2 * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <clang/ASTMatchers/ASTMatchFinder.h> 10#include <clang/ASTMatchers/ASTMatchers.h> 11#include <clang/Tooling/Tooling.h> 12#include <unordered_set> 13 14class CollectCellsHandler 15 : public clang::tooling::SourceFileCallbacks 16 , public clang::ast_matchers::MatchFinder::MatchCallback { 17public: 18 CollectCellsHandler(); 19 virtual ~CollectCellsHandler() override = default; 20 21 virtual bool handleBeginSource(clang::CompilerInstance&) override; 22 23 virtual void run(clang::ast_matchers::MatchFinder::MatchResult const& result) override; 24 25 clang::ast_matchers::MatchFinder& finder() { return m_finder; } 26 27private: 28 std::unordered_set<std::string> m_visited_classes; 29 clang::ast_matchers::MatchFinder m_finder; 30};