X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FOrMark.java;h=77aac0f9db4891c89f0e9af2aaa1a444d408cc75;hb=7bc226b58110fa26d9dbd3f0c78095d06909ffc3;hp=e9bf0cad0a81b8e0fc312cf303da0d8e9a3d2871;hpb=c40cf903f740a72ab63dd1abc10fa33450ce660d;p=jalview.git diff --git a/src/com/stevesoft/pat/OrMark.java b/src/com/stevesoft/pat/OrMark.java index e9bf0ca..77aac0f 100755 --- a/src/com/stevesoft/pat/OrMark.java +++ b/src/com/stevesoft/pat/OrMark.java @@ -6,46 +6,67 @@ // -- Happy Computing! // package com.stevesoft.pat; -import java.util.Hashtable; -import java.util.Vector; + +import java.util.*; /** Implements the parenthesis pattern subelement.*/ -class OrMark extends Or { - SubMark sm = new SubMark(); - int id; - OrMark(int i) { - sm.om = this; - id = i; +class OrMark + extends Or +{ + SubMark sm = new SubMark(); + int id; + OrMark(int i) + { + sm.om = this; + id = i; + } + + String leftForm() + { + return "("; + } + + public Pattern getNext() + { + return sm; + } + + public int matchInternal(int pos, Pthings pt) + { + sm.next = super.getNext(); + if (pt.marks == null) + { + int n2 = 2 * pt.nMarks + 2; + pt.marks = new int[n2]; + for (int i = 0; i < n2; i++) + { + pt.marks[i] = -1; + } } - String leftForm() { return "("; } - public Pattern getNext() { - return sm; + pt.marks[id] = pos; + int ret = super.matchInternal(pos, pt); + if (ret < 0) + { + pt.marks[id] = -1; } - public int matchInternal(int pos,Pthings pt) { - sm.next = super.getNext(); - if(pt.marks == null) { - int n2 = 2 * pt.nMarks+2; - pt.marks = new int[n2]; - for(int i=0;i pt.marks[id+pt.nMarks]) { - int swap = pt.marks[id]; - pt.marks[id] = pt.marks[id+pt.nMarks]+1; - pt.marks[id+pt.nMarks] = swap+1; - } - return ret; + else if (pt.marks[id] > pt.marks[id + pt.nMarks]) + { + int swap = pt.marks[id]; + pt.marks[id] = pt.marks[id + pt.nMarks] + 1; + pt.marks[id + pt.nMarks] = swap + 1; } - public Pattern clone1(Hashtable h) { - OrMark om = new OrMark(id); - h.put(om,om); - h.put(this,om); - for(int i=0;i