From: <sl...@us...> - 2013-07-14 21:08:15
|
Revision: 5549 http://sourceforge.net/p/navit/code/5549 Author: sleske Date: 2013-07-14 21:08:13 +0000 (Sun, 14 Jul 2013) Log Message: ----------- Refactor:core:Remove unused function search_list_get_unique and helpers. Modified Paths: -------------- trunk/navit/navit/search.c Modified: trunk/navit/navit/search.c =================================================================== --- trunk/navit/navit/search.c 2013-07-14 21:07:59 UTC (rev 5548) +++ trunk/navit/navit/search.c 2013-07-14 21:08:13 UTC (rev 5549) @@ -1013,137 +1013,6 @@ return 0; } -static char * -search_list_get_unique_truncate(char *common, char *result) -{ - dbg(1,"%s vs %s\n",common,result); - while (*common) { - if (g_utf8_get_char(common) != g_utf8_get_char(result)) { - dbg(1,"truncating at %s vs %s\n",common,result); - return common; - } - result=g_utf8_next_char(result); - common=g_utf8_next_char(common); - } - return common; -} - -static char * -search_list_get_unique_append(char *list, char *append) -{ - char *c=list; - int llen=list?strlen(list):0; - int len=g_utf8_next_char(append)-append; - gunichar a=g_utf8_get_char(append); - while(c && *c) { - if (g_utf8_get_char(c) == a) - return list; - c=g_utf8_next_char(c); - } - list=g_renew(char, list, llen+len+1); - strncpy(list+llen,append,len); - list[llen+len]='\0'; - return list; -} - -char * -search_list_get_unique(struct search_list *this_, char *unique) -{ - int level=this_->level; - struct search_list_level *le=&this_->levels[level]; - struct search_list_country *slc; - struct search_list_town *slt; - struct search_list_street *sls; - struct search_list_house_number *slh; - char *retf=NULL,*ret=NULL; - char *strings[4]={NULL,}; - char *search=g_utf8_casefold(unique?unique:le->attr->u.str,-1); - char *name,*max; - int search_len=strlen(search); - int i,count=sizeof(strings)/sizeof(char *); - GList *l; - - dbg(0,"enter level=%d %s %s\n",level,search,unique); - l=le->list; - while (l) { - switch (level) { - case 0: - slc=l->data; - strings[0]=g_strdup(slc->name); - strings[1]=g_strdup(slc->car); - strings[2]=g_strdup(slc->iso2); - strings[3]=g_strdup(slc->iso3); - break; - case 1: - slt=l->data; - name=slt->common.town_name; - for (i = 0 ; i < 3 ; i++) - strings[i]=linguistics_expand_special(name, i); - break; - case 2: - sls=l->data; - name=sls->name; - for (i = 0 ; i < 3 ; i++) - strings[i]=linguistics_expand_special(name, i); - break; - case 3: - slh=l->data; - name=slh->house_number; - for (i = 0 ; i < 3 ; i++) - strings[i]=linguistics_expand_special(name, i); - break; - default: - dbg(0,"entry\n"); - } - dbg(1,"entry %s %s %s %s\n",strings[0],strings[1],strings[2],strings[3]); - max=NULL; - for (i = 0 ; i < count ; i++) { - char *str=strings[i]; - while (str) { - char *strf=g_utf8_casefold(str,-1); - dbg(1,"word %s\n",strf); - if (!strncmp(strf, search, search_len)) { - dbg(1,"match\n"); - if (unique) { - dbg(1,"possible next %s %s ret %s\n",strf+search_len,str+search_len,ret); - ret=search_list_get_unique_append(ret, strf+search_len); - ret=search_list_get_unique_append(ret, str+search_len); - dbg(1,"ret now %s\n",ret); - } else { - if (!ret) { - ret=g_strdup(str); - retf=g_utf8_casefold(ret,-1); - dbg(1,"ret now %s\n",ret); - } else { - char *end=search_list_get_unique_truncate(retf,strf); - dbg(1,"%d characters\n",end-retf); - if (!max || max < end) - max=end; - } - } - } - g_free(strf); - str=linguistics_next_word(str); - } - g_free(strings[i]); - } - if (!unique) { - if (max) { - dbg(1,"max %s (%d characters)\n",max,max-retf); - ret[max-retf]='\0'; - } else { - dbg(1,"new max\n"); - } - } - dbg(1,"common %s\n",ret); - l=g_list_next(l); - } - g_free(search); - g_free(retf); - dbg(0,"return %s\n",ret); - return ret; -} - /** * @brief Get (next) result from a search. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |