VapourSynth-llvmexpr
Loading...
Searching...
No Matches
infix2postfix::CodeGenerator Class Reference

#include <llvmexpr/frontend/infix2postfix/CodeGenerator.hpp>

Classes

struct  ExprResult

Public Member Functions

 CodeGenerator (Mode mode, int num_inputs, int num_intermediate_inputs=0)
std::string generate (const Program *program)
Mode getMode () const
ExprResult generateExpr (Expr *expr)

Detailed Description

Definition at line 46 of file CodeGenerator.hpp.

Constructor & Destructor Documentation

◆ CodeGenerator()

infix2postfix::CodeGenerator::CodeGenerator ( Mode mode,
int num_inputs,
int num_intermediate_inputs = 0 )

Definition at line 32 of file CodeGenerator.cpp.

34 : mode(mode), num_inputs(num_inputs),
35 num_intermediate_inputs(num_intermediate_inputs) {}

Member Function Documentation

◆ generate()

std::string infix2postfix::CodeGenerator::generate ( const Program * program)

Definition at line 37 of file CodeGenerator.cpp.

37 {
38 PostfixBuilder main_builder;
39 for (const auto& stmt : program->statements) {
40 generate(stmt.get(), main_builder);
41 }
42
43 if (mode == Mode::Expr || mode == Mode::VkExpr) {
44 main_builder.addVariableLoad("RESULT");
45 }
46
47 return main_builder.getExpression();
48}
std::string generate(const Program *program)

References infix2postfix::PostfixBuilder::addVariableLoad(), infix2postfix::Expr, generate(), infix2postfix::PostfixBuilder::getExpression(), infix2postfix::Program::statements, and infix2postfix::VkExpr.

Referenced by generate(), infix2postfix::AnalysisEngine::generateCode(), and generateExpr().

◆ generateExpr()

CodeGenerator::ExprResult infix2postfix::CodeGenerator::generateExpr ( Expr * expr)

Definition at line 50 of file CodeGenerator.cpp.

50 {
51 PostfixBuilder b;
52 Type t = generate(expr, b);
53 return {.postfix = b, .type = t};
54}

References generate().

◆ getMode()

Mode infix2postfix::CodeGenerator::getMode ( ) const
inlinenodiscard

Definition at line 57 of file CodeGenerator.hpp.

57{ return mode; }

The documentation for this class was generated from the following files: