merge from 2_4_Release branch
[jalview.git] / src / com / stevesoft / pat / Or.java
index 05981aa..8d405e5 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\r
-    extends Pattern\r
-{\r
-  Vector v;\r
-  Pattern[] pv = null;\r
-  Or()\r
-  {\r
-    v = new Vector();\r
-  }\r
-\r
-  String leftForm()\r
-  {\r
-    return "(?:";\r
-  }\r
-\r
-  String rightForm()\r
-  {\r
-    return ")";\r
-  }\r
-\r
-  String sepForm()\r
-  {\r
-    return "|";\r
-  }\r
-\r
-  public Or addOr(Pattern p)\r
-  {\r
-    pv = null;\r
-    v.addElement(p);\r
-    p.setParent(this);\r
-    return this;\r
-  }\r
-\r
-  public String toString()\r
-  {\r
-    int i;\r
-    StringBuffer sb = new StringBuffer();\r
-    sb.append(leftForm());\r
-    if (v.size() > 0)\r
-    {\r
-      sb.append( ( (Pattern) v.elementAt(0)).toString());\r
-    }\r
-    for (i = 1; i < v.size(); i++)\r
-    {\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
-\r
-  public int matchInternal(int pos, Pthings pt)\r
-  {\r
-    if (pv == null)\r
-    {\r
-      pv = new Pattern[v.size()];\r
-      v.copyInto(pv);\r
-    }\r
-    for (int i = 0; i < v.size(); i++)\r
-    {\r
-      Pattern p = pv[i]; //(Pattern)v.elementAt(i);\r
-      int r = p.matchInternal(pos, pt);\r
-      if (r >= 0)\r
-      {\r
-        return r;\r
-      }\r
-    }\r
-    return -1;\r
-  }\r
-\r
-  public patInt minChars()\r
-  {\r
-    if (v.size() == 0)\r
-    {\r
-      return new patInt(0);\r
-    }\r
-    patInt m = ( (Pattern) v.elementAt(0)).countMinChars();\r
-    for (int i = 1; i < v.size(); i++)\r
-    {\r
-      Pattern p = (Pattern) v.elementAt(i);\r
-      m.mineq(p.countMinChars());\r
-    }\r
-    return m;\r
-  }\r
-\r
-  public patInt maxChars()\r
-  {\r
-    if (v.size() == 0)\r
-    {\r
-      return new patInt(0);\r
-    }\r
-    patInt m = ( (Pattern) v.elementAt(0)).countMaxChars();\r
-    for (int i = 1; i < v.size(); i++)\r
-    {\r
-      Pattern p = (Pattern) v.elementAt(i);\r
-      m.maxeq(p.countMaxChars());\r
-    }\r
-    return m;\r
-  }\r
-\r
-  Pattern clone1(Hashtable h)\r
-  {\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
-    {\r
-      o.v.addElement( ( (Pattern) v.elementAt(i)).clone(h));\r
-    }\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.*;
+
+/**
+ * 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;
+  }
+};