void cpp_from_isl::process_node(isl_ast_node *node) { auto type = isl_ast_node_get_type(node); switch(type) { case isl_ast_node_for: process_for(node); break; case isl_ast_node_if: process_if(node); break; case isl_ast_node_block: process_block(node); break; case isl_ast_node_user: process_user(node); break; case isl_ast_node_mark: { // TODO: label the stmt? auto marked_node = isl_ast_node_mark_get_node(node); process_node(marked_node); isl_ast_node_free(marked_node); break; } default: throw error("Unexpected AST node type."); } }
static void process_dense(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__DenseNodes *dense, struct maptool_osm *osm) { int i,j=0,has_tags; long long id=0,lat=0,lon=0,changeset=0,timestamp=0; int user_sid=0,uid=0; if (!dense) return; for (i = 0 ; i < dense->n_id ; i++) { id+=dense->id[i]; lat+=dense->lat[i]; lon+=dense->lon[i]; changeset+=dense->denseinfo->changeset[i]; user_sid+=dense->denseinfo->user_sid[i]; uid+=dense->denseinfo->uid[i]; timestamp+=dense->denseinfo->timestamp[i]; has_tags=dense->keys_vals && dense->keys_vals[j]; osm_add_node(id, lat/latlon_scale,lon/latlon_scale); #if 0 printf("\t<node id=\"%Ld\" lat=\"%.7f\" lon=\"%.7f\" version=\"%d\" changeset=\"%Ld\"",id,lat/latlon_scale,lon/latlon_scale,dense->denseinfo->version[i],changeset); process_user(primitive_block, user_sid, uid, 0); process_timestamp(timestamp); #endif if (has_tags) { #if 0 printf(">\n"); #endif while (dense->keys_vals[j]) { process_tag(primitive_block, dense->keys_vals[j], dense->keys_vals[j+1]); j+=2; } #if 0 printf("\t</node>\n"); } else printf("/>\n"); #else } #endif osm_end_node(osm); j++; }
/* processData: send data to designated function */ void TwitchBot::process_data(char *data) { if (strstr(data, "PRIVMSG")) { process_privmsg(data); } else if (strstr(data, "PING")) { pong(&client, data); } else if (strstr(data, "353")) { extract_names_list(data); } else if (strstr(data, "JOIN") || strstr(data, "PART")) { process_user(data); } else if (strstr(data, "USERNOTICE")) { process_resub(data); } else if (strstr(data, "Error log") || strstr(data, "Login unsuccess")) { disconnect(); fprintf(stderr, "\nCould not login to Twitch IRC.\nMake sure " "%s is configured correctly\n", utils::config("config").c_str()); WAIT_INPUT(); } }
/** * Process user input * This function only looks at a single character typed at a time. * Once it sees a newline character it will then call process_user * to process the user input */ int handle_user(){ refresh(); int c = getch(); if(c == ERR){ return 0; } switch(c){ case '\n': if(process_user(buffer) != 0){ return 1; } buffer_pos = 0; break; case KEY_F(4): close_interface(); exit(0); case KEY_F(1): case KEY_F(2): case KEY_F(3): case KEY_F(5): case KEY_F(6): case KEY_F(7): case KEY_F(8): case KEY_F(9): case KEY_F(10): case KEY_F(11): case KEY_F(12): break; case KEY_UP: case KEY_DOWN: break; case KEY_LEFT: break; case KEY_RIGHT: break; case KEY_BACKSPACE: case KEY_DC: // delete the current character buffer[buffer_pos] = 0; buffer_pos --; // sanity check if(buffer_pos < 0){ buffer_pos = 0; } buffer[buffer_pos] = 0; // ugly hack to clear the line, we rebuild the window >.< destroy_win(windows[INPUT_WIN]); windows[INPUT_WIN] = create_newwin(4, COLS, LINES-4, 0); print_prompt(windows[INPUT_WIN]); wprintw(windows[INPUT_WIN],"%s",buffer); wrefresh(windows[INPUT_WIN]); break; default: buffer[buffer_pos++] = (char)c; wprintw(windows[INPUT_WIN],"%c",c); wrefresh(windows[INPUT_WIN]); } return 0; }