VapourSynth-llvmexpr
Loading...
Searching...
No Matches
Pass.hpp
Go to the documentation of this file.
1
19
20#ifndef LLVMEXPR_ANALYSIS_FRAMEWORK_PASS_HPP
21#define LLVMEXPR_ANALYSIS_FRAMEWORK_PASS_HPP
22
24#include "PreservedAnalyses.hpp"
25
26#include <vector>
27
28namespace analysis {
29
30// Forward declaration
31class AnalysisManager;
32
33class Pass {
34 public:
35 Pass() = default;
36 virtual ~Pass() = default;
37 Pass(const Pass&) = delete;
38 Pass& operator=(const Pass&) = delete;
39 Pass(Pass&&) = delete;
40 Pass& operator=(Pass&&) = delete;
41
42 [[nodiscard]] virtual const char* getName() const = 0;
43};
44
45template <typename Derived, typename ResultT> class AnalysisPass : public Pass {
46 public:
47 using Result = ResultT;
48
49 virtual Result run(const std::vector<Token>& tokens,
50 AnalysisManager& am) = 0;
51};
52
53class TransformationPass : public Pass {
54 public:
55 virtual PreservedAnalyses run(std::vector<Token>& tokens,
56 AnalysisManager& am) = 0;
57};
58
59} // namespace analysis
60
61#endif // LLVMEXPR_ANALYSIS_FRAMEWORK_PASS_HPP
virtual Result run(const std::vector< Token > &tokens, AnalysisManager &am)=0
virtual const char * getName() const =0
Pass(const Pass &)=delete
Pass()=default
Pass(Pass &&)=delete
virtual ~Pass()=default
Pass & operator=(Pass &&)=delete
Pass & operator=(const Pass &)=delete
virtual PreservedAnalyses run(std::vector< Token > &tokens, AnalysisManager &am)=0