2
0

JsArray.ob 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. MODULE JsArray;
  2. IMPORT JS, Object, JsString;
  3. TYPE
  4. Type* = POINTER TO RECORD END;
  5. Strings* = POINTER TO RECORD END;
  6. PROCEDURE len*(a: Type): INTEGER;
  7. VAR
  8. result: INTEGER;
  9. BEGIN
  10. JS.do("result = a.length");
  11. RETURN result
  12. END len;
  13. PROCEDURE stringsLen*(a: Strings): INTEGER;
  14. VAR
  15. result: INTEGER;
  16. BEGIN
  17. JS.do("result = a.length");
  18. RETURN result
  19. END stringsLen;
  20. PROCEDURE add*(a: Type; o: Object.PType);
  21. BEGIN
  22. JS.do("a.push(o)");
  23. END add;
  24. PROCEDURE addString*(a: Strings; o: JsString.Type);
  25. BEGIN
  26. JS.do("a.push(o)");
  27. END addString;
  28. PROCEDURE removeString*(a: Strings; i: INTEGER);
  29. BEGIN
  30. JS.do("a.splice(i, 1)");
  31. END removeString;
  32. PROCEDURE at*(a: Type; i: INTEGER): Object.PType;
  33. VAR
  34. result: Object.PType;
  35. BEGIN
  36. JS.do("result = a[i]");
  37. RETURN result
  38. END at;
  39. PROCEDURE stringsAt*(a: Strings; i: INTEGER): JsString.Type;
  40. VAR
  41. result: JsString.Type;
  42. BEGIN
  43. JS.do("result = a[i]");
  44. RETURN result
  45. END stringsAt;
  46. PROCEDURE stringsIndexOf*(a: Strings; x: JsString.Type): INTEGER;
  47. VAR
  48. result: INTEGER;
  49. BEGIN
  50. JS.do("result = a.indexOf(x)");
  51. RETURN result
  52. END stringsIndexOf;
  53. PROCEDURE contains*(a: Type; x: Object.PType): BOOLEAN;
  54. VAR
  55. result: BOOLEAN;
  56. BEGIN
  57. JS.do("result = (a.indexOf(x) != -1)");
  58. RETURN result
  59. END contains;
  60. PROCEDURE containsString*(a: Strings; x: JsString.Type): BOOLEAN;
  61. RETURN stringsIndexOf(a, x) # -1
  62. END containsString;
  63. PROCEDURE make*(): Type;
  64. VAR
  65. result: Type;
  66. BEGIN
  67. JS.do("result = []");
  68. RETURN result
  69. END make;
  70. PROCEDURE makeStrings*(): Strings;
  71. VAR
  72. result: Strings;
  73. BEGIN
  74. JS.do("result = []");
  75. RETURN result
  76. END makeStrings;
  77. END JsArray.