|
@@ -13,9 +13,53 @@ var RTL$ = {
|
|
|
result.extend = extend;
|
|
|
return result;
|
|
|
},
|
|
|
+ makeArray: function (/*dimensions, initializer*/){
|
|
|
+ var forward = Array.prototype.slice.call(arguments);
|
|
|
+ var result = new Array(forward.shift());
|
|
|
+ var i;
|
|
|
+ if (forward.length == 1){
|
|
|
+ var init = forward[0];
|
|
|
+ if (typeof init == "function")
|
|
|
+ for(i = 0; i < result.length; ++i)
|
|
|
+ result[i] = init();
|
|
|
+ else
|
|
|
+ for(i = 0; i < result.length; ++i)
|
|
|
+ result[i] = init;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ for(i = 0; i < result.length; ++i)
|
|
|
+ result[i] = this.makeArray.apply(this, forward);
|
|
|
+ return result;
|
|
|
+ },
|
|
|
clone: function (from){
|
|
|
- var to = new from.constructor();
|
|
|
- this.copy(from, to);
|
|
|
+ var to;
|
|
|
+ var len;
|
|
|
+ var i;
|
|
|
+ var Ctr = from.constructor;
|
|
|
+ if (Ctr == Uint16Array){
|
|
|
+ len = from.length;
|
|
|
+ to = this.__makeCharArray(len);
|
|
|
+ for(i = 0; i < len; ++i)
|
|
|
+ to[i] = from[i];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ to = new Ctr();
|
|
|
+ if (Ctr == Array)
|
|
|
+ len = from.length;
|
|
|
+ if (len){
|
|
|
+ if (typeof from[0] != "object")
|
|
|
+ for(i = 0; i < len; ++i)
|
|
|
+ to[i] = from[i];
|
|
|
+ else
|
|
|
+ for(i = 0; i < len; ++i){
|
|
|
+ var o = from[i];
|
|
|
+ if (o !== null)
|
|
|
+ to[i] = this.clone(o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ this.copy(from, to);
|
|
|
+ }
|
|
|
return to;
|
|
|
},
|
|
|
copy: function (from, to){
|
|
@@ -28,6 +72,11 @@ var RTL$ = {
|
|
|
to[prop] = v;
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ __makeCharArray: function (length){
|
|
|
+ var result = new Uint16Array(length);
|
|
|
+ result.charCodeAt = function(i){return this[i];};
|
|
|
+ return result;
|
|
|
}
|
|
|
};
|
|
|
var m = function (){
|
|
@@ -37,6 +86,7 @@ var T = RTL$.extend({
|
|
|
});
|
|
|
var r = new T();
|
|
|
var i = 0;
|
|
|
+var a = RTL$.makeArray(10, 0);
|
|
|
|
|
|
function p(){
|
|
|
return false;
|
|
@@ -45,14 +95,16 @@ function p(){
|
|
|
function void$(){
|
|
|
}
|
|
|
|
|
|
-function valueArgs(r/*T*/, i/*INTEGER*/){
|
|
|
+function valueArgs(r/*T*/, i/*INTEGER*/, a/*ARRAY 10 OF INTEGER*/){
|
|
|
var v1 = RTL$.clone(r);
|
|
|
var v2 = i;
|
|
|
+ var v3 = RTL$.clone(a);
|
|
|
}
|
|
|
|
|
|
-function varArgs(r/*VAR T*/, i/*VAR INTEGER*/){
|
|
|
+function varArgs(r/*VAR T*/, i/*VAR INTEGER*/, a/*ARRAY 10 OF INTEGER*/){
|
|
|
var v1 = RTL$.clone(r);
|
|
|
var v2 = i.get();
|
|
|
+ var v3 = RTL$.clone(a);
|
|
|
}
|
|
|
var v1 = 0;
|
|
|
var v2 = 1.23;
|
|
@@ -64,4 +116,5 @@ var v7 = p();
|
|
|
var v8 = void$;
|
|
|
var do$ = 0;
|
|
|
var tempRecord = RTL$.clone(r);
|
|
|
+var tempArray = RTL$.clone(a);
|
|
|
}();
|