merge from 2_4_Release branch
[jalview.git] / src / com / stevesoft / pat / wrap / RandomAccessFileWrap.java
index 90e7691..b4d38dc 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.wrap;\r
-\r
-import java.io.*;\r
-\r
-import com.stevesoft.pat.*;\r
-\r
-/** Provides a wrapper for a RandomAccessFile so that it\r
-    can be searched by Regex. */\r
-public class RandomAccessFileWrap\r
-    implements StringLike\r
-{\r
-\r
-  long offset = 0;\r
-  public void setOffset(long o)\r
-  {\r
-    offset = o;\r
-    i0 = iend = 0;\r
-  }\r
-\r
-  public long getOffset()\r
-  {\r
-    return offset;\r
-  }\r
-\r
-  RandomAccessFile raf;\r
-  int i0 = 0, iend = 0;\r
-  byte[] buf = new byte[1024];\r
-\r
-  public int getBufferSize()\r
-  {\r
-    return buf.length;\r
-  }\r
-\r
-  public void setBufferSize(int bs)\r
-  {\r
-    buf = new byte[bs];\r
-    i0 = iend = 0;\r
-  }\r
-\r
-  public RandomAccessFileWrap(String file)\r
-      throws IOException\r
-  {\r
-    this.raf = new RandomAccessFile(file, "r");\r
-  }\r
-\r
-  public RandomAccessFileWrap(RandomAccessFile raf)\r
-  {\r
-    this.raf = raf;\r
-  }\r
-\r
-  public char charAt(int i)\r
-  {\r
-    if (i >= i0 && i < iend)\r
-    {\r
-      return (char) buf[i - i0];\r
-    }\r
-\r
-    try\r
-    {\r
-      i0 = i - 5;\r
-      //if(i0+offset<0) i0=(int)(-offset);\r
-      if (i0 < 0)\r
-      {\r
-        i0 = 0;\r
-      }\r
-      raf.seek(i0 + offset);\r
-      iend = i0 + raf.read(buf, 0, buf.length);\r
-\r
-      if (i >= i0 && i < iend)\r
-      {\r
-        return (char) buf[i - i0];\r
-      }\r
-    }\r
-    catch (Throwable t)\r
-    {}\r
-\r
-    throw new ArrayIndexOutOfBoundsException("Out of bounds for file:" +\r
-                                             " i=" + i +\r
-                                             ", Final Buffer: i0=" + i0 +\r
-                                             " iend=" + iend);\r
-  }\r
-\r
-  public String toString()\r
-  {\r
-    throw new Error("Not implemented");\r
-  }\r
-\r
-  public int length()\r
-  {\r
-    try\r
-    {\r
-      long len = raf.length() - offset;\r
-      if (len > Integer.MAX_VALUE)\r
-      {\r
-        return Integer.MAX_VALUE;\r
-      }\r
-      return (int) len;\r
-    }\r
-    catch (IOException ioe)\r
-    {\r
-      return 0;\r
-    }\r
-  }\r
-\r
-  public String substring(int i1, int i2)\r
-  {\r
-    StringBuffer sb = new StringBuffer();\r
-    for (int i = i1; i < i2; i++)\r
-    {\r
-      sb.append(charAt(i));\r
-    }\r
-    return sb.toString();\r
-  }\r
-\r
-  public Object unwrap()\r
-  {\r
-    return raf;\r
-  }\r
-\r
-  public static void main(String[] files)\r
-      throws IOException\r
-  {\r
-    for (int i = 0; i < files.length; i++)\r
-    {\r
-      RandomAccessFileWrap fw =\r
-          new RandomAccessFileWrap(new RandomAccessFile(files[i], "r"));\r
-      Regex r = new Regex("toString\\(\\) *(?@{})");\r
-      r.setGFlag(true);\r
-      r.optimize();\r
-      System.out.print(files[i] + " ");\r
-      int j = 0;\r
-      do\r
-      {\r
-        if (r.searchFrom(fw, j))\r
-        {\r
-          System.out.println("Matched at index: " +\r
-                             r.matchedFrom());\r
-          j = r.matchedTo();\r
-        }\r
-        else\r
-        {\r
-          System.out.println("not found");\r
-        }\r
-        System.out.println(r.stringMatched());\r
-      }\r
-      while (r.didMatch());\r
-    }\r
-  }\r
-\r
-  public BasicStringBufferLike newStringBufferLike()\r
-  {\r
-    return new StringBufferWrap();\r
-  }\r
-\r
-  public int indexOf(char c)\r
-  {\r
-    for (int i = 0; i < length(); i++)\r
-    {\r
-      if (charAt(i) == c)\r
-      {\r
-        return i;\r
-      }\r
-    }\r
-    return -1;\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.wrap;
+
+import java.io.*;
+
+import com.stevesoft.pat.*;
+
+/**
+ * Provides a wrapper for a RandomAccessFile so that it can be searched by
+ * Regex.
+ */
+public class RandomAccessFileWrap implements StringLike
+{
+
+  long offset = 0;
+
+  public void setOffset(long o)
+  {
+    offset = o;
+    i0 = iend = 0;
+  }
+
+  public long getOffset()
+  {
+    return offset;
+  }
+
+  RandomAccessFile raf;
+
+  int i0 = 0, iend = 0;
+
+  byte[] buf = new byte[1024];
+
+  public int getBufferSize()
+  {
+    return buf.length;
+  }
+
+  public void setBufferSize(int bs)
+  {
+    buf = new byte[bs];
+    i0 = iend = 0;
+  }
+
+  public RandomAccessFileWrap(String file) throws IOException
+  {
+    this.raf = new RandomAccessFile(file, "r");
+  }
+
+  public RandomAccessFileWrap(RandomAccessFile raf)
+  {
+    this.raf = raf;
+  }
+
+  public char charAt(int i)
+  {
+    if (i >= i0 && i < iend)
+    {
+      return (char) buf[i - i0];
+    }
+
+    try
+    {
+      i0 = i - 5;
+      // if(i0+offset<0) i0=(int)(-offset);
+      if (i0 < 0)
+      {
+        i0 = 0;
+      }
+      raf.seek(i0 + offset);
+      iend = i0 + raf.read(buf, 0, buf.length);
+
+      if (i >= i0 && i < iend)
+      {
+        return (char) buf[i - i0];
+      }
+    } catch (Throwable t)
+    {
+    }
+
+    throw new ArrayIndexOutOfBoundsException("Out of bounds for file:"
+            + " i=" + i + ", Final Buffer: i0=" + i0 + " iend=" + iend);
+  }
+
+  public String toString()
+  {
+    throw new Error("Not implemented");
+  }
+
+  public int length()
+  {
+    try
+    {
+      long len = raf.length() - offset;
+      if (len > Integer.MAX_VALUE)
+      {
+        return Integer.MAX_VALUE;
+      }
+      return (int) len;
+    } catch (IOException ioe)
+    {
+      return 0;
+    }
+  }
+
+  public String substring(int i1, int i2)
+  {
+    StringBuffer sb = new StringBuffer();
+    for (int i = i1; i < i2; i++)
+    {
+      sb.append(charAt(i));
+    }
+    return sb.toString();
+  }
+
+  public Object unwrap()
+  {
+    return raf;
+  }
+
+  public static void main(String[] files) throws IOException
+  {
+    for (int i = 0; i < files.length; i++)
+    {
+      RandomAccessFileWrap fw = new RandomAccessFileWrap(
+              new RandomAccessFile(files[i], "r"));
+      Regex r = new Regex("toString\\(\\) *(?@{})");
+      r.setGFlag(true);
+      r.optimize();
+      System.out.print(files[i] + " ");
+      int j = 0;
+      do
+      {
+        if (r.searchFrom(fw, j))
+        {
+          System.out.println("Matched at index: " + r.matchedFrom());
+          j = r.matchedTo();
+        }
+        else
+        {
+          System.out.println("not found");
+        }
+        System.out.println(r.stringMatched());
+      } while (r.didMatch());
+    }
+  }
+
+  public BasicStringBufferLike newStringBufferLike()
+  {
+    return new StringBufferWrap();
+  }
+
+  public int indexOf(char c)
+  {
+    for (int i = 0; i < length(); i++)
+    {
+      if (charAt(i) == c)
+      {
+        return i;
+      }
+    }
+    return -1;
+  }
+}