Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / src / javajs / util / SB.java
index ec8cb83..2b9efa6 100644 (file)
-\r
-package javajs.util;\r
-\r
-import javajs.J2SIgnoreImport;\r
-\r
-/**\r
- * Interesting thing here is that JavaScript is 3x faster than Java in handling strings.\r
- * \r
- * Java StringBuilder is final, unfortunately. I guess they weren't thinking about Java2Script!\r
- * \r
- * The reason we have to do this that several overloaded append methods is WAY too expensive\r
- * \r
- */\r
-\r
-@J2SIgnoreImport({java.lang.StringBuilder.class})\r
-public class SB {\r
-  \r
-  private java.lang.StringBuilder sb;\r
-  String s; // used by JavaScript only; no Java references\r
-  \r
-  //TODO: JS experiment with using array and .push() here\r
-\r
-  public SB() {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s = "";\r
-     * \r
-     */\r
-    {\r
-      sb = new java.lang.StringBuilder();\r
-    }\r
-  }\r
-\r
-  public static SB newN(int n) {\r
-    /**\r
-     * @j2sNative\r
-     *            return new javajs.util.SB(); \r
-     */\r
-    {\r
-      // not perfect, because it requires defining sb twice. \r
-      // We can do better...\r
-      SB sb = new SB();\r
-      sb.sb = new java.lang.StringBuilder(n);\r
-      return sb;\r
-    }\r
-  }\r
-\r
-  public static SB newS(String s) {\r
-    /**\r
-     * @j2sNative \r
-     * \r
-     * var sb = new javajs.util.SB();\r
-     * sb.s = s;\r
-     * return sb; \r
-     * \r
-     */\r
-    {\r
-    SB sb = new SB();\r
-    sb.sb = new java.lang.StringBuilder(s);\r
-    return sb;\r
-    }\r
-  }\r
-\r
-  public SB append(String s) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s += s\r
-     * \r
-     */\r
-    {\r
-      sb.append(s);\r
-    }\r
-    return this;\r
-  }\r
-  \r
-  public SB appendC(char c) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s += c;\r
-     */\r
-    {\r
-      sb.append(c);\r
-    }\r
-    return this;\r
-    \r
-  }\r
-\r
-  public SB appendI(int i) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s += i\r
-     * \r
-     */\r
-    {\r
-      sb.append(i);\r
-    }\r
-    return this;\r
-  }\r
-\r
-  public SB appendB(boolean b) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s += b\r
-     * \r
-     */\r
-    {\r
-      sb.append(b);\r
-    }\r
-    return this;\r
-  }\r
-\r
-  /**\r
-   * note that JavaScript could drop off the ".0" in "1.0"\r
-   * @param f\r
-   * @return this\r
-   */\r
-  public SB appendF(float f) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     * var sf = "" + f;\r
-     * if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)\r
-     *   sf += ".0" ;\r
-     *            this.s += sf;\r
-     * \r
-     */\r
-    {\r
-      sb.append(f);\r
-    }\r
-    return this;\r
-  }\r
-\r
-  public SB appendD(double d) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     * var sf = "" + d;\r
-     * if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)\r
-     *   sf += ".0" ;\r
-     *            this.s += sf;\r
-     * \r
-     */\r
-    {\r
-      sb.append(d);\r
-    }\r
-    return this;\r
-  }\r
-\r
-  public SB appendSB(SB buf) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s += buf.s;\r
-     * \r
-     */\r
-    {\r
-      sb.append(buf.sb);\r
-    }\r
-    return this;\r
-  }\r
-\r
-  public SB appendO(Object data) {\r
-    if (data != null) {\r
-      /**\r
-       * @j2sNative\r
-       * \r
-       *            this.s += data.toString();\r
-       * \r
-       */\r
-      {\r
-        sb.append(data);\r
-      }\r
-    }\r
-    return this;\r
-  }\r
-\r
-  public void appendCB(char[] cb, int off, int len) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     * for (var i = len,j=off; --i >= 0;)\r
-     *            this.s += cb[j++];\r
-     * \r
-     */\r
-    {\r
-       sb.append(cb, off, len);\r
-    }\r
-  }\r
-\r
-  @Override\r
-  public String toString() {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s;\r
-     * \r
-     */\r
-    {\r
-      return sb.toString();\r
-    }\r
-  }\r
-\r
-  public int length() {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.length;\r
-     * \r
-     */\r
-    {\r
-      return sb.length();\r
-    }\r
-  }\r
-\r
-  public int indexOf(String s) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.indexOf(s);\r
-     * \r
-     */\r
-    {\r
-      return sb.indexOf(s);\r
-    }\r
-  }\r
-\r
-  public char charAt(int i) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.charAt(i);\r
-     * \r
-     */\r
-    {\r
-      return sb.charAt(i);\r
-    }\r
-  }\r
-\r
-  public int charCodeAt(int i) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.charCodeAt(i);\r
-     * \r
-     */\r
-    {\r
-      return sb.codePointAt(i);\r
-    }\r
-  }\r
-\r
-  public void setLength(int n) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            this.s = this.s.substring(0, n);\r
-     */\r
-    {\r
-      sb.setLength(n);\r
-    }\r
-  }\r
-\r
-  public int lastIndexOf(String s) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.lastIndexOf(s);\r
-     */\r
-    {\r
-      return sb.lastIndexOf(s);\r
-    }\r
-  }\r
-\r
-  public int indexOf2(String s, int i) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.indexOf(s, i);\r
-     */\r
-    {\r
-      return sb.indexOf(s, i);\r
-    }\r
-  }\r
-\r
-  public String substring(int i) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.substring(i);\r
-     */\r
-    {\r
-      return sb.substring(i);\r
-    }\r
-  }\r
-\r
-  public String substring2(int i, int j) {\r
-    /**\r
-     * @j2sNative\r
-     * \r
-     *            return this.s.substring(i, j);\r
-     */\r
-    {\r
-      return sb.substring(i, j);\r
-    }\r
-  }\r
-\r
-  /**\r
-   * simple byte conversion not allowing for unicode.\r
-   * Used for base64 conversion and allows for offset\r
-   * @param off \r
-   * @param len or -1 for full length (then off must = 0)\r
-   * @return byte[]\r
-   */\r
-  public byte[] toBytes(int off, int len) {\r
-    if (len < 0)\r
-      len = length() - off;\r
-    byte[] b = new byte[len];\r
-    for (int i = off + len, j = i - off; --i >= off;)\r
-      b[--j] = (byte) charAt(i);\r
-    return b;\r
-  }\r
-\r
-       public void replace(int start, int end, String str) {\r
-               /**\r
-                * @j2sNative\r
-                * \r
-                * this.s = this.s.substring(0, start) + str + this.s.substring(end);\r
-                */\r
-               {\r
-                       sb.replace(start, end, str);\r
-               }\r
-       }\r
-\r
-       public void insert(int offset, String str) {\r
-               replace(offset, offset, str);\r
-       }\r
-\r
-}\r
+
+package javajs.util;
+
+import javajs.J2SIgnoreImport;
+
+/**
+ * Interesting thing here is that JavaScript is 3x faster than Java in handling strings.
+ * 
+ * Java StringBuilder is final, unfortunately. I guess they weren't thinking about Java2Script!
+ * 
+ * The reason we have to do this that several overloaded append methods is WAY too expensive
+ * 
+ */
+
+@J2SIgnoreImport({java.lang.StringBuilder.class})
+public class SB {
+  
+  private java.lang.StringBuilder sb;
+  String s; // used by JavaScript only; no Java references
+  
+  //TODO: JS experiment with using array and .push() here
+
+  public SB() {
+    /**
+     * @j2sNative
+     * 
+     *            this.s = "";
+     * 
+     */
+    {
+      sb = new java.lang.StringBuilder();
+    }
+  }
+
+  public static SB newN(int n) {
+    /**
+     * @j2sNative
+     *            return new javajs.util.SB(); 
+     */
+    {
+      // not perfect, because it requires defining sb twice. 
+      // We can do better...
+      SB sb = new SB();
+      sb.sb = new java.lang.StringBuilder(n);
+      return sb;
+    }
+  }
+
+  public static SB newS(String s) {
+    /**
+     * @j2sNative 
+     * 
+     * var sb = new javajs.util.SB();
+     * sb.s = s;
+     * return sb; 
+     * 
+     */
+    {
+    SB sb = new SB();
+    sb.sb = new java.lang.StringBuilder(s);
+    return sb;
+    }
+  }
+
+  public SB append(String s) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s += s
+     * 
+     */
+    {
+      sb.append(s);
+    }
+    return this;
+  }
+  
+  public SB appendC(char c) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s += c;
+     */
+    {
+      sb.append(c);
+    }
+    return this;
+    
+  }
+
+  public SB appendI(int i) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s += i
+     * 
+     */
+    {
+      sb.append(i);
+    }
+    return this;
+  }
+
+  public SB appendB(boolean b) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s += b
+     * 
+     */
+    {
+      sb.append(b);
+    }
+    return this;
+  }
+
+  /**
+   * note that JavaScript could drop off the ".0" in "1.0"
+   * @param f
+   * @return this
+   */
+  public SB appendF(float f) {
+    /**
+     * @j2sNative
+     * 
+     * var sf = "" + f;
+     * if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
+     *   sf += ".0" ;
+     *            this.s += sf;
+     * 
+     */
+    {
+      sb.append(f);
+    }
+    return this;
+  }
+
+  public SB appendD(double d) {
+    /**
+     * @j2sNative
+     * 
+     * var sf = "" + d;
+     * if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
+     *   sf += ".0" ;
+     *            this.s += sf;
+     * 
+     */
+    {
+      sb.append(d);
+    }
+    return this;
+  }
+
+  public SB appendSB(SB buf) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s += buf.s;
+     * 
+     */
+    {
+      sb.append(buf.sb);
+    }
+    return this;
+  }
+
+  public SB appendO(Object data) {
+    if (data != null) {
+      /**
+       * @j2sNative
+       * 
+       *            this.s += data.toString();
+       * 
+       */
+      {
+        sb.append(data);
+      }
+    }
+    return this;
+  }
+
+  public void appendCB(char[] cb, int off, int len) {
+    /**
+     * @j2sNative
+     * 
+     * for (var i = len,j=off; --i >= 0;)
+     *            this.s += cb[j++];
+     * 
+     */
+    {
+       sb.append(cb, off, len);
+    }
+  }
+
+  @Override
+  public String toString() {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s;
+     * 
+     */
+    {
+      return sb.toString();
+    }
+  }
+
+  public int length() {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.length;
+     * 
+     */
+    {
+      return sb.length();
+    }
+  }
+
+  public int indexOf(String s) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.indexOf(s);
+     * 
+     */
+    {
+      return sb.indexOf(s);
+    }
+  }
+
+  public char charAt(int i) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.charAt(i);
+     * 
+     */
+    {
+      return sb.charAt(i);
+    }
+  }
+
+  public int charCodeAt(int i) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.charCodeAt(i);
+     * 
+     */
+    {
+      return sb.codePointAt(i);
+    }
+  }
+
+  public void setLength(int n) {
+    /**
+     * @j2sNative
+     * 
+     *            this.s = this.s.substring(0, n);
+     */
+    {
+      sb.setLength(n);
+    }
+  }
+
+  public int lastIndexOf(String s) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.lastIndexOf(s);
+     */
+    {
+      return sb.lastIndexOf(s);
+    }
+  }
+
+  public int indexOf2(String s, int i) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.indexOf(s, i);
+     */
+    {
+      return sb.indexOf(s, i);
+    }
+  }
+
+  public String substring(int i) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.substring(i);
+     */
+    {
+      return sb.substring(i);
+    }
+  }
+
+  public String substring2(int i, int j) {
+    /**
+     * @j2sNative
+     * 
+     *            return this.s.substring(i, j);
+     */
+    {
+      return sb.substring(i, j);
+    }
+  }
+
+  /**
+   * simple byte conversion not allowing for unicode.
+   * Used for base64 conversion and allows for offset
+   * @param off 
+   * @param len or -1 for full length (then off must = 0)
+   * @return byte[]
+   */
+  public byte[] toBytes(int off, int len) {
+    if (len < 0)
+      len = length() - off;
+    byte[] b = new byte[len];
+    for (int i = off + len, j = i - off; --i >= off;)
+      b[--j] = (byte) charAt(i);
+    return b;
+  }
+
+       public void replace(int start, int end, String str) {
+               /**
+                * @j2sNative
+                * 
+                * this.s = this.s.substring(0, start) + str + this.s.substring(end);
+                */
+               {
+                       sb.replace(start, end, str);
+               }
+       }
+
+       public void insert(int offset, String str) {
+               replace(offset, offset, str);
+       }
+
+}