Formatting
[jalview.git] / src / com / stevesoft / pat / DotMulti.java
index 514c161..4691728 100755 (executable)
 //    -- Happy Computing!\r
 //\r
 package com.stevesoft.pat;\r
-import java.util.Hashtable;\r
+\r
+import java.util.*;\r
 \r
 /** A special optimization of multi that is used when the\r
-  * common subpattern ".*" is encountered.\r
-  */\r
-class DotMulti extends PatternSub {\r
-    patInt fewestMatches,mostMatches;\r
-    public patInt minChars() {\r
-        return fewestMatches;\r
-    }\r
-    public patInt maxChars() {\r
-        return mostMatches;\r
-    }\r
-    public boolean matchFewest = false;\r
+ * common subpattern ".*" is encountered.\r
+ */\r
+class DotMulti\r
+    extends PatternSub\r
+{\r
+  patInt fewestMatches, mostMatches;\r
+  public patInt minChars()\r
+  {\r
+    return fewestMatches;\r
+  }\r
 \r
-    StringLike src=null;\r
-    int srclength=0;\r
-    boolean dotDoesntMatchCR=true;\r
-    DotMulti(patInt a,patInt b) {\r
-        fewestMatches = a;\r
-        mostMatches = b;\r
-    }\r
-    public String toString() {\r
-        return ".{"\r
-            +fewestMatches+","+mostMatches+"}"+\r
-            (matchFewest ? "?" : "")+"(?# <= dot multi)"+\r
-            nextString();\r
+  public patInt maxChars()\r
+  {\r
+    return mostMatches;\r
+  }\r
+\r
+  public boolean matchFewest = false;\r
+\r
+  StringLike src = null;\r
+  int srclength = 0;\r
+  boolean dotDoesntMatchCR = true;\r
+  DotMulti(patInt a, patInt b)\r
+  {\r
+    fewestMatches = a;\r
+    mostMatches = b;\r
+  }\r
+\r
+  public String toString()\r
+  {\r
+    return ".{"\r
+        + fewestMatches + "," + mostMatches + "}" +\r
+        (matchFewest ? "?" : "") + "(?# <= dot multi)" +\r
+        nextString();\r
+  }\r
+\r
+  final int submatchInternal(int pos, Pthings pt)\r
+  {\r
+    if (pos < srclength)\r
+    {\r
+      if (dotDoesntMatchCR)\r
+      {\r
+        if (src.charAt(pos) != '\n')\r
+        {\r
+          return 1 + pos;\r
+        }\r
+      }\r
+      else\r
+      {\r
+        return 1 + pos;\r
+      }\r
     }\r
-    final int submatchInternal(int pos,Pthings pt) {\r
-        if(pos < srclength) {\r
-            if(dotDoesntMatchCR) {\r
-                if(src.charAt(pos) != '\n')\r
-                    return 1+pos;\r
-            } else return 1+pos;\r
+    return -1;\r
+  }\r
+\r
+  final static int step = 1;\r
+  static int idcount = 1;\r
+  public int matchInternal(int pos, Pthings pt)\r
+  {\r
+    int m = -1;\r
+    int i = pos;\r
+    src = pt.src;\r
+    srclength = src.length();\r
+    dotDoesntMatchCR = pt.dotDoesntMatchCR;\r
+    if (matchFewest)\r
+    {\r
+      int nMatches = 0;\r
+      while (fewestMatches.intValue() > nMatches)\r
+      {\r
+        i = submatchInternal(i, pt);\r
+        if (i < 0)\r
+        {\r
+          return -1;\r
         }\r
+        nMatches++;\r
+      }\r
+      if (i < 0)\r
+      {\r
         return -1;\r
-    }\r
-    final static int step = 1;\r
-    static int idcount = 1;\r
-    public int matchInternal(int pos,Pthings pt) {\r
-        int m=-1;\r
-        int i=pos;\r
-        src = pt.src;\r
-        srclength = src.length();\r
-        dotDoesntMatchCR = pt.dotDoesntMatchCR;\r
-        if(matchFewest) {\r
-            int nMatches = 0;\r
-            while(fewestMatches.intValue() > nMatches) {\r
-                i=submatchInternal(i,pt);\r
-                if(i<0) return -1;\r
-                nMatches++;\r
-            }\r
-            if(i<0) return -1;\r
-            int ii = nextMatch(i,pt);\r
-            if(ii >= 0) return ii;\r
-            if(!mostMatches.finite()) {\r
-                while(i >= 0) {\r
-                    i = submatchInternal(i,pt);\r
-                    if(i < 0) return -1;\r
-                    ii = nextMatch(i,pt);\r
-                    if(ii >= 0) return ii;\r
-                }\r
-            } else {\r
-                while(i > 0) {\r
-                    i = submatchInternal(i,pt);\r
-                    if(i < 0) return -1;\r
-                    nMatches++;\r
-                    if(nMatches > mostMatches.intValue())\r
-                        return -1;\r
-                    ii = nextMatch(i,pt);\r
-                    if(ii >= 0) return ii;\r
-                }\r
-            }\r
+      }\r
+      int ii = nextMatch(i, pt);\r
+      if (ii >= 0)\r
+      {\r
+        return ii;\r
+      }\r
+      if (!mostMatches.finite())\r
+      {\r
+        while (i >= 0)\r
+        {\r
+          i = submatchInternal(i, pt);\r
+          if (i < 0)\r
+          {\r
             return -1;\r
+          }\r
+          ii = nextMatch(i, pt);\r
+          if (ii >= 0)\r
+          {\r
+            return ii;\r
+          }\r
         }\r
-        int nMatches = 0;\r
-        while(fewestMatches.intValue() > nMatches) {\r
-            i=submatchInternal(i,pt);\r
-            if(i >= 0)\r
-                nMatches++;\r
-            else\r
-                return -1;\r
+      }\r
+      else\r
+      {\r
+        while (i > 0)\r
+        {\r
+          i = submatchInternal(i, pt);\r
+          if (i < 0)\r
+          {\r
+            return -1;\r
+          }\r
+          nMatches++;\r
+          if (nMatches > mostMatches.intValue())\r
+          {\r
+            return -1;\r
+          }\r
+          ii = nextMatch(i, pt);\r
+          if (ii >= 0)\r
+          {\r
+            return ii;\r
+          }\r
         }\r
-        m=i;\r
-        if(mostMatches.finite()) {\r
-            while(nMatches < mostMatches.intValue()) {\r
-                i = submatchInternal(i,pt);\r
-                if(i>=0) {\r
-                    m=i;\r
-                    nMatches++;\r
-                } else break;\r
-            }\r
-        } else {\r
-            while(true) {\r
-                i = submatchInternal(i,pt);\r
-                if(i>=0) {\r
-                    m=i;\r
-                    nMatches++;\r
-                } else break;\r
-            }\r
+      }\r
+      return -1;\r
+    }\r
+    int nMatches = 0;\r
+    while (fewestMatches.intValue() > nMatches)\r
+    {\r
+      i = submatchInternal(i, pt);\r
+      if (i >= 0)\r
+      {\r
+        nMatches++;\r
+      }\r
+      else\r
+      {\r
+        return -1;\r
+      }\r
+    }\r
+    m = i;\r
+    if (mostMatches.finite())\r
+    {\r
+      while (nMatches < mostMatches.intValue())\r
+      {\r
+        i = submatchInternal(i, pt);\r
+        if (i >= 0)\r
+        {\r
+          m = i;\r
+          nMatches++;\r
         }\r
-        while(m >= pos) {\r
-            int r=nextMatch(m,pt);\r
-            if(r >= 0) return r;\r
-            m -= step;\r
-            nMatches--;\r
-            if(nMatches < fewestMatches.intValue())\r
-                return -1;\r
+        else\r
+        {\r
+          break;\r
         }\r
-        return -1;\r
+      }\r
     }\r
-    Pattern clone1(Hashtable h) {\r
-        DotMulti dm = new DotMulti(fewestMatches,mostMatches);\r
-        dm.matchFewest = matchFewest;\r
-        return dm;\r
+    else\r
+    {\r
+      while (true)\r
+      {\r
+        i = submatchInternal(i, pt);\r
+        if (i >= 0)\r
+        {\r
+          m = i;\r
+          nMatches++;\r
+        }\r
+        else\r
+        {\r
+          break;\r
+        }\r
+      }\r
     }\r
+    while (m >= pos)\r
+    {\r
+      int r = nextMatch(m, pt);\r
+      if (r >= 0)\r
+      {\r
+        return r;\r
+      }\r
+      m -= step;\r
+      nMatches--;\r
+      if (nMatches < fewestMatches.intValue())\r
+      {\r
+        return -1;\r
+      }\r
+    }\r
+    return -1;\r
+  }\r
+\r
+  Pattern clone1(Hashtable h)\r
+  {\r
+    DotMulti dm = new DotMulti(fewestMatches, mostMatches);\r
+    dm.matchFewest = matchFewest;\r
+    return dm;\r
+  }\r
 }\r