예제 #1
0
파일: search.c 프로젝트: justinzane/navit
void
search_list_search(struct search_list *this_, struct attr *search_attr, int partial)
{
	int level=-1;
	struct search_list_level *le;
	switch(search_attr->type) {
	case attr_country_all:
		level=0;
		break;
	case attr_town_name:
		level=1;
		break;
	case attr_street_name:
		level=2;
		break;
	default:
		break;
	}
	dbg(0,"level=%d\n", level);
	if (level != -1) {
		this_->level=level;
		le=&this_->levels[level];
		le->attr=*search_attr;
		le->attr.u.str=g_strdup(search_attr->u.str);
		search_list_search_free(this_, level);
		le->partial=partial;
		if (level > 0) {
			le=&this_->levels[level-1];
			le->curr=le->list;
		}
		dbg(1,"le=%p partial=%d\n", le, partial);
	}
}
예제 #2
0
void
search_list_search(struct search_list *this_, struct attr *search_attr, int partial)
{
	struct search_list_level *le;
	int level=search_list_level(search_attr->type);
	this_->item=NULL;
	interpolation_clear(&this_->inter);
	//dbg(0,"level=%d\n", level);
	if (level != -1) {
		this_->result.id=0;
		this_->level=level;
		le=&this_->levels[level];
		search_list_search_free(this_, level);
		le->attr=attr_dup(search_attr);
		le->partial=partial;
		if (level > 0) {
			le=&this_->levels[level-1];
			le->curr=le->list;
		}
		//dbg(0,"le=%p partial=%d\n", le, partial);
	} else if (search_attr->type == attr_postal) {
		g_free(this_->postal);
		this_->postal=g_strdup(search_attr->u.str);
	}
}