X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FBackMatch.java;fp=src%2Fcom%2Fstevesoft%2Fpat%2FBackMatch.java;h=1b166e9f194239217f8a42c763b7d9540b48c5f1;hb=506d60f0e188723ddc91c26824b41ac7034df3fe;hp=2eed23bb1dbf951809ab6f433537b1ea490901ad;hpb=60f2d6c034560415fd0139c8bc7df0c19cae1186;p=jalview.git diff --git a/src/com/stevesoft/pat/BackMatch.java b/src/com/stevesoft/pat/BackMatch.java index 2eed23b..1b166e9 100755 --- a/src/com/stevesoft/pat/BackMatch.java +++ b/src/com/stevesoft/pat/BackMatch.java @@ -1,57 +1,57 @@ -// -// This software is now distributed according to -// the Lesser Gnu Public License. Please see -// http://www.gnu.org/copyleft/lesser.txt for -// the details. -// -- Happy Computing! -// -package com.stevesoft.pat; - -import java.util.*; - -/** Provides the ability to match a backreference from within - * a Pattern. - */ -class BackMatch - extends Pattern -{ - int id; - BackMatch(int id) - { - this.id = id; - } - - public String toString() - { - return "\\" + (id) + nextString(); - } - - public int matchInternal(int pos, Pthings p) - { - int i1 = p.marks[id]; - int i2 = p.marks[id + p.nMarks]; - int imax = i2 - i1; - if (i1 < 0 || imax < 0 || pos + imax > p.src.length()) - { - return -1; - } - int ns = p.src.length() - pos; - if (imax < ns) - { - ns = imax; - } - for (int i = 0; i < ns; i++) - { - if (p.src.charAt(i + i1) != p.src.charAt(pos + i)) - { - return -1; - } - } - return nextMatch(pos + imax, p); - } - - Pattern clone1(Hashtable h) - { - return new BackMatch(id); - } -} +// +// This software is now distributed according to +// the Lesser Gnu Public License. Please see +// http://www.gnu.org/copyleft/lesser.txt for +// the details. +// -- Happy Computing! +// +package com.stevesoft.pat; + +import java.util.*; + +/** + * Provides the ability to match a backreference from within a Pattern. + */ +class BackMatch extends Pattern +{ + int id; + + BackMatch(int id) + { + this.id = id; + } + + public String toString() + { + return "\\" + (id) + nextString(); + } + + public int matchInternal(int pos, Pthings p) + { + int i1 = p.marks[id]; + int i2 = p.marks[id + p.nMarks]; + int imax = i2 - i1; + if (i1 < 0 || imax < 0 || pos + imax > p.src.length()) + { + return -1; + } + int ns = p.src.length() - pos; + if (imax < ns) + { + ns = imax; + } + for (int i = 0; i < ns; i++) + { + if (p.src.charAt(i + i1) != p.src.charAt(pos + i)) + { + return -1; + } + } + return nextMatch(pos + imax, p); + } + + Pattern clone1(Hashtable h) + { + return new BackMatch(id); + } +}