diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-03 15:44:00 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-03 15:44:00 +0800 |
commit | e5a626edeac23f1eb1d4748d3fa667478db857c5 (patch) | |
tree | 4d31becf0acf8d5a8dd8d18e197399f8ce01e310 /src/trans/codegen.hpp | |
parent | 16e7559bcca93b885bc0d2480a388960104bf78e (diff) | |
download | mrust-e5a626edeac23f1eb1d4748d3fa667478db857c5.tar.gz |
Trans Codegen - Structure coming up
Diffstat (limited to 'src/trans/codegen.hpp')
-rw-r--r-- | src/trans/codegen.hpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/trans/codegen.hpp b/src/trans/codegen.hpp new file mode 100644 index 00000000..0aff9412 --- /dev/null +++ b/src/trans/codegen.hpp @@ -0,0 +1,46 @@ +/* + * MRustC - Rust Compiler + * - By John Hodge (Mutabah/thePowersGang) + * + * trans/codegen.hpp + * - Common class and methods for codegen + */ +#pragma once + +#include "trans_list.hpp" + +namespace HIR { + class TypeRef; + class Path; + class GenericPath; + + class Function; + class Static; +} +namespace MIR { + class FunctionPointer; +} + + +class CodeGenerator +{ +public: + virtual ~CodeGenerator() {} + virtual void finalise() {} + + virtual void emit_tuple(const ::HIR::GenericPath& p, const ::std::vector<::HIR::TypeRef>& ) {} + virtual void emit_struct(const ::HIR::GenericPath& p, const ::HIR::Struct& item) {} + virtual void emit_union(const ::HIR::GenericPath& p, const ::HIR::Union& item) {} + virtual void emit_enum(const ::HIR::GenericPath& p, const ::HIR::Enum& item) {} + + virtual void emit_static_ext(const ::HIR::Path& p) {} + virtual void emit_static_local(const ::HIR::Path& p, const ::HIR::Static& item, const Trans_Params& params) {} + + virtual void emit_function_ext(const ::HIR::Path& p, const ::HIR::Function& item, const Trans_Params& params) {} + virtual void emit_function_proto(const ::HIR::Path& p, const ::HIR::Function& item, const Trans_Params& params) {} + virtual void emit_function_code(const ::HIR::Path& p, const ::HIR::Function& item, const Trans_Params& params, const ::MIR::FunctionPointer& code) {} +}; + + +extern ::std::unique_ptr<CodeGenerator> Trans_Codegen_GetGeneratorC(const ::std::string& outfile); + |