javap/src/main/java/org/apidesign/javap/Vector.java
changeset 316 8da329789435
parent 167 77f7135b6eb1
child 376 059cb07ac9b3
     1.1 --- a/javap/src/main/java/org/apidesign/javap/Vector.java	Fri Nov 16 08:08:36 2012 +0100
     1.2 +++ b/javap/src/main/java/org/apidesign/javap/Vector.java	Thu Dec 13 23:20:47 2012 +0100
     1.3 @@ -4,10 +4,14 @@
     1.4   */
     1.5  package org.apidesign.javap;
     1.6  
     1.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.8 +import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
     1.9 +
    1.10  /** A JavaScript ready replacement for java.util.Vector
    1.11   *
    1.12   * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.13   */
    1.14 +@JavaScriptPrototype(prototype = "new Array" )
    1.15  final class Vector {
    1.16      private Object[] arr;
    1.17      
    1.18 @@ -15,22 +19,31 @@
    1.19      }
    1.20  
    1.21      Vector(int i) {
    1.22 -        this();
    1.23      }
    1.24  
    1.25      void add(Object objectType) {
    1.26          addElement(objectType);
    1.27      }
    1.28 +    @JavaScriptBody(args = { "self", "obj" }, body = 
    1.29 +        "self.push(obj);"
    1.30 +    )
    1.31      void addElement(Object obj) {
    1.32          final int s = size();
    1.33          setSize(s + 1);
    1.34          setElementAt(obj, s);
    1.35      }
    1.36  
    1.37 +    @JavaScriptBody(args = { "self" }, body = 
    1.38 +        "return self.length;"
    1.39 +    )
    1.40      int size() {
    1.41          return arr == null ? 0 : arr.length;
    1.42      }
    1.43  
    1.44 +    @JavaScriptBody(args = { "self", "newArr" }, body =
    1.45 +        "for (var i = 0; i < self.length; i++) {\n"
    1.46 +      + "  newArr[i] = self[i];\n"
    1.47 +      + "}\n")
    1.48      void copyInto(Object[] newArr) {
    1.49          if (arr == null) {
    1.50              return;
    1.51 @@ -41,16 +54,22 @@
    1.52          }
    1.53      }
    1.54  
    1.55 +    @JavaScriptBody(args = { "self", "index" }, body =
    1.56 +        "return self[index];"
    1.57 +    )
    1.58      Object elementAt(int index) {
    1.59          return arr[index];
    1.60      }
    1.61  
    1.62 -    void setSize(int len) {
    1.63 +    private void setSize(int len) {
    1.64          Object[] newArr = new Object[len];
    1.65          copyInto(newArr);
    1.66          arr = newArr;
    1.67      }
    1.68  
    1.69 +    @JavaScriptBody(args = { "self", "val", "index" }, body = 
    1.70 +        "self[index] = val;"
    1.71 +    )
    1.72      void setElementAt(Object val, int index) {
    1.73          arr[index] = val;
    1.74      }