dynamic_array.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <rtl code>
  2. var m = function (){
  3. function T(){
  4. this.a = [];
  5. }
  6. var r = new T();
  7. var a = RTL$.makeArray(3, 0);
  8. var dynamicInt = [];
  9. var dynamicString = [];
  10. var dynamicChar = [];
  11. var dynamicByte = [];
  12. var dynamicRecord = [];
  13. var dynamicArrayOfStaticArrayInt = [];
  14. var i = 0;
  15. var s = '';
  16. var byte = 0;
  17. function assignDynamicArrayFromStatic(){
  18. var static$ = RTL$.makeArray(3, 0);
  19. var dynamic = [];
  20. Array.prototype.splice.apply(dynamic, [0, Number.MAX_VALUE].concat(static$));
  21. }
  22. function returnOuterArray(){
  23. return a.slice();
  24. }
  25. function passArrayBeRef(a/*VAR ARRAY * OF INTEGER*/){
  26. var static$ = RTL$.makeArray(3, 0);
  27. a[0] = 1;
  28. a[0] = a[1];
  29. Array.prototype.splice.apply(a, [0, Number.MAX_VALUE].concat(static$));
  30. Array.prototype.splice.apply(a, [0, Number.MAX_VALUE].concat(dynamicInt));
  31. }
  32. function passArrayOfRecordsByRef(a/*VAR ARRAY * OF T*/){
  33. var result = [];
  34. RTL$.copy(result, a, {array: {record: {a: {array: null}}}});
  35. }
  36. function passArrayOfArraysByRef(a/*VAR ARRAY *, 3 OF INTEGER*/){
  37. var result = [];
  38. RTL$.copy(result, a, {array: {array: null}});
  39. }
  40. function arrayOfRecords(){
  41. var $scope1 = $scope + ".arrayOfRecords";
  42. function T(){
  43. }
  44. var a = [];
  45. a.push(new T());
  46. }
  47. function arrayOfArrays(){
  48. var aa = [];
  49. function f(){
  50. var a = [];
  51. return a.slice();
  52. }
  53. aa.push(f());
  54. }
  55. dynamicInt.push(3);
  56. dynamicInt.push(i);
  57. dynamicInt.push(byte);
  58. dynamicString.push("abc");
  59. dynamicString.push("\"");
  60. dynamicString.push(s);
  61. dynamicChar.push(34);
  62. dynamicByte.push(byte);
  63. dynamicByte.push(i & 0xFF);
  64. dynamicRecord.push(RTL$.clone(r, {record: {a: {array: null}}}, T));
  65. dynamicArrayOfStaticArrayInt.push(a.slice());
  66. RTL$.assert(dynamicInt.indexOf(i) != -1);
  67. RTL$.assert(dynamicChar.indexOf(34) != -1);
  68. dynamicInt.splice(i, 1);
  69. dynamicInt.splice(0, Number.MAX_VALUE);
  70. passArrayBeRef(dynamicInt);
  71. passArrayOfRecordsByRef(dynamicRecord);
  72. passArrayOfArraysByRef(dynamicArrayOfStaticArrayInt);
  73. }();