goscript 0.0.34 → 0.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/compiler/analysis.go +28 -20
  2. package/compiler/analysis_test.go +14 -0
  3. package/compiler/assignment.go +19 -7
  4. package/compiler/compiler.go +15 -99
  5. package/compiler/composite-lit.go +60 -17
  6. package/compiler/decl.go +1 -1
  7. package/compiler/expr-call.go +233 -35
  8. package/compiler/expr-selector.go +28 -2
  9. package/compiler/expr.go +13 -37
  10. package/compiler/lit.go +111 -2
  11. package/compiler/primitive.go +6 -6
  12. package/compiler/protobuf.go +0 -5
  13. package/compiler/sanitize.go +101 -0
  14. package/compiler/spec-struct.go +41 -8
  15. package/compiler/spec-value.go +29 -18
  16. package/compiler/stmt-assign.go +22 -1
  17. package/compiler/stmt.go +26 -9
  18. package/compiler/type.go +3 -3
  19. package/dist/gs/builtin/builtin.d.ts +3 -2
  20. package/dist/gs/builtin/builtin.js +2 -1
  21. package/dist/gs/builtin/builtin.js.map +1 -1
  22. package/dist/gs/builtin/map.js.map +1 -1
  23. package/dist/gs/builtin/slice.d.ts +7 -1
  24. package/dist/gs/builtin/slice.js +112 -22
  25. package/dist/gs/builtin/slice.js.map +1 -1
  26. package/dist/gs/github.com/pkg/errors/errors.d.ts +13 -0
  27. package/dist/gs/github.com/pkg/errors/errors.js +232 -0
  28. package/dist/gs/github.com/pkg/errors/errors.js.map +1 -0
  29. package/dist/gs/github.com/pkg/errors/go113.d.ts +4 -0
  30. package/dist/gs/github.com/pkg/errors/go113.js +34 -0
  31. package/dist/gs/github.com/pkg/errors/go113.js.map +1 -0
  32. package/dist/gs/github.com/pkg/errors/index.d.ts +3 -0
  33. package/dist/gs/github.com/pkg/errors/index.js +4 -0
  34. package/dist/gs/github.com/pkg/errors/index.js.map +1 -0
  35. package/dist/gs/github.com/pkg/errors/stack.d.ts +32 -0
  36. package/dist/gs/github.com/pkg/errors/stack.js +111 -0
  37. package/dist/gs/github.com/pkg/errors/stack.js.map +1 -0
  38. package/dist/gs/maps/index.d.ts +2 -2
  39. package/dist/gs/maps/index.js +2 -2
  40. package/dist/gs/maps/index.js.map +1 -1
  41. package/dist/gs/maps/iter.d.ts +7 -0
  42. package/dist/gs/maps/iter.js +57 -0
  43. package/dist/gs/maps/iter.js.map +1 -0
  44. package/dist/gs/maps/maps.d.ts +7 -0
  45. package/dist/gs/maps/maps.js +67 -0
  46. package/dist/gs/maps/maps.js.map +1 -0
  47. package/dist/gs/math/abs.gs.d.ts +1 -0
  48. package/dist/gs/math/abs.gs.js +10 -0
  49. package/dist/gs/math/abs.gs.js.map +1 -0
  50. package/dist/gs/math/acosh.gs.d.ts +2 -0
  51. package/dist/gs/math/acosh.gs.js +14 -0
  52. package/dist/gs/math/acosh.gs.js.map +1 -0
  53. package/dist/gs/math/asin.gs.d.ts +4 -0
  54. package/dist/gs/math/asin.gs.js +24 -0
  55. package/dist/gs/math/asin.gs.js.map +1 -0
  56. package/dist/gs/math/asinh.gs.d.ts +2 -0
  57. package/dist/gs/math/asinh.gs.js +14 -0
  58. package/dist/gs/math/asinh.gs.js.map +1 -0
  59. package/dist/gs/math/atan.gs.d.ts +4 -0
  60. package/dist/gs/math/atan.gs.js +22 -0
  61. package/dist/gs/math/atan.gs.js.map +1 -0
  62. package/dist/gs/math/atan2.gs.d.ts +2 -0
  63. package/dist/gs/math/atan2.gs.js +30 -0
  64. package/dist/gs/math/atan2.gs.js.map +1 -0
  65. package/dist/gs/math/atanh.gs.d.ts +2 -0
  66. package/dist/gs/math/atanh.gs.js +16 -0
  67. package/dist/gs/math/atanh.gs.js.map +1 -0
  68. package/dist/gs/math/bits.gs.d.ts +5 -0
  69. package/dist/gs/math/bits.gs.js +46 -0
  70. package/dist/gs/math/bits.gs.js.map +1 -0
  71. package/dist/gs/math/cbrt.gs.d.ts +2 -0
  72. package/dist/gs/math/cbrt.gs.js +14 -0
  73. package/dist/gs/math/cbrt.gs.js.map +1 -0
  74. package/dist/gs/math/const.gs.d.ts +30 -0
  75. package/dist/gs/math/const.gs.js +61 -0
  76. package/dist/gs/math/const.gs.js.map +1 -0
  77. package/dist/gs/math/copysign.gs.d.ts +1 -0
  78. package/dist/gs/math/copysign.gs.js +20 -0
  79. package/dist/gs/math/copysign.gs.js.map +1 -0
  80. package/dist/gs/math/dim.gs.d.ts +5 -0
  81. package/dist/gs/math/dim.gs.js +69 -0
  82. package/dist/gs/math/dim.gs.js.map +1 -0
  83. package/dist/gs/math/erf.gs.d.ts +4 -0
  84. package/dist/gs/math/erf.gs.js +336 -0
  85. package/dist/gs/math/erf.gs.js.map +1 -0
  86. package/dist/gs/math/erfinv.gs.d.ts +2 -0
  87. package/dist/gs/math/erfinv.gs.js +118 -0
  88. package/dist/gs/math/erfinv.gs.js.map +1 -0
  89. package/dist/gs/math/exp.gs.d.ts +5 -0
  90. package/dist/gs/math/exp.gs.js +30 -0
  91. package/dist/gs/math/exp.gs.js.map +1 -0
  92. package/dist/gs/math/expm1.gs.d.ts +2 -0
  93. package/dist/gs/math/expm1.gs.js +17 -0
  94. package/dist/gs/math/expm1.gs.js.map +1 -0
  95. package/dist/gs/math/floor.gs.d.ts +8 -0
  96. package/dist/gs/math/floor.gs.js +75 -0
  97. package/dist/gs/math/floor.gs.js.map +1 -0
  98. package/dist/gs/math/fma.gs.d.ts +1 -0
  99. package/dist/gs/math/fma.gs.js +8 -0
  100. package/dist/gs/math/fma.gs.js.map +1 -0
  101. package/dist/gs/math/frexp.gs.d.ts +2 -0
  102. package/dist/gs/math/frexp.gs.js +28 -0
  103. package/dist/gs/math/frexp.gs.js.map +1 -0
  104. package/dist/gs/math/gamma.gs.d.ts +3 -0
  105. package/dist/gs/math/gamma.gs.js +149 -0
  106. package/dist/gs/math/gamma.gs.js.map +1 -0
  107. package/dist/gs/math/hypot.gs.d.ts +2 -0
  108. package/dist/gs/math/hypot.gs.js +16 -0
  109. package/dist/gs/math/hypot.gs.js.map +1 -0
  110. package/dist/gs/math/index.d.ts +44 -0
  111. package/dist/gs/math/index.js +45 -0
  112. package/dist/gs/math/index.js.map +1 -0
  113. package/dist/gs/math/j0.gs.d.ts +4 -0
  114. package/dist/gs/math/j0.gs.js +228 -0
  115. package/dist/gs/math/j0.gs.js.map +1 -0
  116. package/dist/gs/math/j1.gs.d.ts +4 -0
  117. package/dist/gs/math/j1.gs.js +211 -0
  118. package/dist/gs/math/j1.gs.js.map +1 -0
  119. package/dist/gs/math/jn.gs.d.ts +2 -0
  120. package/dist/gs/math/jn.gs.js +412 -0
  121. package/dist/gs/math/jn.gs.js.map +1 -0
  122. package/dist/gs/math/ldexp.gs.d.ts +2 -0
  123. package/dist/gs/math/ldexp.gs.js +20 -0
  124. package/dist/gs/math/ldexp.gs.js.map +1 -0
  125. package/dist/gs/math/lgamma.gs.d.ts +2 -0
  126. package/dist/gs/math/lgamma.gs.js +243 -0
  127. package/dist/gs/math/lgamma.gs.js.map +1 -0
  128. package/dist/gs/math/log.gs.d.ts +2 -0
  129. package/dist/gs/math/log.gs.js +16 -0
  130. package/dist/gs/math/log.gs.js.map +1 -0
  131. package/dist/gs/math/log10.gs.d.ts +4 -0
  132. package/dist/gs/math/log10.gs.js +17 -0
  133. package/dist/gs/math/log10.gs.js.map +1 -0
  134. package/dist/gs/math/log1p.gs.d.ts +2 -0
  135. package/dist/gs/math/log1p.gs.js +17 -0
  136. package/dist/gs/math/log1p.gs.js.map +1 -0
  137. package/dist/gs/math/logb.gs.d.ts +3 -0
  138. package/dist/gs/math/logb.gs.js +43 -0
  139. package/dist/gs/math/logb.gs.js.map +1 -0
  140. package/dist/gs/math/mod.gs.d.ts +2 -0
  141. package/dist/gs/math/mod.gs.js +26 -0
  142. package/dist/gs/math/mod.gs.js.map +1 -0
  143. package/dist/gs/math/modf.gs.d.ts +2 -0
  144. package/dist/gs/math/modf.gs.js +24 -0
  145. package/dist/gs/math/modf.gs.js.map +1 -0
  146. package/dist/gs/math/nextafter.gs.d.ts +2 -0
  147. package/dist/gs/math/nextafter.gs.js +66 -0
  148. package/dist/gs/math/nextafter.gs.js.map +1 -0
  149. package/dist/gs/math/pow.gs.d.ts +3 -0
  150. package/dist/gs/math/pow.gs.js +40 -0
  151. package/dist/gs/math/pow.gs.js.map +1 -0
  152. package/dist/gs/math/pow10.gs.d.ts +1 -0
  153. package/dist/gs/math/pow10.gs.js +14 -0
  154. package/dist/gs/math/pow10.gs.js.map +1 -0
  155. package/dist/gs/math/remainder.gs.d.ts +2 -0
  156. package/dist/gs/math/remainder.gs.js +25 -0
  157. package/dist/gs/math/remainder.gs.js.map +1 -0
  158. package/dist/gs/math/signbit.gs.d.ts +1 -0
  159. package/dist/gs/math/signbit.gs.js +5 -0
  160. package/dist/gs/math/signbit.gs.js.map +1 -0
  161. package/dist/gs/math/sin.gs.d.ts +4 -0
  162. package/dist/gs/math/sin.gs.js +29 -0
  163. package/dist/gs/math/sin.gs.js.map +1 -0
  164. package/dist/gs/math/sincos.gs.d.ts +1 -0
  165. package/dist/gs/math/sincos.gs.js +11 -0
  166. package/dist/gs/math/sincos.gs.js.map +1 -0
  167. package/dist/gs/math/sinh.gs.d.ts +4 -0
  168. package/dist/gs/math/sinh.gs.js +27 -0
  169. package/dist/gs/math/sinh.gs.js.map +1 -0
  170. package/dist/gs/math/sqrt.gs.d.ts +2 -0
  171. package/dist/gs/math/sqrt.gs.js +15 -0
  172. package/dist/gs/math/sqrt.gs.js.map +1 -0
  173. package/dist/gs/math/tan.gs.d.ts +2 -0
  174. package/dist/gs/math/tan.gs.js +17 -0
  175. package/dist/gs/math/tan.gs.js.map +1 -0
  176. package/dist/gs/math/tanh.gs.d.ts +2 -0
  177. package/dist/gs/math/tanh.gs.js +17 -0
  178. package/dist/gs/math/tanh.gs.js.map +1 -0
  179. package/dist/gs/math/trig_reduce.gs.d.ts +1 -0
  180. package/dist/gs/math/trig_reduce.gs.js +62 -0
  181. package/dist/gs/math/trig_reduce.gs.js.map +1 -0
  182. package/dist/gs/math/unsafe.gs.d.ts +4 -0
  183. package/dist/gs/math/unsafe.gs.js +47 -0
  184. package/dist/gs/math/unsafe.gs.js.map +1 -0
  185. package/dist/gs/strconv/atob.gs.d.ts +4 -0
  186. package/dist/gs/strconv/atob.gs.js +42 -0
  187. package/dist/gs/strconv/atob.gs.js.map +1 -0
  188. package/dist/gs/strconv/atof.gs.d.ts +2 -0
  189. package/dist/gs/strconv/atof.gs.js +51 -0
  190. package/dist/gs/strconv/atof.gs.js.map +1 -0
  191. package/dist/gs/strconv/atoi.gs.d.ts +33 -0
  192. package/dist/gs/strconv/atoi.gs.js +200 -0
  193. package/dist/gs/strconv/atoi.gs.js.map +1 -0
  194. package/dist/gs/strconv/doc.gs.d.ts +1 -0
  195. package/dist/gs/strconv/doc.gs.js +2 -0
  196. package/dist/gs/strconv/doc.gs.js.map +1 -0
  197. package/dist/gs/strconv/ftoa.gs.d.ts +3 -0
  198. package/dist/gs/strconv/ftoa.gs.js +58 -0
  199. package/dist/gs/strconv/ftoa.gs.js.map +1 -0
  200. package/dist/gs/strconv/index.d.ts +6 -0
  201. package/dist/gs/strconv/index.js +7 -0
  202. package/dist/gs/strconv/index.js.map +1 -0
  203. package/dist/gs/strconv/itoa.gs.d.ts +6 -0
  204. package/dist/gs/strconv/itoa.gs.js +37 -0
  205. package/dist/gs/strconv/itoa.gs.js.map +1 -0
  206. package/dist/gs/strconv/quote.gs.d.ts +19 -0
  207. package/dist/gs/strconv/quote.gs.js +217 -0
  208. package/dist/gs/strconv/quote.gs.js.map +1 -0
  209. package/dist/gs/strings/index.d.ts +3 -0
  210. package/dist/gs/strings/index.js +4 -0
  211. package/dist/gs/strings/index.js.map +1 -1
  212. package/dist/gs/strings/replace.d.ts +0 -74
  213. package/dist/gs/strings/replace.js +6 -204
  214. package/dist/gs/strings/replace.js.map +1 -1
  215. package/dist/gs/strings/search.d.ts +0 -1
  216. package/dist/gs/strings/search.js +0 -21
  217. package/dist/gs/strings/search.js.map +1 -1
  218. package/dist/gs/sync/atomic/doc.gs.d.ts +28 -0
  219. package/dist/gs/sync/atomic/doc.gs.js +265 -0
  220. package/dist/gs/sync/atomic/doc.gs.js.map +1 -0
  221. package/dist/gs/sync/atomic/doc_64.gs.d.ts +15 -0
  222. package/dist/gs/sync/atomic/doc_64.gs.js +165 -0
  223. package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -0
  224. package/dist/gs/sync/atomic/index.d.ts +4 -0
  225. package/dist/gs/sync/atomic/index.js +5 -0
  226. package/dist/gs/sync/atomic/index.js.map +1 -0
  227. package/dist/gs/sync/atomic/type.gs.d.ts +130 -0
  228. package/dist/gs/sync/atomic/type.gs.js +433 -0
  229. package/dist/gs/sync/atomic/type.gs.js.map +1 -0
  230. package/dist/gs/sync/atomic/value.gs.d.ts +19 -0
  231. package/dist/gs/sync/atomic/value.gs.js +116 -0
  232. package/dist/gs/sync/atomic/value.gs.js.map +1 -0
  233. package/dist/gs/unsafe/unsafe.d.ts +1 -0
  234. package/dist/gs/unsafe/unsafe.js +5 -0
  235. package/dist/gs/unsafe/unsafe.js.map +1 -1
  236. package/gs/builtin/builtin.ts +9 -7
  237. package/gs/builtin/map.ts +5 -1
  238. package/gs/builtin/slice.ts +152 -24
  239. package/gs/github.com/pkg/errors/errors.ts +307 -0
  240. package/gs/github.com/pkg/errors/go113.ts +39 -0
  241. package/gs/github.com/pkg/errors/index.ts +3 -0
  242. package/gs/github.com/pkg/errors/stack.ts +127 -0
  243. package/gs/maps/index.ts +2 -2
  244. package/gs/maps/iter.ts +67 -0
  245. package/gs/maps/maps.ts +89 -0
  246. package/gs/math/TODO.md +156 -0
  247. package/gs/math/abs.gs.test.ts +29 -0
  248. package/gs/math/abs.gs.ts +13 -0
  249. package/gs/math/acosh.gs.test.ts +39 -0
  250. package/gs/math/acosh.gs.ts +21 -0
  251. package/gs/math/asin.gs.test.ts +66 -0
  252. package/gs/math/asin.gs.ts +27 -0
  253. package/gs/math/asinh.gs.test.ts +37 -0
  254. package/gs/math/asinh.gs.ts +21 -0
  255. package/gs/math/atan.gs.test.ts +49 -0
  256. package/gs/math/atan.gs.ts +27 -0
  257. package/gs/math/atan2.gs.test.ts +55 -0
  258. package/gs/math/atan2.gs.ts +37 -0
  259. package/gs/math/atanh.gs.test.ts +47 -0
  260. package/gs/math/atanh.gs.ts +21 -0
  261. package/gs/math/bits.gs.test.ts +88 -0
  262. package/gs/math/bits.gs.ts +61 -0
  263. package/gs/math/cbrt.gs.test.ts +57 -0
  264. package/gs/math/cbrt.gs.ts +20 -0
  265. package/gs/math/const.gs.test.ts +54 -0
  266. package/gs/math/const.gs.ts +93 -0
  267. package/gs/math/copysign.gs.test.ts +44 -0
  268. package/gs/math/copysign.gs.ts +27 -0
  269. package/gs/math/dim.gs.test.ts +102 -0
  270. package/gs/math/dim.gs.ts +84 -0
  271. package/gs/math/erf.gs.test.ts +92 -0
  272. package/gs/math/erf.gs.ts +409 -0
  273. package/gs/math/erfinv.gs.test.ts +104 -0
  274. package/gs/math/erfinv.gs.ts +169 -0
  275. package/gs/math/exp.gs.test.ts +82 -0
  276. package/gs/math/exp.gs.ts +39 -0
  277. package/gs/math/expm1.gs.test.ts +48 -0
  278. package/gs/math/expm1.gs.ts +23 -0
  279. package/gs/math/floor.gs.test.ts +146 -0
  280. package/gs/math/floor.gs.ts +88 -0
  281. package/gs/math/fma.gs.test.ts +83 -0
  282. package/gs/math/fma.gs.ts +7 -0
  283. package/gs/math/frexp.gs.test.ts +146 -0
  284. package/gs/math/frexp.gs.ts +37 -0
  285. package/gs/math/gamma.gs.test.ts +66 -0
  286. package/gs/math/gamma.gs.ts +158 -0
  287. package/gs/math/hypot.gs.test.ts +73 -0
  288. package/gs/math/hypot.gs.ts +23 -0
  289. package/gs/math/index.ts +44 -0
  290. package/gs/math/j0.gs.test.ts +74 -0
  291. package/gs/math/j0.gs.ts +257 -0
  292. package/gs/math/j1.gs.test.ts +81 -0
  293. package/gs/math/j1.gs.ts +231 -0
  294. package/gs/math/jn.gs.test.ts +133 -0
  295. package/gs/math/jn.gs.ts +447 -0
  296. package/gs/math/ldexp.gs.test.ts +128 -0
  297. package/gs/math/ldexp.gs.ts +28 -0
  298. package/gs/math/lgamma.gs.test.ts +102 -0
  299. package/gs/math/lgamma.gs.ts +251 -0
  300. package/gs/math/log.gs.test.ts +40 -0
  301. package/gs/math/log.gs.ts +21 -0
  302. package/gs/math/log10.gs.test.ts +80 -0
  303. package/gs/math/log10.gs.ts +25 -0
  304. package/gs/math/log1p.gs.test.ts +55 -0
  305. package/gs/math/log1p.gs.ts +24 -0
  306. package/gs/math/logb.gs.test.ts +87 -0
  307. package/gs/math/logb.gs.ts +54 -0
  308. package/gs/math/mod.gs.test.ts +64 -0
  309. package/gs/math/mod.gs.ts +36 -0
  310. package/gs/math/modf.gs.test.ts +80 -0
  311. package/gs/math/modf.gs.ts +32 -0
  312. package/gs/math/nextafter.gs.test.ts +107 -0
  313. package/gs/math/nextafter.gs.ts +71 -0
  314. package/gs/math/pow.gs.test.ts +103 -0
  315. package/gs/math/pow.gs.ts +55 -0
  316. package/gs/math/pow10.gs.test.ts +58 -0
  317. package/gs/math/pow10.gs.ts +19 -0
  318. package/gs/math/remainder.gs.test.ts +70 -0
  319. package/gs/math/remainder.gs.ts +33 -0
  320. package/gs/math/signbit.gs.test.ts +33 -0
  321. package/gs/math/signbit.gs.ts +8 -0
  322. package/gs/math/sin.gs.test.ts +83 -0
  323. package/gs/math/sin.gs.ts +38 -0
  324. package/gs/math/sincos.gs.test.ts +91 -0
  325. package/gs/math/sincos.gs.ts +15 -0
  326. package/gs/math/sinh.gs.test.ts +66 -0
  327. package/gs/math/sinh.gs.ts +34 -0
  328. package/gs/math/sqrt.gs.test.ts +49 -0
  329. package/gs/math/sqrt.gs.ts +20 -0
  330. package/gs/math/tan.gs.test.ts +50 -0
  331. package/gs/math/tan.gs.ts +23 -0
  332. package/gs/math/tanh.gs.test.ts +52 -0
  333. package/gs/math/tanh.gs.ts +23 -0
  334. package/gs/math/trig_reduce.gs.ts +66 -0
  335. package/gs/math/unsafe.gs.ts +52 -0
  336. package/gs/strconv/atob.gs.ts +45 -0
  337. package/gs/strconv/atof.gs.ts +60 -0
  338. package/gs/strconv/atoi.gs.ts +243 -0
  339. package/gs/strconv/doc.gs.ts +2 -0
  340. package/gs/strconv/ftoa.gs.ts +66 -0
  341. package/gs/strconv/index.ts +6 -0
  342. package/gs/strconv/itoa.gs.ts +41 -0
  343. package/gs/strconv/quote.gs.ts +245 -0
  344. package/gs/strings/index.ts +4 -0
  345. package/gs/strings/replace.ts +9 -237
  346. package/gs/strings/search.ts +0 -28
  347. package/gs/sync/atomic/doc.gs.ts +276 -0
  348. package/gs/sync/atomic/doc_64.gs.ts +168 -0
  349. package/gs/sync/atomic/index.ts +4 -0
  350. package/gs/sync/atomic/type.gs.ts +596 -0
  351. package/gs/sync/atomic/value.gs.ts +158 -0
  352. package/gs/unsafe/unsafe.ts +6 -0
  353. package/package.json +1 -1
  354. package/gs/maps/iter.gs.ts +0 -71
  355. package/gs/maps/maps.gs.ts +0 -87
  356. package/gs/stringslite/godoc.txt +0 -17
  357. package/gs/stringslite/index.ts +0 -1
  358. package/gs/stringslite/strings.ts +0 -82
