JAL-1807 still testing
[jalviewjs.git] / unused / 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 \r
10 import java.util.*;\r
11 \r
12 /** Implements "(?= )" and "(?! )" */\r
13 class lookAhead extends Or\r
14 {\r
15   boolean reverse;\r
16 \r
17   lookAhead(boolean b)\r
18   {\r
19     reverse = b;\r
20   }\r
21 \r
22   public Pattern getNext()\r
23   {\r
24     return null;\r
25   }\r
26 \r
27   public int nextMatch(int pos, Pthings pt)\r
28   {\r
29     Pattern p = super.getNext();\r
30     if (p != null)\r
31     {\r
32       return p.matchInternal(pos, pt);\r
33     }\r
34     else\r
35     {\r
36       return pos;\r
37     }\r
38   }\r
39 \r
40   public int matchInternal(int pos, Pthings pt)\r
41   {\r
42     if (super.matchInternal(pos, pt) >= 0)\r
43     {\r
44       if (reverse)\r
45       {\r
46         return -1;\r
47       }\r
48       else\r
49       {\r
50         return nextMatch(pos, pt);\r
51       }\r
52     }\r
53     else\r
54     {\r
55       if (reverse)\r
56       {\r
57         return nextMatch(pos, pt);\r
58       }\r
59       else\r
60       {\r
61         return -1;\r
62       }\r
63     }\r
64   }\r
65 \r
66   String leftForm()\r
67   {\r
68     if (reverse)\r
69     {\r
70       return "(?!";\r
71     }\r
72     else\r
73     {\r
74       return "(?=";\r
75     }\r
76   }\r
77 \r
78   public patInt minChars()\r
79   {\r
80     return new patInt(0);\r
81   }\r
82 \r
83   public patInt maxChars()\r
84   {\r
85     return new patInt(0);\r
86   }\r
87 \r
88   Pattern clone1(Hashtable h)\r
89   {\r
90     lookAhead la = new lookAhead(reverse);\r
91     h.put(this, la);\r
92     h.put(la, la);\r
93     for (int i = 0; i < v.size(); i++)\r
94     {\r
95       la.v.addElement(((Pattern) v.elementAt(i)).clone(h));\r
96     }\r
97     return la;\r
98   }\r
99 }\r