docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
codegen_compiler.h
Go to the documentation of this file.
1#pragma once
2#include <functional>
3#include <memory>
6
7namespace docc::compile {
8
10
12public:
13 virtual ~CompileState() = default;
14 virtual bool codegen() = 0;
15 virtual bool has_compile_action() = 0;
16 // Safe to call after codegen. If it has no compile action, it will just NOOP
17 virtual bool compile() = 0;
18
19 // Value assigned to this state's codegen step.
20 virtual int codegen_order() const = 0;
21 // The state may only enter compile() once every state whose codegen_order is
22 // strictly below this value has finished its codegen.
23 virtual int compile_min_order() const = 0;
24 [[nodiscard]] virtual CodegenCompiler& creator() const = 0;
25};
26
28public:
29 virtual ~CodegenCompiler() = default;
30
31 virtual std::unique_ptr<CompileState> create_compile(
33 const sdfg::codegen::CodeSnippet* snippet,
34 std::function<void(std::ostream&)> generator
35 ) = 0;
36};
37
39public:
40 NoopCompiler() = default;
41
42 std::unique_ptr<CompileState> create_compile(
44 const sdfg::codegen::CodeSnippet* snippet,
45 std::function<void(std::ostream&)> generator
46 ) override;
47};
48
49} // namespace docc::compile
Definition codegen_compiler.h:27
virtual ~CodegenCompiler()=default
virtual std::unique_ptr< CompileState > create_compile(const sdfg::StructuredSDFG &sdfg, const sdfg::codegen::CodeSnippet *snippet, std::function< void(std::ostream &)> generator)=0
Definition codegen_compiler.h:11
virtual CodegenCompiler & creator() const =0
virtual ~CompileState()=default
virtual bool has_compile_action()=0
virtual bool codegen()=0
virtual int codegen_order() const =0
virtual bool compile()=0
virtual int compile_min_order() const =0
std::unique_ptr< CompileState > create_compile(const sdfg::StructuredSDFG &sdfg, const sdfg::codegen::CodeSnippet *snippet, std::function< void(std::ostream &)> generator) override
Definition structured_sdfg.h:30
Definition code_snippet_factory.h:15
Definition targets.h:8
Definition analysis.h:7