Replacing two Boolean arrays holding readOnly and constant info by one numeric array. Helps portability. release-1.3
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 02 Mar 2016 03:08:19 +0100
branchrelease-1.3
changeset 1073076297c6bca3
parent 1072 807ddf523941
child 1074 051f9a22ae7c
Replacing two Boolean arrays holding readOnly and constant info by one numeric array. Helps portability.
ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java
ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
     1.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java	Tue Mar 01 18:07:55 2016 +0100
     1.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java	Wed Mar 02 03:08:19 2016 +0100
     1.3 @@ -71,13 +71,14 @@
     1.4  
     1.5      final Object createKO(Object model, Object copyFrom, PropertyBinding[] propArr, FunctionBinding[] funcArr, Knockout[] ko) {
     1.6          String[] propNames = new String[propArr.length];
     1.7 -        Boolean[] propReadOnly = new Boolean[propArr.length];
     1.8 -        Boolean[] propConstant = new Boolean[propArr.length];
     1.9 +        Number[] propInfo = new Number[propArr.length];
    1.10          Object[] propValues = new Object[propArr.length];
    1.11          for (int i = 0; i < propNames.length; i++) {
    1.12              propNames[i] = propArr[i].getPropertyName();
    1.13 -            propReadOnly[i] = propArr[i].isReadOnly();
    1.14 -            propConstant[i] = propArr[i].isConstant();
    1.15 +            int info =
    1.16 +                (propArr[i].isReadOnly() ? 1 : 0) +
    1.17 +                (propArr[i].isConstant()? 2 : 0);
    1.18 +            propInfo[i] = info;
    1.19              Object value = propArr[i].getValue();
    1.20              if (value instanceof Enum) {
    1.21                  value = value.toString();
    1.22 @@ -95,8 +96,7 @@
    1.23          }
    1.24          newKO.wrapModel(
    1.25              ret, copyFrom,
    1.26 -            propNames, propReadOnly, propConstant, propValues,
    1.27 -            funcNames
    1.28 +            propNames, propInfo, propValues, funcNames
    1.29          );
    1.30          return ret;
    1.31      }
     2.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Tue Mar 01 18:07:55 2016 +0100
     2.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java	Wed Mar 02 03:08:19 2016 +0100
     2.3 @@ -168,7 +168,7 @@
     2.4          javacall = true,
     2.5          keepAlive = false,
     2.6          wait4js = false,
     2.7 -        args = { "ret", "copyFrom", "propNames", "propReadOnly", "propConstant", "propValues", "funcNames" },
     2.8 +        args = { "ret", "copyFrom", "propNames", "propInfo", "propValues", "funcNames" },
     2.9          body = 
    2.10            "Object.defineProperty(ret, 'ko4j', { value : this });\n"
    2.11          + "function koComputed(index, name, readOnly, value) {\n"
    2.12 @@ -225,10 +225,10 @@
    2.13          + "  ret[name] = cmpt;\n"
    2.14          + "}\n"
    2.15          + "for (var i = 0; i < propNames.length; i++) {\n"
    2.16 -        + "  if (propConstant[i]) {\n"
    2.17 +        + "  if ((propInfo[i] & 2) !== 0) {\n"
    2.18          + "    ret[propNames[i]] = propValues[i];\n"
    2.19          + "  } else {\n"
    2.20 -        + "    koComputed(i, propNames[i], propReadOnly[i], propValues[i]);\n"
    2.21 +        + "    koComputed(i, propNames[i], (propInfo[i] & 1) !== 0, propValues[i]);\n"
    2.22          + "  }\n"
    2.23          + "}\n"
    2.24          + "function koExpose(index, name) {\n"
    2.25 @@ -244,7 +244,7 @@
    2.26          )
    2.27      native void wrapModel(
    2.28          Object ret, Object copyFrom,
    2.29 -        String[] propNames, Boolean[] propReadOnly, Boolean[] propConstant,
    2.30 +        String[] propNames, Number[] propInfo,
    2.31          Object propValues,
    2.32          String[] funcNames
    2.33      );