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)); }
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)); }
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))); }
statement_ptr statement::new_ptr(char const *query, size_t parameter_count) { return statement_ptr(statement::ptr(::cass_statement_new( query, parameter_count))); }