JAL-3789 Use j2s.config.altfileproperty in .j2s for alternative temporary build/jalvi...
[jalview.git] / src / com / stevesoft / pat / Or.java
index 9791c74..d5ee673 100755 (executable)
-//\r
-// This software is now distributed according to\r
-// the Lesser Gnu Public License.  Please see\r
-// http://www.gnu.org/copyleft/lesser.txt for\r
-// the details.\r
-//    -- Happy Computing!\r
-//\r
-package com.stevesoft.pat;\r
-\r
-import java.util.*;\r
-\r
-/** This class implements the (?: ... ) extended Pattern.\r
- It provides a base class from which we derive the\r
- [ ... ], ( ... ), (?! ... ), and (?= ... ) patterns. */\r
-class Or extends Pattern {\r
-    Vector v;\r
-    Pattern[] pv = null;\r
-    Or() { v = new Vector(); }\r
-    String leftForm() { return "(?:"; }\r
-    String rightForm() { return ")"; }\r
-    String sepForm() { return "|"; }\r
-    public Or addOr(Pattern p) {\r
-        pv = null;\r
-        v.addElement(p);\r
-        p.setParent(this);\r
-        return this;\r
-    }\r
-    public String toString() {\r
-        int i;\r
-        StringBuffer sb = new StringBuffer();\r
-        sb.append(leftForm());\r
-        if(v.size()>0)\r
-            sb.append( ((Pattern)v.elementAt(0)).toString() );\r
-        for(i=1;i<v.size();i++) {\r
-            sb.append(sepForm());\r
-            sb.append( ((Pattern)v.elementAt(i)).toString() );\r
-        }\r
-        sb.append(rightForm());\r
-        sb.append(nextString());\r
-        return sb.toString();\r
-    }\r
-    public int matchInternal(int pos,Pthings pt) {\r
-        if(pv == null) {\r
-            pv = new Pattern[v.size()];\r
-            v.copyInto(pv);\r
-        }\r
-        for(int i=0;i<v.size();i++) {\r
-            Pattern p = pv[i];//(Pattern)v.elementAt(i);\r
-            int r = p.matchInternal(pos,pt);\r
-            if(r >= 0)\r
-                return r;\r
-        }\r
-        return -1;\r
-    }\r
-    public patInt minChars() {\r
-        if(v.size()==0) return new patInt(0);\r
-        patInt m = ((Pattern)v.elementAt(0)).countMinChars();\r
-        for(int i=1;i<v.size();i++) {\r
-            Pattern p = (Pattern)v.elementAt(i);\r
-            m.mineq(p.countMinChars());\r
-        }\r
-        return m;\r
-    }\r
-    public patInt maxChars() {\r
-        if(v.size()==0) return new patInt(0);\r
-        patInt m = ((Pattern)v.elementAt(0)).countMaxChars();\r
-        for(int i=1;i<v.size();i++) {\r
-            Pattern p = (Pattern)v.elementAt(i);\r
-            m.maxeq(p.countMaxChars());\r
-        }\r
-        return m;\r
-    }\r
-    Pattern clone1(Hashtable h) {\r
-        Or o=new Or();\r
-        h.put(this,o);\r
-        h.put(o,o);\r
-        for(int i=0;i<v.size();i++)\r
-            o.v.addElement( ((Pattern)v.elementAt(i)).clone(h) );\r
-        return o;\r
-    }\r
-};\r
+//
+// 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.Hashtable;
+import java.util.Vector;
+
+/**
+ * This class implements the (?: ... ) extended Pattern. It provides a base
+ * class from which we derive the [ ... ], ( ... ), (?! ... ), and (?= ... )
+ * patterns.
+ */
+class Or extends Pattern
+{
+  Vector v;
+
+  Pattern[] pv = null;
+
+  Or()
+  {
+    v = new Vector();
+  }
+
+  String leftForm()
+  {
+    return "(?:";
+  }
+
+  String rightForm()
+  {
+    return ")";
+  }
+
+  String sepForm()
+  {
+    return "|";
+  }
+
+  public Or addOr(Pattern p)
+  {
+    pv = null;
+    v.addElement(p);
+    p.setParent(this);
+    return this;
+  }
+
+  public String toString()
+  {
+    int i;
+    StringBuffer sb = new StringBuffer();
+    sb.append(leftForm());
+    if (v.size() > 0)
+    {
+      sb.append(((Pattern) v.elementAt(0)).toString());
+    }
+    for (i = 1; i < v.size(); i++)
+    {
+      sb.append(sepForm());
+      sb.append(((Pattern) v.elementAt(i)).toString());
+    }
+    sb.append(rightForm());
+    sb.append(nextString());
+    return sb.toString();
+  }
+
+  public int matchInternal(int pos, Pthings pt)
+  {
+    if (pv == null)
+    {
+      pv = new Pattern[v.size()];
+      v.copyInto(pv);
+    }
+    for (int i = 0; i < v.size(); i++)
+    {
+      Pattern p = pv[i]; // (Pattern)v.elementAt(i);
+      int r = p.matchInternal(pos, pt);
+      if (r >= 0)
+      {
+        return r;
+      }
+    }
+    return -1;
+  }
+
+  public patInt minChars()
+  {
+    if (v.size() == 0)
+    {
+      return new patInt(0);
+    }
+    patInt m = ((Pattern) v.elementAt(0)).countMinChars();
+    for (int i = 1; i < v.size(); i++)
+    {
+      Pattern p = (Pattern) v.elementAt(i);
+      m.mineq(p.countMinChars());
+    }
+    return m;
+  }
+
+  public patInt maxChars()
+  {
+    if (v.size() == 0)
+    {
+      return new patInt(0);
+    }
+    patInt m = ((Pattern) v.elementAt(0)).countMaxChars();
+    for (int i = 1; i < v.size(); i++)
+    {
+      Pattern p = (Pattern) v.elementAt(i);
+      m.maxeq(p.countMaxChars());
+    }
+    return m;
+  }
+
+  Pattern clone1(Hashtable h)
+  {
+    Or o = new Or();
+    h.put(this, o);
+    h.put(o, o);
+    for (int i = 0; i < v.size(); i++)
+    {
+      o.v.addElement(((Pattern) v.elementAt(i)).clone(h));
+    }
+    return o;
+  }
+};