merge from 2_4_Release branch
[jalview.git] / src / com / stevesoft / pat / StrPos.java
index d9383dd..1f08e31 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
-/**\r
-        Shareware: package pat\r
-   <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>\r
- */\r
-/**\r
- StrPos is used internally by regex to parse the regular expression. */\r
-public class StrPos\r
-{\r
-  String s;\r
-  int pos;\r
-  /** Return the position in the string pointed to */\r
-  public int pos()\r
-  {\r
-    return pos;\r
-  }\r
-\r
-  /** This contains the escape character, which is \ by default. */\r
-  public char esc = Pattern.ESC;\r
-  char c;\r
-  /** Returns the current, possibly escaped, character. */\r
-  public char thisChar()\r
-  {\r
-    return c;\r
-  }\r
-\r
-  boolean dontMatch, eos;\r
-\r
-  /** tell whether we are at end of string */\r
-  public boolean eos()\r
-  {\r
-    return eos;\r
-  }\r
-\r
-  /** initialize a StrPos from another StrPos. */\r
-  public StrPos(StrPos sp)\r
-  {\r
-    dup(sp);\r
-  }\r
-\r
-  /** copy a StrPos from sp to this. */\r
-  public void dup(StrPos sp)\r
-  {\r
-    s = sp.s;\r
-    pos = sp.pos;\r
-    c = sp.c;\r
-    dontMatch = sp.dontMatch;\r
-    eos = sp.eos;\r
-  }\r
-\r
-  /** Initialize a StrPos by giving it a String, and a\r
-       position within the String. */\r
-  public StrPos(String s, int pos)\r
-  {\r
-    this.s = s;\r
-    this.pos = pos - 1;\r
-    inc();\r
-  }\r
-\r
-  /** Advance the place where StrPos points within the String.\r
-       Counts a backslash as part of the next character. */\r
-  public StrPos inc()\r
-  {\r
-    pos++;\r
-    if (pos >= s.length())\r
-    {\r
-      eos = true;\r
-      return this;\r
-    }\r
-    eos = false;\r
-    c = s.charAt(pos);\r
-    if (c == esc && pos + 1 < s.length())\r
-    {\r
-      pos++;\r
-      c = s.charAt(pos);\r
-      if (c != esc)\r
-      {\r
-        dontMatch = true;\r
-      }\r
-      else\r
-      {\r
-        dontMatch = false;\r
-      }\r
-    }\r
-    else\r
-    {\r
-      dontMatch = false;\r
-    }\r
-    return this;\r
-  }\r
-\r
-  /** Compare the (possibly escaped) character\r
-       pointed to by StrPos.  Return true if they are the\r
-       same, but lways return if character pointed to is escaped. */\r
-  public boolean match(char ch)\r
-  {\r
-    if (dontMatch || eos)\r
-    {\r
-      return false;\r
-    }\r
-    return c == ch;\r
-  }\r
-\r
-  /** As match, but only matches if the character is escaped. */\r
-  public boolean escMatch(char ch)\r
-  {\r
-    if (!dontMatch || eos)\r
-    {\r
-      return false;\r
-    }\r
-    return c == ch;\r
-  }\r
-\r
-  /** Returns true if the current\r
-      character is escaped (preceeded by "\"). */\r
-  public boolean escaped()\r
-  {\r
-    return dontMatch;\r
-  }\r
-\r
-  /** Increment the string pointer by each character in\r
-       <pre>st</pre> that matches a non-escaped\r
-       character. */\r
-  public boolean incMatch(String st)\r
-  {\r
-    StrPos sp = new StrPos(this);\r
-    int i;\r
-    for (i = 0; i < st.length(); i++)\r
-    {\r
-      if (!sp.match(st.charAt(i)))\r
-      {\r
-        return false;\r
-      }\r
-      sp.inc();\r
-    }\r
-    dup(sp);\r
-    return true;\r
-  }\r
-\r
-  /** Read in an integer. */\r
-  public patInt getPatInt()\r
-  {\r
-    if (incMatch("inf"))\r
-    {\r
-      return new patInf();\r
-    }\r
-    int i, cnt = 0;\r
-    StrPos sp = new StrPos(this);\r
-    for (i = 0; !sp.eos && sp.c >= '0' && sp.c <= '9'; i++)\r
-    {\r
-      cnt = 10 * cnt + sp.c - '0';\r
-      sp.inc();\r
-    }\r
-    if (i == 0)\r
-    {\r
-      return null;\r
-    }\r
-    dup(sp);\r
-    return new patInt(cnt);\r
-  }\r
-\r
-  /** get the string that we are processing. */\r
-  public String getString()\r
-  {\r
-    return s;\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;
+
+/**
+ Shareware: package pat
+ <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>
+ */
+/**
+ * StrPos is used internally by regex to parse the regular expression.
+ */
+public class StrPos
+{
+  String s;
+
+  int pos;
+
+  /** Return the position in the string pointed to */
+  public int pos()
+  {
+    return pos;
+  }
+
+  /** This contains the escape character, which is \ by default. */
+  public char esc = Pattern.ESC;
+
+  char c;
+
+  /** Returns the current, possibly escaped, character. */
+  public char thisChar()
+  {
+    return c;
+  }
+
+  boolean dontMatch, eos;
+
+  /** tell whether we are at end of string */
+  public boolean eos()
+  {
+    return eos;
+  }
+
+  /** initialize a StrPos from another StrPos. */
+  public StrPos(StrPos sp)
+  {
+    dup(sp);
+  }
+
+  /** copy a StrPos from sp to this. */
+  public void dup(StrPos sp)
+  {
+    s = sp.s;
+    pos = sp.pos;
+    c = sp.c;
+    dontMatch = sp.dontMatch;
+    eos = sp.eos;
+  }
+
+  /**
+   * Initialize a StrPos by giving it a String, and a position within the
+   * String.
+   */
+  public StrPos(String s, int pos)
+  {
+    this.s = s;
+    this.pos = pos - 1;
+    inc();
+  }
+
+  /**
+   * Advance the place where StrPos points within the String. Counts a backslash
+   * as part of the next character.
+   */
+  public StrPos inc()
+  {
+    pos++;
+    if (pos >= s.length())
+    {
+      eos = true;
+      return this;
+    }
+    eos = false;
+    c = s.charAt(pos);
+    if (c == esc && pos + 1 < s.length())
+    {
+      pos++;
+      c = s.charAt(pos);
+      if (c != esc)
+      {
+        dontMatch = true;
+      }
+      else
+      {
+        dontMatch = false;
+      }
+    }
+    else
+    {
+      dontMatch = false;
+    }
+    return this;
+  }
+
+  /**
+   * Compare the (possibly escaped) character pointed to by StrPos. Return true
+   * if they are the same, but lways return if character pointed to is escaped.
+   */
+  public boolean match(char ch)
+  {
+    if (dontMatch || eos)
+    {
+      return false;
+    }
+    return c == ch;
+  }
+
+  /** As match, but only matches if the character is escaped. */
+  public boolean escMatch(char ch)
+  {
+    if (!dontMatch || eos)
+    {
+      return false;
+    }
+    return c == ch;
+  }
+
+  /**
+   * Returns true if the current character is escaped (preceeded by "\").
+   */
+  public boolean escaped()
+  {
+    return dontMatch;
+  }
+
+  /**
+   * Increment the string pointer by each character in
+   * 
+   * <pre>
+   * st
+   * </pre>
+   * 
+   * that matches a non-escaped character.
+   */
+  public boolean incMatch(String st)
+  {
+    StrPos sp = new StrPos(this);
+    int i;
+    for (i = 0; i < st.length(); i++)
+    {
+      if (!sp.match(st.charAt(i)))
+      {
+        return false;
+      }
+      sp.inc();
+    }
+    dup(sp);
+    return true;
+  }
+
+  /** Read in an integer. */
+  public patInt getPatInt()
+  {
+    if (incMatch("inf"))
+    {
+      return new patInf();
+    }
+    int i, cnt = 0;
+    StrPos sp = new StrPos(this);
+    for (i = 0; !sp.eos && sp.c >= '0' && sp.c <= '9'; i++)
+    {
+      cnt = 10 * cnt + sp.c - '0';
+      sp.inc();
+    }
+    if (i == 0)
+    {
+      return null;
+    }
+    dup(sp);
+    return new patInt(cnt);
+  }
+
+  /** get the string that we are processing. */
+  public String getString()
+  {
+    return s;
+  }
+};