@@ -0,0 +1,265 @@
1
+ // SwapInt32 atomically stores new into *addr and returns the previous *addr value.
2
+ // Consider using the more ergonomic and less error-prone [Int32.Swap] instead.
3
+ //
4
+ //go:noescape
5
+ export function SwapInt32(addr, _new) {
6
+ if (!addr)
7
+ return 0;
8
+ let old = addr.value;
9
+ addr.value = _new;
10
+ return old;
11
+ }
12
+ // SwapUint32 atomically stores new into *addr and returns the previous *addr value.
13
+ // Consider using the more ergonomic and less error-prone [Uint32.Swap] instead.
14
+ //
15
+ //go:noescape
16
+ export function SwapUint32(addr, _new) {
17
+ if (!addr)
18
+ return 0;
19
+ let old = addr.value;
20
+ addr.value = _new;
21
+ return old;
22
+ }
23
+ // SwapUintptr atomically stores new into *addr and returns the previous *addr value.
24
+ // Consider using the more ergonomic and less error-prone [Uintptr.Swap] instead.
25
+ //
26
+ //go:noescape
27
+ export function SwapUintptr(addr, _new) {
28
+ if (!addr)
29
+ return 0;
30
+ let old = addr.value;
31
+ addr.value = _new;
32
+ return old;
33
+ }
34
+ // SwapPointer atomically stores new into *addr and returns the previous *addr value.
35
+ // Consider using the more ergonomic and less error-prone [Pointer.Swap] instead.
36
+ export function SwapPointer(addr, _new) {
37
+ if (!addr)
38
+ return null;
39
+ let old = addr.value;
40
+ addr.value = _new;
41
+ return old;
42
+ }
43
+ // CompareAndSwapInt32 executes the compare-and-swap operation for an int32 value.
44
+ // Consider using the more ergonomic and less error-prone [Int32.CompareAndSwap] instead.
45
+ //
46
+ //go:noescape
47
+ export function CompareAndSwapInt32(addr, old, _new) {
48
+ if (!addr)
49
+ return false;
50
+ if (addr.value === old) {
51
+ addr.value = _new;
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ // CompareAndSwapUint32 executes the compare-and-swap operation for a uint32 value.
57
+ // Consider using the more ergonomic and less error-prone [Uint32.CompareAndSwap] instead.
58
+ //
59
+ //go:noescape
60
+ export function CompareAndSwapUint32(addr, old, _new) {
61
+ if (!addr)
62
+ return false;
63
+ if (addr.value === old) {
64
+ addr.value = _new;
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ // CompareAndSwapUintptr executes the compare-and-swap operation for a uintptr value.
70
+ // Consider using the more ergonomic and less error-prone [Uintptr.CompareAndSwap] instead.
71
+ //
72
+ //go:noescape
73
+ export function CompareAndSwapUintptr(addr, old, _new) {
74
+ if (!addr)
75
+ return false;
76
+ if (addr.value === old) {
77
+ addr.value = _new;
78
+ return true;
79
+ }
80
+ return false;
81
+ }
82
+ // CompareAndSwapPointer executes the compare-and-swap operation for a unsafe.Pointer value.
83
+ // Consider using the more ergonomic and less error-prone [Pointer.CompareAndSwap] instead.
84
+ export function CompareAndSwapPointer(addr, old, _new) {
85
+ if (!addr)
86
+ return false;
87
+ if (addr.value === old) {
88
+ addr.value = _new;
89
+ return true;
90
+ }
91
+ return false;
92
+ }
93
+ // AddInt32 atomically adds delta to *addr and returns the new value.
94
+ // Consider using the more ergonomic and less error-prone [Int32.Add] instead.
95
+ //
96
+ //go:noescape
97
+ export function AddInt32(addr, delta) {
98
+ if (!addr)
99
+ return 0;
100
+ addr.value = (addr.value + delta) | 0; // Use bitwise OR to ensure 32-bit signed integer
101
+ return addr.value;
102
+ }
103
+ // AddUint32 atomically adds delta to *addr and returns the new value.
104
+ // To subtract a signed positive constant value c from x, do AddUint32(&x, ^uint32(c-1)).
105
+ // In particular, to decrement x, do AddUint32(&x, ^uint32(0)).
106
+ // Consider using the more ergonomic and less error-prone [Uint32.Add] instead.
107
+ //
108
+ //go:noescape
109
+ export function AddUint32(addr, delta) {
110
+ if (!addr)
111
+ return 0;
112
+ addr.value = (addr.value + delta) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
113
+ return addr.value;
114
+ }
115
+ // AddUintptr atomically adds delta to *addr and returns the new value.
116
+ // Consider using the more ergonomic and less error-prone [Uintptr.Add] instead.
117
+ //
118
+ //go:noescape
119
+ export function AddUintptr(addr, delta) {
120
+ if (!addr)
121
+ return 0;
122
+ addr.value = (addr.value + delta) >>> 0; // Use unsigned right shift for uintptr
123
+ return addr.value;
124
+ }
125
+ // AndInt32 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
126
+ // and returns the old value.
127
+ // Consider using the more ergonomic and less error-prone [Int32.And] instead.
128
+ //
129
+ //go:noescape
130
+ export function AndInt32(addr, mask) {
131
+ if (!addr)
132
+ return 0;
133
+ let old = addr.value;
134
+ addr.value = (addr.value & mask) | 0; // Use bitwise OR to ensure 32-bit signed integer
135
+ return old;
136
+ }
137
+ // AndUint32 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
138
+ // and returns the old value.
139
+ // Consider using the more ergonomic and less error-prone [Uint32.And] instead.
140
+ //
141
+ //go:noescape
142
+ export function AndUint32(addr, mask) {
143
+ if (!addr)
144
+ return 0;
145
+ let old = addr.value;
146
+ addr.value = (addr.value & mask) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
147
+ return old;
148
+ }
149
+ // AndUintptr atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
150
+ // and returns the old value.
151
+ // Consider using the more ergonomic and less error-prone [Uintptr.And] instead.
152
+ //
153
+ //go:noescape
154
+ export function AndUintptr(addr, mask) {
155
+ if (!addr)
156
+ return 0;
157
+ let old = addr.value;
158
+ addr.value = (addr.value & mask) >>> 0; // Use unsigned right shift for uintptr
159
+ return old;
160
+ }
161
+ // OrInt32 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
162
+ // and returns the old value.
163
+ // Consider using the more ergonomic and less error-prone [Int32.Or] instead.
164
+ //
165
+ //go:noescape
166
+ export function OrInt32(addr, mask) {
167
+ if (!addr)
168
+ return 0;
169
+ let old = addr.value;
170
+ addr.value = (addr.value | mask) | 0; // Use bitwise OR to ensure 32-bit signed integer
171
+ return old;
172
+ }
173
+ // OrUint32 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
174
+ // and returns the old value.
175
+ // Consider using the more ergonomic and less error-prone [Uint32.Or] instead.
176
+ //
177
+ //go:noescape
178
+ export function OrUint32(addr, mask) {
179
+ if (!addr)
180
+ return 0;
181
+ let old = addr.value;
182
+ addr.value = (addr.value | mask) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
183
+ return old;
184
+ }
185
+ // OrUintptr atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
186
+ // and returns the old value.
187
+ // Consider using the more ergonomic and less error-prone [Uintptr.Or] instead.
188
+ //
189
+ //go:noescape
190
+ export function OrUintptr(addr, mask) {
191
+ if (!addr)
192
+ return 0;
193
+ let old = addr.value;
194
+ addr.value = (addr.value | mask) >>> 0; // Use unsigned right shift for uintptr
195
+ return old;
196
+ }
197
+ // LoadInt32 atomically loads *addr.
198
+ // Consider using the more ergonomic and less error-prone [Int32.Load] instead.
199
+ //
200
+ //go:noescape
201
+ export function LoadInt32(addr) {
202
+ if (!addr)
203
+ return 0;
204
+ return addr.value;
205
+ }
206
+ // LoadUint32 atomically loads *addr.
207
+ // Consider using the more ergonomic and less error-prone [Uint32.Load] instead.
208
+ //
209
+ //go:noescape
210
+ export function LoadUint32(addr) {
211
+ if (!addr)
212
+ return 0;
213
+ return addr.value;
214
+ }
215
+ // LoadUintptr atomically loads *addr.
216
+ // Consider using the more ergonomic and less error-prone [Uintptr.Load] instead.
217
+ //
218
+ //go:noescape
219
+ export function LoadUintptr(addr) {
220
+ if (!addr)
221
+ return 0;
222
+ return addr.value;
223
+ }
224
+ // LoadPointer atomically loads *addr.
225
+ // Consider using the more ergonomic and less error-prone [Pointer.Load] instead.
226
+ export function LoadPointer(addr) {
227
+ if (!addr)
228
+ return null;
229
+ return addr.value;
230
+ }
231
+ // StoreInt32 atomically stores val into *addr.
232
+ // Consider using the more ergonomic and less error-prone [Int32.Store] instead.
233
+ //
234
+ //go:noescape
235
+ export function StoreInt32(addr, val) {
236
+ if (addr) {
237
+ addr.value = val | 0; // Use bitwise OR to ensure 32-bit signed integer
238
+ }
239
+ }
240
+ // StoreUint32 atomically stores val into *addr.
241
+ // Consider using the more ergonomic and less error-prone [Uint32.Store] instead.
242
+ //
243
+ //go:noescape
244
+ export function StoreUint32(addr, val) {
245
+ if (addr) {
246
+ addr.value = val >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
247
+ }
248
+ }
249
+ // StoreUintptr atomically stores val into *addr.
250
+ // Consider using the more ergonomic and less error-prone [Uintptr.Store] instead.
251
+ //
252
+ //go:noescape
253
+ export function StoreUintptr(addr, val) {
254
+ if (addr) {
255
+ addr.value = val >>> 0; // Use unsigned right shift for uintptr
256
+ }
257
+ }
258
+ // StorePointer atomically stores val into *addr.
259
+ // Consider using the more ergonomic and less error-prone [Pointer.Store] instead.
260
+ export function StorePointer(addr, val) {
261
+ if (addr) {
262
+ addr.value = val;
263
+ }
264
+ }
265
+ //# sourceMappingURL=doc.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.gs.js","sourceRoot":"","sources":["../../../../gs/sync/atomic/doc.gs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ export declare function SwapInt64(addr: $.VarRef<number> | null, _new: number): number;
3
+ export declare function SwapUint64(addr: $.VarRef<number> | null, _new: number): number;
4
+ export declare function CompareAndSwapInt64(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
5
+ export declare function CompareAndSwapUint64(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
6
+ export declare function AddInt64(addr: $.VarRef<number> | null, delta: number): number;
7
+ export declare function AddUint64(addr: $.VarRef<number> | null, delta: number): number;
8
+ export declare function AndInt64(addr: $.VarRef<number> | null, mask: number): number;
9
+ export declare function AndUint64(addr: $.VarRef<number> | null, mask: number): number;
10
+ export declare function OrInt64(addr: $.VarRef<number> | null, mask: number): number;
11
+ export declare function OrUint64(addr: $.VarRef<number> | null, mask: number): number;
12
+ export declare function LoadInt64(addr: $.VarRef<number> | null): number;
13
+ export declare function LoadUint64(addr: $.VarRef<number> | null): number;
14
+ export declare function StoreInt64(addr: $.VarRef<number> | null, val: number): void;
15
+ export declare function StoreUint64(addr: $.VarRef<number> | null, val: number): void;
@@ -0,0 +1,165 @@
1
+ // SwapInt64 atomically stores new into *addr and returns the previous *addr value.
2
+ // Consider using the more ergonomic and less error-prone [Int64.Swap] instead
3
+ // (particularly if you target 32-bit platforms; see the bugs section).
4
+ //
5
+ //go:noescape
6
+ export function SwapInt64(addr, _new) {
7
+ if (!addr)
8
+ return 0;
9
+ let old = addr.value;
10
+ addr.value = _new;
11
+ return old;
12
+ }
13
+ // SwapUint64 atomically stores new into *addr and returns the previous *addr value.
14
+ // Consider using the more ergonomic and less error-prone [Uint64.Swap] instead
15
+ // (particularly if you target 32-bit platforms; see the bugs section).
16
+ //
17
+ //go:noescape
18
+ export function SwapUint64(addr, _new) {
19
+ if (!addr)
20
+ return 0;
21
+ let old = addr.value;
22
+ addr.value = _new;
23
+ return old;
24
+ }
25
+ // CompareAndSwapInt64 executes the compare-and-swap operation for an int64 value.
26
+ // Consider using the more ergonomic and less error-prone [Int64.CompareAndSwap] instead
27
+ // (particularly if you target 32-bit platforms; see the bugs section).
28
+ //
29
+ //go:noescape
30
+ export function CompareAndSwapInt64(addr, old, _new) {
31
+ if (!addr)
32
+ return false;
33
+ if (addr.value === old) {
34
+ addr.value = _new;
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ // CompareAndSwapUint64 executes the compare-and-swap operation for a uint64 value.
40
+ // Consider using the more ergonomic and less error-prone [Uint64.CompareAndSwap] instead
41
+ // (particularly if you target 32-bit platforms; see the bugs section).
42
+ //
43
+ //go:noescape
44
+ export function CompareAndSwapUint64(addr, old, _new) {
45
+ if (!addr)
46
+ return false;
47
+ if (addr.value === old) {
48
+ addr.value = _new;
49
+ return true;
50
+ }
51
+ return false;
52
+ }
53
+ // AddInt64 atomically adds delta to *addr and returns the new value.
54
+ // Consider using the more ergonomic and less error-prone [Int64.Add] instead
55
+ // (particularly if you target 32-bit platforms; see the bugs section).
56
+ //
57
+ //go:noescape
58
+ export function AddInt64(addr, delta) {
59
+ if (!addr)
60
+ return 0;
61
+ addr.value = addr.value + delta;
62
+ return addr.value;
63
+ }
64
+ // AddUint64 atomically adds delta to *addr and returns the new value.
65
+ // To subtract a signed positive constant value c from x, do AddUint64(&x, ^uint64(c-1)).
66
+ // In particular, to decrement x, do AddUint64(&x, ^uint64(0)).
67
+ // Consider using the more ergonomic and less error-prone [Uint64.Add] instead
68
+ // (particularly if you target 32-bit platforms; see the bugs section).
69
+ //
70
+ //go:noescape
71
+ export function AddUint64(addr, delta) {
72
+ if (!addr)
73
+ return 0;
74
+ addr.value = addr.value + delta;
75
+ return addr.value;
76
+ }
77
+ // AndInt64 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
78
+ // and returns the old value.
79
+ // Consider using the more ergonomic and less error-prone [Int64.And] instead.
80
+ //
81
+ //go:noescape
82
+ export function AndInt64(addr, mask) {
83
+ if (!addr)
84
+ return 0;
85
+ let old = addr.value;
86
+ addr.value = addr.value & mask;
87
+ return old;
88
+ }
89
+ // AndUint64 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
90
+ // and returns the old.
91
+ // Consider using the more ergonomic and less error-prone [Uint64.And] instead.
92
+ //
93
+ //go:noescape
94
+ export function AndUint64(addr, mask) {
95
+ if (!addr)
96
+ return 0;
97
+ let old = addr.value;
98
+ addr.value = addr.value & mask;
99
+ return old;
100
+ }
101
+ // OrInt64 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
102
+ // and returns the old value.
103
+ // Consider using the more ergonomic and less error-prone [Int64.Or] instead.
104
+ //
105
+ //go:noescape
106
+ export function OrInt64(addr, mask) {
107
+ if (!addr)
108
+ return 0;
109
+ let old = addr.value;
110
+ addr.value = addr.value | mask;
111
+ return old;
112
+ }
113
+ // OrUint64 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
114
+ // and returns the old value.
115
+ // Consider using the more ergonomic and less error-prone [Uint64.Or] instead.
116
+ //
117
+ //go:noescape
118
+ export function OrUint64(addr, mask) {
119
+ if (!addr)
120
+ return 0;
121
+ let old = addr.value;
122
+ addr.value = addr.value | mask;
123
+ return old;
124
+ }
125
+ // LoadInt64 atomically loads *addr.
126
+ // Consider using the more ergonomic and less error-prone [Int64.Load] instead
127
+ // (particularly if you target 32-bit platforms; see the bugs section).
128
+ //
129
+ //go:noescape
130
+ export function LoadInt64(addr) {
131
+ if (!addr)
132
+ return 0;
133
+ return addr.value;
134
+ }
135
+ // LoadUint64 atomically loads *addr.
136
+ // Consider using the more ergonomic and less error-prone [Uint64.Load] instead
137
+ // (particularly if you target 32-bit platforms; see the bugs section).
138
+ //
139
+ //go:noescape
140
+ export function LoadUint64(addr) {
141
+ if (!addr)
142
+ return 0;
143
+ return addr.value;
144
+ }
145
+ // StoreInt64 atomically stores val into *addr.
146
+ // Consider using the more ergonomic and less error-prone [Int64.Store] instead
147
+ // (particularly if you target 32-bit platforms; see the bugs section).
148
+ //
149
+ //go:noescape
150
+ export function StoreInt64(addr, val) {
151
+ if (addr) {
152
+ addr.value = val;
153
+ }
154
+ }
155
+ // StoreUint64 atomically stores val into *addr.
156
+ // Consider using the more ergonomic and less error-prone [Uint64.Store] instead
157
+ // (particularly if you target 32-bit platforms; see the bugs section).
158
+ //
159
+ //go:noescape
160
+ export function StoreUint64(addr, val) {
161
+ if (addr) {
162
+ addr.value = val;
163
+ }
164
+ }
165
+ //# sourceMappingURL=doc_64.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc_64.gs.js","sourceRoot":"","sources":["../../../../gs/sync/atomic/doc_64.gs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { AddInt32, AddUint32, AddUintptr, AndInt32, AndUint32, AndUintptr, CompareAndSwapInt32, CompareAndSwapPointer, CompareAndSwapUint32, CompareAndSwapUintptr, LoadInt32, LoadPointer, LoadUint32, LoadUintptr, OrInt32, OrUint32, OrUintptr, StoreInt32, StorePointer, StoreUint32, StoreUintptr, SwapInt32, SwapPointer, SwapUint32, SwapUintptr } from "./doc.gs.js";
2
+ export { AddInt64, AddUint64, AndInt64, AndUint64, CompareAndSwapInt64, CompareAndSwapUint64, LoadInt64, LoadUint64, OrInt64, OrUint64, StoreInt64, StoreUint64, SwapInt64, SwapUint64 } from "./doc_64.gs.js";
3
+ export { Bool, Int32, Int64, Pointer, Uint32, Uint64, Uintptr } from "./type.gs.js";
4
+ export { Value } from "./value.gs.js";
@@ -0,0 +1,5 @@
1
+ export { AddInt32, AddUint32, AddUintptr, AndInt32, AndUint32, AndUintptr, CompareAndSwapInt32, CompareAndSwapPointer, CompareAndSwapUint32, CompareAndSwapUintptr, LoadInt32, LoadPointer, LoadUint32, LoadUintptr, OrInt32, OrUint32, OrUintptr, StoreInt32, StorePointer, StoreUint32, StoreUintptr, SwapInt32, SwapPointer, SwapUint32, SwapUintptr } from "./doc.gs.js";
2
+ export { AddInt64, AddUint64, AndInt64, AndUint64, CompareAndSwapInt64, CompareAndSwapUint64, LoadInt64, LoadUint64, OrInt64, OrUint64, StoreInt64, StoreUint64, SwapInt64, SwapUint64 } from "./doc_64.gs.js";
3
+ export { Bool, Int32, Int64, Pointer, Uint32, Uint64, Uintptr } from "./type.gs.js";
4
+ export { Value } from "./value.gs.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/sync/atomic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5W,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC9M,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,130 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { uintptr } from "./doc.gs.js";
3
+ export declare class Bool {
4
+ get v(): number;
5
+ set v(value: number);
6
+ _fields: {
7
+ v: $.VarRef<number>;
8
+ };
9
+ constructor(init?: Partial<{
10
+ v?: number;
11
+ }>);
12
+ clone(): Bool;
13
+ Load(): boolean;
14
+ Store(val: boolean): void;
15
+ Swap(_new: boolean): boolean;
16
+ CompareAndSwap(old: boolean, _new: boolean): boolean;
17
+ static __typeInfo: $.StructTypeInfo;
18
+ }
19
+ export declare function b32(b: boolean): number;
20
+ export declare class Pointer<T> {
21
+ get v(): $.VarRef<T> | null;
22
+ set v(value: $.VarRef<T> | null);
23
+ _fields: {
24
+ v: $.VarRef<$.VarRef<T> | null>;
25
+ };
26
+ constructor(init?: Partial<{
27
+ v?: $.VarRef<T> | null;
28
+ }>);
29
+ clone(): Pointer<T>;
30
+ Load(): $.VarRef<T> | null;
31
+ Store(val: T): void;
32
+ Swap(_new: T): $.VarRef<T> | null;
33
+ CompareAndSwap(old: T, _new: T): boolean;
34
+ static __typeInfo: $.StructTypeInfo;
35
+ }
36
+ export declare class Int32 {
37
+ get v(): number;
38
+ set v(value: number);
39
+ _fields: {
40
+ v: $.VarRef<number>;
41
+ };
42
+ constructor(init?: Partial<{
43
+ v?: number;
44
+ }>);
45
+ clone(): Int32;
46
+ Load(): number;
47
+ Store(val: number): void;
48
+ Swap(_new: number): number;
49
+ CompareAndSwap(old: number, _new: number): boolean;
50
+ Add(delta: number): number;
51
+ And(mask: number): number;
52
+ Or(mask: number): number;
53
+ static __typeInfo: $.StructTypeInfo;
54
+ }
55
+ export declare class Int64 {
56
+ get v(): number;
57
+ set v(value: number);
58
+ _fields: {
59
+ v: $.VarRef<number>;
60
+ };
61
+ constructor(init?: Partial<{
62
+ v?: number;
63
+ }>);
64
+ clone(): Int64;
65
+ Load(): number;
66
+ Store(val: number): void;
67
+ Swap(_new: number): number;
68
+ CompareAndSwap(old: number, _new: number): boolean;
69
+ Add(delta: number): number;
70
+ And(mask: number): number;
71
+ Or(mask: number): number;
72
+ static __typeInfo: $.StructTypeInfo;
73
+ }
74
+ export declare class Uint32 {
75
+ get v(): number;
76
+ set v(value: number);
77
+ _fields: {
78
+ v: $.VarRef<number>;
79
+ };
80
+ constructor(init?: Partial<{
81
+ v?: number;
82
+ }>);
83
+ clone(): Uint32;
84
+ Load(): number;
85
+ Store(val: number): void;
86
+ Swap(_new: number): number;
87
+ CompareAndSwap(old: number, _new: number): boolean;
88
+ Add(delta: number): number;
89
+ And(mask: number): number;
90
+ Or(mask: number): number;
91
+ static __typeInfo: $.StructTypeInfo;
92
+ }
93
+ export declare class Uint64 {
94
+ get v(): number;
95
+ set v(value: number);
96
+ _fields: {
97
+ v: $.VarRef<number>;
98
+ };
99
+ constructor(init?: Partial<{
100
+ v?: number;
101
+ }>);
102
+ clone(): Uint64;
103
+ Load(): number;
104
+ Store(val: number): void;
105
+ Swap(_new: number): number;
106
+ CompareAndSwap(old: number, _new: number): boolean;
107
+ Add(delta: number): number;
108
+ And(mask: number): number;
109
+ Or(mask: number): number;
110
+ static __typeInfo: $.StructTypeInfo;
111
+ }
112
+ export declare class Uintptr {
113
+ get v(): uintptr;
114
+ set v(value: uintptr);
115
+ _fields: {
116
+ v: $.VarRef<uintptr>;
117
+ };
118
+ constructor(init?: Partial<{
119
+ v?: uintptr;
120
+ }>);
121
+ clone(): Uintptr;
122
+ Load(): uintptr;
123
+ Store(val: uintptr): void;
124
+ Swap(_new: uintptr): uintptr;
125
+ CompareAndSwap(old: uintptr, _new: uintptr): boolean;
126
+ Add(delta: uintptr): uintptr;
127
+ And(mask: uintptr): uintptr;
128
+ Or(mask: uintptr): uintptr;
129
+ static __typeInfo: $.StructTypeInfo;
130
+ }