PangoMap *map = info->map;
PangoliteMap *map = info->map;
map_add_engine(PangoMapInfo *info, PangoEnginePair *pair){  int      i, j, submap;  PangoMap *map = info->map;   for (i=0; i<pair->info.n_ranges; i++) {    gchar    **langs;    gboolean is_exact = FALSE;        if (pair->info.ranges[i].langs) {      langs = g_strsplit(pair->info.ranges[i].langs, ";", -1);      for (j=0; langs[j]; j++)        if (strcmp(langs[j], "*") == 0 || strcmp(langs[j], info->lang) == 0) {          is_exact = TRUE;          break;	      }      g_strfreev(langs);    }        for (submap = pair->info.ranges[i].start / 256;         submap <= pair->info.ranges[i].end / 256; submap ++) {      gunichar start;      gunichar end;            if (submap == pair->info.ranges[i].start / 256)        start = pair->info.ranges[i].start % 256;      else        start = 0;            if (submap == pair->info.ranges[i].end / 256)        end = pair->info.ranges[i].end % 256;      else        end = 255;            if (map->submaps[submap].is_leaf && start == 0 && end == 255) {        set_entry(&map->submaps[submap].d.entry, is_exact, &pair->info);	    }      else {	      if (map->submaps[submap].is_leaf) {          map->submaps[submap].is_leaf = FALSE;          map->submaps[submap].d.leaves = g_new(PangoMapEntry, 256);          for (j=0; j<256; j++) {            map->submaps[submap].d.leaves[j].info = NULL;            map->submaps[submap].d.leaves[j].is_exact = FALSE;          }        }	      	      for (j=start; j<=end; j++)          set_entry(&map->submaps[submap].d.leaves[j], is_exact, &pair->info);	    }    }  }}