static int has_groupby(sql_rel *rel) { if (rel->op == op_groupby) return 1; if (is_join(rel->op)) return has_groupby(rel->l) || has_groupby(rel->r); if ((is_select(rel->op) || is_project(rel->op)) && rel->l) return has_groupby(rel->l); return 0; }
void theory_array_full::add_map(theory_var v, enode* s) { if (m_params.m_array_cg && !s->is_cgr()) { return; } SASSERT(is_map(s)); v = find(v); var_data_full * d_full = m_var_data_full[v]; var_data * d = m_var_data[v]; // // TODO: defaulting to exhaustive up-propagation. // instead apply stratified filter. set_prop_upward(v,d); d_full->m_maps.push_back(s); m_trail_stack.push(push_back_trail<theory_array, enode *, false>(d_full->m_maps)); ptr_vector<enode>::iterator it = d->m_parent_selects.begin(); ptr_vector<enode>::iterator end = d->m_parent_selects.end(); for (; it != end; ++it) { SASSERT(is_select(*it)); instantiate_select_map_axiom(*it, s); } set_prop_upward(s); }
unsigned GetA::detect_key() { if( !enable_flag ) return 0; err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); if( mouse.is_key_event() ) { unsigned keyCode = mouse.key_code; unsigned shiftPressed = mouse.event_skey_state & SHIFT_KEY_MASK; // printable character if( keyCode >= ' ' && keyCode <= 0xff ) { if( strlen(input_field)-(mark_end() - mark_begin()) < field_len) { // insert character memmove( input_field+mark_begin()+1, input_field+mark_end(), strlen(input_field)-mark_end()+1); input_field[mark_begin()] = keyCode; cursor_pos = mark_begin()+1; clear_select(); } err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } else if( keyCode == KEY_DEL ) { if( is_select() ) { err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); // erase selected area memmove( input_field+mark_begin(), input_field+mark_end(), strlen(input_field)-mark_end()+1); cursor_pos = mark_begin(); clear_select(); } else { if(strlen(input_field) > cursor_pos) { err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); memmove( input_field+cursor_pos, input_field+cursor_pos+1, strlen(input_field)-cursor_pos); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); } } err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } else if( keyCode == KEY_BACK_SPACE ) { if( is_select() ) { err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); // erase selected area memmove( input_field+mark_begin(), input_field+mark_end(), strlen(input_field)-mark_end()+1); cursor_pos = mark_begin(); clear_select(); } else { if(cursor_pos > 0) { err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); memmove( input_field+cursor_pos-1, input_field+cursor_pos, strlen(input_field)-cursor_pos+1); cursor_pos--; err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); clear_select(); } } err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } if( keyCode == KEY_LEFT ) { if(cursor_pos > 0) cursor_pos--; if( !shiftPressed ) clear_select(); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } if( keyCode == KEY_RIGHT ) { if(cursor_pos < strlen(input_field)) cursor_pos++; if( !shiftPressed ) clear_select(); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } if( keyCode == KEY_HOME) { cursor_pos = 0; if( !shiftPressed ) clear_select(); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } if( keyCode == KEY_END) { cursor_pos = strlen(input_field); if( !shiftPressed ) clear_select(); err_when( cursor_pos < 0 || cursor_pos > strlen(input_field) ); err_when( mark_cursor_pos < 0 || mark_cursor_pos > strlen(input_field) ); return keyCode; } if( esc_key_flag && keyCode == KEY_ESC ) { // if esc_key_flag is 0 and ESC key pressed, still return 0 clear(); return keyCode; } if( keyCode == KEY_RETURN || keyCode == KEY_UP || keyCode == KEY_DOWN || keyCode == KEY_TAB ) { return keyCode; } } return 0; }