Graphical bits moved into files to save jar size
[jalview.git] / src / com / stevesoft / pat / lookAhead.java
1 //\r
2 // This software is now distributed according to\r
3 // the Lesser Gnu Public License.  Please see\r
4 // http://www.gnu.org/copyleft/lesser.txt for\r
5 // the details.\r
6 //    -- Happy Computing!\r
7 //\r
8 package com.stevesoft.pat;\r
9 import java.util.Hashtable;\r
10 \r
11 /** Implements "(?=  )" and "(?! )" */\r
12 class lookAhead extends Or {\r
13     boolean reverse;\r
14     lookAhead(boolean b) { reverse = b; }\r
15     public Pattern getNext() { return null; }\r
16     public int nextMatch(int pos,Pthings pt) {\r
17         Pattern p = super.getNext();\r
18         if(p != null) return p.matchInternal(pos,pt);\r
19         else return pos;\r
20     }\r
21     public int matchInternal(int pos,Pthings pt) {\r
22         if(super.matchInternal(pos,pt) >= 0) {\r
23             if(reverse) return -1;\r
24             else return nextMatch(pos,pt);\r
25         } else {\r
26             if(reverse) return nextMatch(pos,pt);\r
27             else return -1;\r
28         }\r
29     }\r
30     String leftForm() {\r
31         if(reverse)\r
32             return "(?!";\r
33         else\r
34             return "(?=";\r
35     }\r
36     public patInt minChars() { return new patInt(0); }\r
37     public patInt maxChars() { return new patInt(0); }\r
38     Pattern clone1(Hashtable h) {\r
39         lookAhead la=new lookAhead(reverse);\r
40         h.put(this,la);\r
41         h.put(la,la);\r
42         for(int i=0;i<v.size();i++)\r
43             la.v.addElement( ((Pattern)v.elementAt(i)).clone(h) );\r
44         return la;\r
45     }\r
46 }\r