dynamic_array.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. dynamicInt.push(3);
  41. dynamicInt.push(i);
  42. dynamicInt.push(byte);
  43. dynamicString.push("abc");
  44. dynamicString.push("\"");
  45. dynamicString.push(s);
  46. dynamicChar.push(34);
  47. dynamicByte.push(byte);
  48. dynamicByte.push(i & 0xFF);
  49. dynamicRecord.push(RTL$.clone(r, {record: {a: {array: null}}}, T));
  50. dynamicArrayOfStaticArrayInt.push(a.slice());
  51. RTL$.assert(dynamicInt.indexOf(i) != -1);
  52. RTL$.assert(dynamicChar.indexOf(34) != -1);
  53. dynamicInt.splice(i, 1);
  54. dynamicInt.splice(0, Number.MAX_VALUE);
  55. passArrayBeRef(dynamicInt);
  56. passArrayOfRecordsByRef(dynamicRecord);
  57. passArrayOfArraysByRef(dynamicArrayOfStaticArrayInt);
  58. }();