Beispiel #1
0
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.");
    }
}
Beispiel #2
0
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++;
	}
Beispiel #3
0
/* 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();
	}
}
Beispiel #4
0
/**
 * 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;

}