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); } }
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); } }