コード例 #1
0
void cpp_from_cloog::process( clast_guard* guard )
{
    auto if_stmt = new if_statement;

    if (guard->n > 0)
    {
        expression_ptr expr = process(guard->eq + 0);
        for (int i = 1; i < guard->n; ++i)
        {
            auto rhs = process(guard->eq + i);
            expr = make_shared<bin_op_expression>(op::logic_and, expr, rhs);
        }

        if_stmt->condition = expr;
    }
    else
    {
        if_stmt->condition = literal(false);
    }

    auto body = make_shared<block_statement>();

    m_ctx->push(&body->statements);
    process_list(guard->then);
    m_ctx->pop();

    if_stmt->true_part = body;

    m_ctx->add(statement_ptr(if_stmt));
}
コード例 #2
0
void cpp_from_cloog::process( clast_for* loop )
{
    isl::set domain( isl_set_from_cloog_domain(loop->domain) );
    isl::printer p(domain.ctx());
    cout << "Generating loop for domain: ";  p.print(domain); cout << endl;

    auto iterator = make_shared<id_expression>(loop->iterator);
    auto iterator_decl =
            make_shared<variable_decl>(make_shared<basic_type>("int"),
                                       loop->iterator);
    auto iterator_decl_expr = make_shared<var_decl_expression>(iterator_decl);

    auto for_stmt = new for_statement;

    for_stmt->initialization =
            make_shared<bin_op_expression>(op::assign,
                                           iterator_decl_expr,
                                           process(loop->LB));
    for_stmt->condition =
            make_shared<bin_op_expression>(op::lesser_or_equal,
                                           iterator,
                                           process(loop->UB));

    for_stmt->update =
            make_shared<bin_op_expression>(op::assign_add,
                                           iterator,
                                           literal(loop->stride));

    auto body = make_shared<block_statement>();

    m_ctx->push(&body->statements);
    process_list(loop->body);
    m_ctx->pop();

    for_stmt->body = body;

    m_ctx->add(statement_ptr(for_stmt));
}
コード例 #3
0
ファイル: statement.cpp プロジェクト: API92/cassaforte
statement_ptr statement::new_n_ptr(char const *query,
        size_t query_length, size_t parameter_count)
{
    return statement_ptr(statement::ptr(::cass_statement_new_n(
                    query, query_length, parameter_count)));
}
コード例 #4
0
ファイル: statement.cpp プロジェクト: API92/cassaforte
statement_ptr statement::new_ptr(char const *query,
        size_t parameter_count)
{
    return statement_ptr(statement::ptr(::cass_statement_new(
                    query, parameter_count)));
}