+ if (c2 != '-')
+ {
+ pdbpos++;
+ }
+
+ if (allowmismatch || c1 == c2)
+ {
+ lastmatch = true;
+ // extend mapping interval.
+ if (lp1 + 1 != alignpos || lp2+1 !=pdbpos)
+ {
+ as1.add(Integer.valueOf(alignpos));
+ as2.add(Integer.valueOf(pdbpos));
+ }
+ lp1 = alignpos;
+ lp2 = pdbpos;
+ }
+ else
+ {
+ lastmatch = false;
+ }
+ }
+ // construct range pairs
+ int[] mapseq1 = new int[as1.size() + (lastmatch ? 1 : 0)], mapseq2 = new int[as2
+ .size() + (lastmatch ? 1 : 0)];
+ int i = 0;
+ for (Integer ip : as1)
+ {
+ mapseq1[i++] = ip;
+ }
+ ;
+ i = 0;
+ for (Integer ip : as2)
+ {
+ mapseq2[i++] = ip;
+ }
+ ;
+ if (lastmatch)
+ {
+ mapseq1[mapseq1.length - 1] = alignpos;
+ mapseq2[mapseq2.length - 1] = pdbpos;
+ }
+ MapList map = new MapList(mapseq1, mapseq2, 1, 1);
+
+ jalview.datamodel.Mapping mapping = new Mapping(map);
+ mapping.setTo(s2);
+ return mapping;
+ }
+
+ /**