void write_function(SourceWriter* writer, Term* term) { Function* func = as_function(term); write_type_name(writer, function_get_output_type(func, 0)); writer->write(term->name.c_str()); int inputCount = count_input_placeholders(function_contents(term)); writer->write("("); for (int i=0; i < inputCount; i++) { if (i > 0) writer->write(", "); Term* placeholder = function_get_input_placeholder(func, i); write_type_name(writer, placeholder->type); writer->write(" "); writer->write(get_unique_name(placeholder)); } writer->write(")"); writer->newline(); writer->write("{"); writer->indent(); writer->unindent(); writer->write("}"); writer->newline(); }
void write_function(CppWriter& writer, Term* term) { Function* func = as_function(term_value(term)); write_type_name(writer, function_get_output_type(func, 0)); writer.write(" "); writer.write(term->name); writer.write("("); for (int i=0; i < function_num_inputs(func); i++) { if (i != 0) writer.write(", "); write_type_name(writer, function_get_input_type(func, i)); writer.write(" "); writer.write(function_get_input_name(func, i)); } writer.write(")"); writer.newline(); writer.write("{"); writer.indent(); writer.newline(); write_branch_contents(writer, nested_contents(term)); writer.unindent(); writer.write("}"); }
void write_statement(CppWriter& writer, Term* term) { if (is_comment(term)) { if (term->stringProp("comment") != "") { writer.write("//"); writer.write(term->stringProp("comment")); } } else if (is_function(term)) { write_function(writer, term); } else if (is_statement(term)) { if (term->name != "") { write_type_name(writer, term->type); writer.write(" "); writer.write(term->name); writer.write(" = "); } write_expression(writer, term); writer.write(";"); } }