From e5a626edeac23f1eb1d4748d3fa667478db857c5 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 3 Dec 2016 15:44:00 +0800 Subject: Trans Codegen - Structure coming up --- src/trans/codegen_c.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/trans/codegen_c.cpp (limited to 'src/trans/codegen_c.cpp') diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp new file mode 100644 index 00000000..e0ac3b30 --- /dev/null +++ b/src/trans/codegen_c.cpp @@ -0,0 +1,51 @@ +/* + * MRustC - Rust Compiler + * - By John Hodge (Mutabah/thePowersGang) + * + * trans/codegen_c.cpp + * - Code generation emitting C code + */ +#include "codegen.hpp" +#include "mangling.hpp" +#include + +namespace { + class CodeGenerator_C: + public CodeGenerator + { + ::std::ofstream m_of; + public: + CodeGenerator_C(const ::std::string& outfile): + m_of(outfile) + { + } + + ~CodeGenerator_C() {} + + void finalise() override + { + } + + void emit_struct(const ::HIR::GenericPath& p, const ::HIR::Struct& item) override + { + m_of << "struct s_" << Trans_Mangle(p) << " {\n"; + m_of << "}\n"; + } + //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); + private: + + }; +} + +::std::unique_ptr Trans_Codegen_GetGeneratorC(const ::std::string& outfile) +{ + return ::std::unique_ptr(new CodeGenerator_C(outfile)); +} -- cgit v1.2.3