コード例 #1
0
ファイル: generate_cpp.cpp プロジェクト: RickMoynihan/circa
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();
}
コード例 #2
0
ファイル: cpp_codegen.cpp プロジェクト: levelplane/circa
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("}");
}
コード例 #3
0
ファイル: cpp_codegen.cpp プロジェクト: levelplane/circa
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(";");
    }
}