Advertisement
Bob_the_Hamster

Untitled

Mar 28th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1.  
  2. script, create array, array code, begin
  3. if(not(fake array holder)) then(
  4. fake array holder := lookup slice(sli:fake array holder)
  5. if(not(fake array holder)) then(
  6. fake array holder := create container(0, 0)
  7. set slice visible(fake array holder, false)
  8. set slice lookup(fake array holder, sli:fake array holder)
  9. )
  10. )
  11. variable(a)
  12. a := lookup slice(array code, fake array holder)
  13. if(not(a)) then(
  14. a := create container(0, 0)
  15. set slice lookup(a, array code)
  16. set parent(a, fake array holder)
  17. )
  18. exit returning(a)
  19. end
  20.  
  21. script, clear array, a, begin
  22. free slice children(a)
  23. end
  24.  
  25. script, clear and free array of slices, a, begin
  26. # When the array contains a list if slices, and we want to free them too
  27. for each in array(a, @do clear and free array of slices)
  28. clear array(a)
  29. end
  30.  
  31. script, do clear and free array of slices, e, begin
  32. free slice(e)
  33. end
  34.  
  35. script, append, a, val, begin
  36. variable(e)
  37. e := create container(0, 0)
  38. set parent(e, a)
  39. set slice lookup(e, sli:array element)
  40. set slice extra(e, 0, val)
  41. exit returning(e)
  42. end
  43.  
  44. script, prepend, a, val, begin
  45. variable(e)
  46. e := append(a, val)
  47. slice to back(e)
  48. exit returning(e)
  49. end
  50.  
  51. script, drop, a, val, begin
  52. # Drop all instances of value val from array a
  53. variable(e, next e, v)
  54. e := first child(a)
  55. while(e) do(
  56. next e := next sibling(e)
  57. v := get slice extra(e, 0)
  58. if(v == val) then(free slice(e))
  59. e := next e
  60. )
  61. end
  62.  
  63. script, array length, a, begin
  64. exit returning(child count(a))
  65. end
  66.  
  67. script, in array, a, val, begin
  68. variable(e, v)
  69. e := first child(a)
  70. while(e) do(
  71. v := get slice extra(e, 0)
  72. if(v == val) then(exit returning(true))
  73. e := next sibling(e)
  74. )
  75. exit returning(false)
  76. end
  77.  
  78. script, for each in array, a, callback, arg2=0, arg3=0, arg4=0, begin
  79. variable(e, next e, v)
  80. e := first child(a)
  81. while(e) do(
  82. next e := next sibling(e)
  83. v := get slice extra(e, 0)
  84. run script by id(callback, v, arg2, arg3, arg4)
  85. e := next e
  86. )
  87. end
  88.  
  89. script, for each in array until true, a, callback, arg2=0, arg3=0, arg4=0, begin
  90. # As soon as the callback returns true, stop looping
  91. variable(e, v)
  92. e := first child(a)
  93. while(e) do(
  94. v := get slice extra(e, 0)
  95. if(run script by id(callback, v, arg2, arg3, arg4)) then(exit returning(true))
  96. e := next sibling(e)
  97. )
  98. # Returns false if no callbacks ever return true
  99. exit returning(false)
  100. end
  101.  
  102. script, for each in array set sort order, a, callback, arg2=0, arg3=0, arg4=0, begin
  103. variable(e, v, s)
  104. e := first child(a)
  105. while(e) do(
  106. v := get slice extra(e, 0)
  107. s := run script by id(callback, v, arg2, arg3, arg4)
  108. set sort order(e, s)
  109. e := next sibling(e)
  110. )
  111. end
  112.  
  113. script, for each in array remove if true, a, callback, arg2=0, arg3=0, arg4=0, begin
  114. variable(e, next e, v)
  115. e := first child(a)
  116. while(e) do(
  117. next e := next sibling(e)
  118. v := get slice extra(e, 0)
  119. if(run script by id(callback, v, arg2, arg3, arg4)) then(
  120. free slice(e)
  121. )
  122. e := next e
  123. )
  124. end
  125.  
  126. script, fetch last, a, begin
  127. variable(e)
  128. e := last child(a)
  129. exit returning(get slice extra(e, 0))
  130. end
  131.  
  132. script, fetch, a, index, begin
  133. variable(e)
  134. e := slice child(a, index)
  135. exit returning(get slice extra(e, 0))
  136. end
  137.  
  138. script, fetch out, a, index, begin
  139. variable(e, v)
  140. e := slice child(a, index)
  141. v := get slice extra(e, 0)
  142. free slice(e)
  143. exit returning(v)
  144. end
  145.  
  146. script, trim array, a, max, begin
  147. variable(e)
  148. while(array length(a) > max + 1) do(
  149. e := last child(a)
  150. free slice(e)
  151. )
  152. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement