var_parameter.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <rtl code>
  2. var m = function (){
  3. function R(){
  4. this.i = 0;
  5. this.byte = 0;
  6. this.a = RTL$.makeArray(3, 0);
  7. this.p = null;
  8. }
  9. var i = 0;
  10. var byte = 0;
  11. var b = false;
  12. var a = RTL$.makeArray(5, 0);
  13. var byteArray = RTL$.makeArray(3, 0);
  14. function p1(i1/*VAR INTEGER*/, i2/*VAR INTEGER*/, byte/*VAR BYTE*/){
  15. i1.set(1);
  16. i2.set(2);
  17. byte.set(3 & 0xFF);
  18. }
  19. function p2(i/*INTEGER*/, byte/*BYTE*/, b/*BOOLEAN*/){
  20. }
  21. function index(i/*VAR INTEGER*/){
  22. return i.get();
  23. }
  24. function indexByte(b/*VAR BYTE*/){
  25. return b.get();
  26. }
  27. function array(a/*VAR ARRAY OF INTEGER*/){
  28. return a[0];
  29. }
  30. function p3(i/*VAR INTEGER*/, byte/*VAR BYTE*/, b/*VAR BOOLEAN*/){
  31. var j = 0;
  32. var r = new R();
  33. var ar = RTL$.makeArray(5, function(){return new R();});
  34. var ai = RTL$.makeArray(5, 0);
  35. j = i.get() + 1 | 0;
  36. j = 2 * i.get() | 0;
  37. j = i.get() / 2 | 0;
  38. j = -i.get();
  39. b.set(!b.get());
  40. a[i.get()] = i.get();
  41. p1({set: function($v){j = $v;}, get: function(){return j;}}, i, byte);
  42. p1(i, {set: function($v){j = $v;}, get: function(){return j;}}, byte);
  43. p1(i, RTL$.makeRef(a, index(i)), RTL$.makeRef(byteArray, indexByte(byte)));
  44. p2(i.get(), byte.get(), b.get());
  45. p1(RTL$.makeRef(r, "i"), RTL$.makeRef(ar[index(RTL$.makeRef(r, "i"))], "i"), RTL$.makeRef(ar[index(RTL$.makeRef(r, "i"))], "byte"));
  46. r.p = new R();
  47. ar[j].p = new R();
  48. p1(RTL$.makeRef(r.p, "i"), RTL$.makeRef(ar[j].p, "i"), RTL$.makeRef(ar[j].p, "byte"));
  49. p2(ar[j].p.i, ar[j].p.byte, r.p.i == ar[j].p.i);
  50. j = array(ai);
  51. j = array(r.a);
  52. }
  53. function testPointerDereferenceAndPassAsVAR(p/*PR*/){
  54. function innerVAR(r/*VAR R*/){
  55. }
  56. function innerConstVAR(r/*R*/){
  57. }
  58. innerVAR(p);
  59. innerConstVAR(p);
  60. }
  61. 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;}});
  62. }();