#ifndef CODEGEN_H #define CODEGEN_H #include #include #include #include #include "builder.h" #include "types.h" #include "binops.h" #include "casting.h" #include "tokens.h" namespace codegen { struct StackValue { llvm::Value* value = nullptr; std::shared_ptr ty = nullptr; }; struct Scope { std::vector& binops; std::vector unops; std::vector& casts; TypeMap structs; std::map values; bool is_lvalue; llvm::BasicBlock* continue_bb; llvm::BasicBlock* break_bb; Scope with_lvalue(); }; } #endif