9f60179bb13030c3020656ef66ba52e9799a2e9d
[jalview.git] / src / com / stevesoft / pat / Bracket.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.Vector;\r
10 import java.util.Hashtable;\r
11 \r
12 /** The Bracket is a form of the Or class,\r
13  implements the pattern element [  ]. */\r
14 class Bracket extends Or {\r
15     boolean neg;\r
16     Bracket(boolean n) { neg = n; }\r
17     String leftForm() {\r
18         if(neg)\r
19             return "[^";\r
20         else\r
21             return "[";\r
22     }\r
23     String rightForm() { return "]"; }\r
24     String sepForm() { return ""; }\r
25     public int matchInternal(int pos,Pthings pt) {\r
26         if(pos >= pt.src.length()) return -1;\r
27         int r = super.matchInternal(pos,pt);\r
28         if((neg && r<0)||(!neg && r>=0))\r
29             return nextMatch(pos+1,pt);\r
30         return -1;\r
31     }\r
32     public patInt minChars() { return new patInt(1); }\r
33     public patInt maxChars() { return new patInt(1); }\r
34 \r
35     public Or addOr(Pattern p) {\r
36         pv = null;\r
37         v.addElement(p);\r
38         p.setParent(null);\r
39         return this;\r
40     }\r
41     public Pattern clone1(Hashtable h) {\r
42         Bracket b = new Bracket(neg);\r
43         b.v = new Vector();\r
44         for(int i=0;i<v.size();i++)\r
45             b.v.addElement( ((Pattern)v.elementAt(i)).clone1(h) );\r
46         return b;\r
47     }\r
48 };\r