var_parameter.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var RTL$ = {
  2. makeArray: function (/*dimensions, initializer*/){
  3. var forward = Array.prototype.slice.call(arguments);
  4. var result = new Array(forward.shift());
  5. var i;
  6. if (forward.length == 1){
  7. var init = forward[0];
  8. if (typeof init == "function")
  9. for(i = 0; i < result.length; ++i)
  10. result[i] = init();
  11. else
  12. for(i = 0; i < result.length; ++i)
  13. result[i] = init;
  14. }
  15. else
  16. for(i = 0; i < result.length; ++i)
  17. result[i] = this.makeArray.apply(this, forward);
  18. return result;
  19. },
  20. makeRef: function (obj, prop){
  21. return {set: function(v){ obj[prop] = v; },
  22. get: function(){ return obj[prop]; }};
  23. }
  24. };
  25. var m = function (){
  26. function R(){
  27. this.i = 0;
  28. this.byte = 0;
  29. this.a = RTL$.makeArray(3, 0);
  30. this.p = null;
  31. }
  32. var i = 0;
  33. var byte = 0;
  34. var b = false;
  35. var a = RTL$.makeArray(5, 0);
  36. var byteArray = RTL$.makeArray(3, 0);
  37. function p1(i1/*VAR INTEGER*/, i2/*VAR INTEGER*/, byte/*VAR BYTE*/){
  38. i1.set(1);
  39. i2.set(2);
  40. byte.set(3 & 0xFF);
  41. }
  42. function p2(i/*INTEGER*/, byte/*BYTE*/, b/*BOOLEAN*/){
  43. }
  44. function index(i/*VAR INTEGER*/){
  45. return i.get();
  46. }
  47. function indexByte(b/*VAR BYTE*/){
  48. return b.get();
  49. }
  50. function array(a/*VAR ARRAY OF INTEGER*/){
  51. return a[0];
  52. }
  53. function p3(i/*VAR INTEGER*/, byte/*VAR BYTE*/, b/*VAR BOOLEAN*/){
  54. var j = 0;
  55. var r = new R();
  56. var ar = RTL$.makeArray(5, function(){return new R();});
  57. var ai = RTL$.makeArray(5, 0);
  58. j = i.get() + 1 | 0;
  59. j = 2 * i.get() | 0;
  60. j = i.get() / 2 | 0;
  61. j = -i.get();
  62. b.set(!b.get());
  63. a[i.get()] = i.get();
  64. p1({set: function($v){j = $v;}, get: function(){return j;}}, i, byte);
  65. p1(i, {set: function($v){j = $v;}, get: function(){return j;}}, byte);
  66. p1(i, RTL$.makeRef(a, index(i)), RTL$.makeRef(byteArray, indexByte(byte)));
  67. p2(i.get(), byte.get(), b.get());
  68. p1(RTL$.makeRef(r, "i"), RTL$.makeRef(ar[index(RTL$.makeRef(r, "i"))], "i"), RTL$.makeRef(ar[index(RTL$.makeRef(r, "i"))], "byte"));
  69. r.p = new R();
  70. ar[j].p = new R();
  71. p1(RTL$.makeRef(r.p, "i"), RTL$.makeRef(ar[j].p, "i"), RTL$.makeRef(ar[j].p, "byte"));
  72. p2(ar[j].p.i, ar[j].p.byte, r.p.i == ar[j].p.i);
  73. j = array(ai);
  74. j = array(r.a);
  75. }
  76. p3({set: function($v){i = $v;}, get: function(){return i;}}, {set: function($v){byte = $v;}, get: function(){return byte;}}, {set: function($v){b = $v;}, get: function(){return b;}});
  77. }();