示例#1
0
 join_fn(sieve_relation_plugin & p, const relation_base & r1, const relation_base & r2, unsigned col_cnt, 
             const unsigned * cols1, const unsigned * cols2, relation_join_fn * inner_join_fun)
         : convenient_relation_join_fn(r1.get_signature(), r2.get_signature(), col_cnt, cols1, cols2),
         m_plugin(p),
         m_inner_join_fun(inner_join_fun) {
     bool r1_sieved = r1.get_plugin().is_sieve_relation();
     bool r2_sieved = r2.get_plugin().is_sieve_relation();
     const sieve_relation * sr1 = r1_sieved ? static_cast<const sieve_relation *>(&r1) : 0;
     const sieve_relation * sr2 = r2_sieved ? static_cast<const sieve_relation *>(&r2) : 0;
     if(r1_sieved) {
         m_result_inner_cols.append(sr1->m_inner_cols);
     }
     else {
         m_result_inner_cols.resize(r1.get_signature().size(), true);
     }
     if(r2_sieved) {
         m_result_inner_cols.append(sr2->m_inner_cols);
     }
     else {
         m_result_inner_cols.resize(m_result_inner_cols.size() + r2.get_signature().size(), true);
     }
 }
 virtual void get_labels(svector<symbol> & r) {
     buffer<symbol> tmp;
     ctx().get_relevant_labels(0, tmp);
     r.append(tmp.size(), tmp.c_ptr());            
 }
示例#3
0
 virtual void get_labels(svector<symbol> & r) {
     SASSERT(m_context);
     buffer<symbol> tmp;
     m_context->get_relevant_labels(0, tmp);
     r.append(tmp.size(), tmp.c_ptr());
 }