summaryrefslogtreecommitdiff
path: root/src/trans/codegen.hpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-03 15:44:00 +0800
committerJohn Hodge <tpg@mutabah.net>2016-12-03 15:44:00 +0800
commite5a626edeac23f1eb1d4748d3fa667478db857c5 (patch)
tree4d31becf0acf8d5a8dd8d18e197399f8ce01e310 /src/trans/codegen.hpp
parent16e7559bcca93b885bc0d2480a388960104bf78e (diff)
downloadmrust-e5a626edeac23f1eb1d4748d3fa667478db857c5.tar.gz
Trans Codegen - Structure coming up
Diffstat (limited to 'src/trans/codegen.hpp')
-rw-r--r--src/trans/codegen.hpp46
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);
+