Replacing two Boolean arrays holding readOnly and constant info by one numeric array. Helps portability.
diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java b/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java
index 472c2b8..df8f2fb 100644
--- a/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java
+++ b/ko4j/src/main/java/org/netbeans/html/ko4j/KOTech.java
@@ -71,13 +71,14 @@
final Object createKO(Object model, Object copyFrom, PropertyBinding[] propArr, FunctionBinding[] funcArr, Knockout[] ko) {
String[] propNames = new String[propArr.length];
- Boolean[] propReadOnly = new Boolean[propArr.length];
- Boolean[] propConstant = new Boolean[propArr.length];
+ Number[] propInfo = new Number[propArr.length];
Object[] propValues = new Object[propArr.length];
for (int i = 0; i < propNames.length; i++) {
propNames[i] = propArr[i].getPropertyName();
- propReadOnly[i] = propArr[i].isReadOnly();
- propConstant[i] = propArr[i].isConstant();
+ int info =
+ (propArr[i].isReadOnly() ? 1 : 0) +
+ (propArr[i].isConstant()? 2 : 0);
+ propInfo[i] = info;
Object value = propArr[i].getValue();
if (value instanceof Enum) {
value = value.toString();
@@ -95,8 +96,7 @@
}
newKO.wrapModel(
ret, copyFrom,
- propNames, propReadOnly, propConstant, propValues,
- funcNames
+ propNames, propInfo, propValues, funcNames
);
return ret;
}
diff --git a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
index e8bce00..69e341f 100644
--- a/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
+++ b/ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java
@@ -168,7 +168,7 @@
javacall = true,
keepAlive = false,
wait4js = false,
- args = { "ret", "copyFrom", "propNames", "propReadOnly", "propConstant", "propValues", "funcNames" },
+ args = { "ret", "copyFrom", "propNames", "propInfo", "propValues", "funcNames" },
body =
"Object.defineProperty(ret, 'ko4j', { value : this });\n"
+ "function koComputed(index, name, readOnly, value) {\n"
@@ -225,10 +225,10 @@
+ " ret[name] = cmpt;\n"
+ "}\n"
+ "for (var i = 0; i < propNames.length; i++) {\n"
- + " if (propConstant[i]) {\n"
+ + " if ((propInfo[i] & 2) !== 0) {\n"
+ " ret[propNames[i]] = propValues[i];\n"
+ " } else {\n"
- + " koComputed(i, propNames[i], propReadOnly[i], propValues[i]);\n"
+ + " koComputed(i, propNames[i], (propInfo[i] & 1) !== 0, propValues[i]);\n"
+ " }\n"
+ "}\n"
+ "function koExpose(index, name) {\n"
@@ -244,7 +244,7 @@
)
native void wrapModel(
Object ret, Object copyFrom,
- String[] propNames, Boolean[] propReadOnly, Boolean[] propConstant,
+ String[] propNames, Number[] propInfo,
Object propValues,
String[] funcNames
);