Serenity Operating System
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};