ranger-compiler 2.1.70 → 3.0.4

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 (363) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/README.md +956 -133
  3. package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
  4. package/dist/README.md +116 -0
  5. package/dist/{bin/api.d.ts → api.d.ts} +430 -154
  6. package/dist/api.js +34345 -0
  7. package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
  8. package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
  9. package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
  10. package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
  11. package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
  12. package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
  13. package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
  14. package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
  15. package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
  16. package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
  17. package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
  18. package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
  19. package/dist/lib/lib/ACEEditor.rgr +5 -0
  20. package/dist/lib/lib/Ajax.rgr +196 -0
  21. package/dist/lib/lib/CmdParams.rgr +72 -0
  22. package/dist/lib/lib/Crypto.rgr +90 -0
  23. package/dist/lib/lib/DOMLib.rgr +307 -0
  24. package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
  25. package/dist/lib/lib/ImmutableVector.rgr +364 -0
  26. package/dist/lib/lib/IndexedDB.rgr +32 -0
  27. package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
  28. package/dist/lib/lib/JinxProcess.rgr +838 -0
  29. package/dist/lib/lib/SQL.rgr +44 -0
  30. package/dist/lib/lib/ServiceLib.rgr +9 -0
  31. package/dist/lib/lib/Storage.rgr +89 -0
  32. package/dist/lib/lib/Time.rgr +75 -0
  33. package/dist/lib/lib/Timers.rgr +176 -0
  34. package/dist/lib/lib/TypedArrays.rgr +14 -0
  35. package/dist/lib/lib/ViewLib.rgr +851 -0
  36. package/dist/lib/lib/WebLib.rgr +47 -0
  37. package/dist/lib/lib/WebServerLib.rgr +137 -0
  38. package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
  39. package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
  40. package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
  41. package/dist/lib/ranger-dir.rgr +175 -0
  42. package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
  43. package/dist/lib/stdops.rgr +168 -0
  44. package/dist/package.json +47 -0
  45. package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -39
  48. package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
  49. package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
  50. package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
  51. package/adventofcode/day1/bin/day1.cpp +0 -124
  52. package/adventofcode/day1/bin/day1.go +0 -75
  53. package/adventofcode/day1/bin/day1.js +0 -45
  54. package/adventofcode/day1/bin/day1.php +0 -46
  55. package/adventofcode/day1/bin/day1.scala +0 -48
  56. package/adventofcode/day1/bin/day1.swift +0 -48
  57. package/adventofcode/day1/bin/day1_part2.cpp +0 -180
  58. package/adventofcode/day1/bin/day1_part2.go +0 -123
  59. package/adventofcode/day1/bin/day1_part2.js +0 -76
  60. package/adventofcode/day1/bin/day1_part2.php +0 -88
  61. package/adventofcode/day1/bin/day1_part2.scala +0 -81
  62. package/adventofcode/day1/bin/day1_part2.swift +0 -91
  63. package/adventofcode/day1/bin/day_one.java +0 -38
  64. package/adventofcode/day1/bin/day_one_part_two.java +0 -57
  65. package/adventofcode/day1/bin/operatorsOf.java +0 -37
  66. package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
  67. package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
  68. package/adventofcode/day1/bin/variant.hpp +0 -2416
  69. package/adventofcode/day1/compile.bat +0 -7
  70. package/adventofcode/day1/compile2.bat +0 -7
  71. package/adventofcode/day1/day1.clj +0 -19
  72. package/adventofcode/day1/day1_part2.clj +0 -43
  73. package/adventofcode/day1/input1.txt +0 -1
  74. package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
  75. package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
  76. package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
  77. package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
  78. package/adventofcode/day2/bin/day2.cpp +0 -133
  79. package/adventofcode/day2/bin/day2.go +0 -85
  80. package/adventofcode/day2/bin/day2.js +0 -45
  81. package/adventofcode/day2/bin/day2.php +0 -59
  82. package/adventofcode/day2/bin/day2.scala +0 -54
  83. package/adventofcode/day2/bin/day2.swift +0 -62
  84. package/adventofcode/day2/bin/day2_part2.cpp +0 -150
  85. package/adventofcode/day2/bin/day2_part2.go +0 -101
  86. package/adventofcode/day2/bin/day2_part2.js +0 -54
  87. package/adventofcode/day2/bin/day2_part2.php +0 -80
  88. package/adventofcode/day2/bin/day2_part2.scala +0 -68
  89. package/adventofcode/day2/bin/day2_part2.swift +0 -82
  90. package/adventofcode/day2/bin/day_two.java +0 -61
  91. package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
  92. package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
  93. package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
  94. package/adventofcode/day2/bin/day_two_part_two.class +0 -0
  95. package/adventofcode/day2/bin/day_two_part_two.java +0 -80
  96. package/adventofcode/day2/bin/operatorsOf.class +0 -0
  97. package/adventofcode/day2/bin/operatorsOf.java +0 -18
  98. package/adventofcode/day2/bin/variant.hpp +0 -2416
  99. package/adventofcode/day2/compile.bat +0 -7
  100. package/adventofcode/day2/compile2.bat +0 -7
  101. package/adventofcode/day2/day2.clj +0 -60
  102. package/adventofcode/day2/day2_part2.clj +0 -69
  103. package/adventofcode/day2/input1.txt +0 -1
  104. package/adventofcode/day3/bin/Grid.java +0 -92
  105. package/adventofcode/day3/bin/GridRow.java +0 -5
  106. package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
  107. package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
  108. package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
  109. package/adventofcode/day3/bin/day3.cpp +0 -64
  110. package/adventofcode/day3/bin/day3.go +0 -55
  111. package/adventofcode/day3/bin/day3.js +0 -42
  112. package/adventofcode/day3/bin/day3.php +0 -41
  113. package/adventofcode/day3/bin/day3.scala +0 -52
  114. package/adventofcode/day3/bin/day3.swift +0 -43
  115. package/adventofcode/day3/bin/day3_part2.cpp +0 -216
  116. package/adventofcode/day3/bin/day3_part2.go +0 -188
  117. package/adventofcode/day3/bin/day3_part2.js +0 -123
  118. package/adventofcode/day3/bin/day3_part2.php +0 -135
  119. package/adventofcode/day3/bin/day3_part2.swift +0 -131
  120. package/adventofcode/day3/bin/day_three_part_two.java +0 -43
  121. package/adventofcode/day3/bin/day_two.java +0 -42
  122. package/adventofcode/day3/bin/operatorsOf.java +0 -14
  123. package/adventofcode/day3/bin/variant.hpp +0 -2416
  124. package/adventofcode/day3/compile.bat +0 -7
  125. package/adventofcode/day3/compile2.bat +0 -7
  126. package/adventofcode/day3/day3.clj +0 -42
  127. package/adventofcode/day3/day3_part2.clj +0 -112
  128. package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
  129. package/adventofcode/day4/bin/day4.cpp +0 -118
  130. package/adventofcode/day4/bin/day4.go +0 -75
  131. package/adventofcode/day4/bin/day4.js +0 -40
  132. package/adventofcode/day4/bin/day4.php +0 -52
  133. package/adventofcode/day4/bin/day4.scala +0 -47
  134. package/adventofcode/day4/bin/day4.swift +0 -56
  135. package/adventofcode/day4/bin/day4_part2.go +0 -129
  136. package/adventofcode/day4/bin/day4_part2.js +0 -72
  137. package/adventofcode/day4/bin/day_four.java +0 -41
  138. package/adventofcode/day4/bin/inputData.java +0 -7
  139. package/adventofcode/day4/bin/operatorsOf.java +0 -11
  140. package/adventofcode/day4/bin/variant.hpp +0 -2416
  141. package/adventofcode/day4/compile.bat +0 -7
  142. package/adventofcode/day4/compile2.bat +0 -7
  143. package/adventofcode/day4/day4.clj +0 -32
  144. package/adventofcode/day4/day4_part2.clj +0 -44
  145. package/adventofcode/day4/input.clj +0 -519
  146. package/adventofcode/day4/input.txt +0 -512
  147. package/bin/api.ts +0 -24471
  148. package/bin/compiler.ts +0 -24482
  149. package/bin/output.js +0 -23819
  150. package/compiler/ColorConsole.clj +0 -22
  151. package/compiler/ContextOperators.clj +0 -75
  152. package/compiler/FlowEnterVarDef.clj +0 -223
  153. package/compiler/InputFileSystem.clj +0 -276
  154. package/compiler/RangerDocs.clj +0 -7
  155. package/compiler/TFactory.clj +0 -146
  156. package/compiler/TFiles.clj +0 -23
  157. package/compiler/TFlow.clj +0 -39
  158. package/compiler/TNodeFactory.clj +0 -84
  159. package/compiler/TTypes.clj +0 -188
  160. package/compiler/VirtualCompiler.clj +0 -807
  161. package/compiler/bin/ng_Compiler.js +0 -23779
  162. package/compiler/commonmark_plugin.clj +0 -359
  163. package/compiler/feat2.bat +0 -2
  164. package/compiler/feats.bat +0 -9
  165. package/compiler/feature_tests.clj +0 -192
  166. package/compiler/index.js +0 -2
  167. package/compiler/issue_57.clj +0 -25
  168. package/compiler/makefile_plugin.clj +0 -135
  169. package/compiler/markdown_plugin.clj +0 -386
  170. package/compiler/maven_plugin.clj +0 -162
  171. package/compiler/ng_AndroidPageWriter.clj +0 -299
  172. package/compiler/ng_CodeNode.clj +0 -756
  173. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  174. package/compiler/ng_Compiler.clj +0 -49
  175. package/compiler/ng_CompilerGeneric.clj +0 -260
  176. package/compiler/ng_CompilerOrig.clj +0 -854
  177. package/compiler/ng_DictNode.clj +0 -346
  178. package/compiler/ng_DictNode2.clj +0 -316
  179. package/compiler/ng_Execute.clj +0 -138
  180. package/compiler/ng_Execute1.clj +0 -129
  181. package/compiler/ng_FlowWork.clj +0 -3951
  182. package/compiler/ng_LiveCompiler.clj +0 -1109
  183. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  184. package/compiler/ng_RangerActiveOperators.clj +0 -86
  185. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  186. package/compiler/ng_RangerAppEnums.clj +0 -86
  187. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  188. package/compiler/ng_RangerAppMessages.clj +0 -15
  189. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  190. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  191. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  192. package/compiler/ng_RangerArgMatch.clj +0 -638
  193. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  194. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  195. package/compiler/ng_RangerDocGenerator.clj +0 -305
  196. package/compiler/ng_RangerFlowParser.clj +0 -4992
  197. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  198. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  199. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  200. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  201. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  202. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
  203. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  204. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  205. package/compiler/ng_RangerLispParser.clj +0 -873
  206. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  207. package/compiler/ng_RangerPlugin.clj +0 -41
  208. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  209. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  210. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  211. package/compiler/ng_RangerSerializeClass.clj +0 -502
  212. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  213. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  214. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  215. package/compiler/ng_RangerTypeClass.clj +0 -45
  216. package/compiler/ng_SourceParser.clj +0 -241
  217. package/compiler/ng_SourceParser2.clj +0 -214
  218. package/compiler/ng_WebPageWriter.clj +0 -39
  219. package/compiler/ng_jsonParser.clj +0 -340
  220. package/compiler/ng_p_test.clj +0 -1711
  221. package/compiler/ng_parser.clj +0 -911
  222. package/compiler/ng_parser2.clj +0 -735
  223. package/compiler/ng_parser2_backup.clj +0 -1679
  224. package/compiler/ng_parser_backup.clj +0 -886
  225. package/compiler/ng_parser_ok.clj +0 -1718
  226. package/compiler/ng_parser_ok2.clj +0 -1717
  227. package/compiler/ng_parser_std_match.clj +0 -687
  228. package/compiler/ng_parser_std_match2.clj +0 -1012
  229. package/compiler/ng_parser_v2.clj +0 -1251
  230. package/compiler/ng_ui.clj +0 -403
  231. package/compiler/ng_ui_test.clj +0 -18
  232. package/compiler/ng_writer.clj +0 -338
  233. package/compiler/ng_xmlParser.clj +0 -472
  234. package/compiler/ng_xmlParser2.clj +0 -317
  235. package/compiler/ng_xmlParser3.clj +0 -251
  236. package/compiler/opdoc.bat +0 -4
  237. package/compiler/operators.md +0 -290
  238. package/compiler/p.bat +0 -4
  239. package/compiler/package.json +0 -10
  240. package/compiler/pcmd.bat +0 -4
  241. package/compiler/pcmd2.bat +0 -3
  242. package/compiler/plaintext_plugin.clj +0 -69
  243. package/compiler/plugin.bat +0 -19
  244. package/compiler/plugin2.bat +0 -4
  245. package/compiler/plugin_app.bat +0 -3
  246. package/compiler/plugin_apps.clj +0 -27
  247. package/compiler/plugins.bat +0 -10
  248. package/compiler/reveal_plugin.clj +0 -409
  249. package/compiler/simplePlugin.clj +0 -780
  250. package/compiler/t.bat +0 -3
  251. package/compiler/test_any.clj +0 -43
  252. package/compiler/test_call.clj +0 -141
  253. package/compiler/test_chain.clj +0 -79
  254. package/compiler/test_json.clj +0 -10
  255. package/compiler/test_lambda.clj +0 -153
  256. package/compiler/test_pcmd.clj +0 -32
  257. package/compiler/test_pcmd2.clj +0 -29
  258. package/compiler/test_plugin.clj +0 -237
  259. package/compiler/test_readfile.clj +0 -13
  260. package/compiler/test_reveal.clj +0 -19
  261. package/compiler/test_slides.clj +0 -312
  262. package/compiler/test_types.clj +0 -143
  263. package/compiler/test_types2.clj +0 -49
  264. package/compiler/test_types3.clj +0 -53
  265. package/compiler/test_var.clj +0 -40
  266. package/compiler/tonpm.bat +0 -14
  267. package/compiler/tonpm2.bat +0 -12
  268. package/compiler/ui_plugin.clj +0 -507
  269. package/compiler/ui_plugin2.clj +0 -427
  270. package/compiler/update-git.bat +0 -3
  271. package/compiler/vcomp.bat +0 -4
  272. package/compiler/viewbuilder_Android.clj +0 -176
  273. package/compiler/viewbuilder_Web.clj +0 -105
  274. package/dist/bin/api.js +0 -32422
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/examples/3D/bin/test_3d.js +0 -329
  278. package/examples/3D/test_3d.clj +0 -385
  279. package/examples/EVGColor/EVGColor.clj +0 -310
  280. package/examples/EVGColor/EVGColorContext.clj +0 -176
  281. package/examples/EVGColor/bin/EVGColor.js +0 -286
  282. package/examples/EVGColor/bin/minimized.js +0 -286
  283. package/examples/SVGPath/SVGPath.clj +0 -625
  284. package/examples/SVGPath/Vec2.clj +0 -103
  285. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  286. package/examples/SVGPath/bin/SVGPath.js +0 -682
  287. package/examples/SVGPath/bin/SVGPath.ts +0 -711
  288. package/examples/SVGPath/bin/minimized.js +0 -578
  289. package/examples/SVGPath/bin/variant.hpp +0 -2416
  290. package/examples/minification/Vec2.clj +0 -103
  291. package/examples/minification/bin/minified.js +0 -44
  292. package/examples/minification/bin/test.js +0 -117
  293. package/examples/minification/test.clj +0 -13
  294. package/fiddle/VirtualCompiler.js +0 -23495
  295. package/fiddle/browser_editor.js +0 -13240
  296. package/fiddle/compileEnv.js +0 -1
  297. package/fiddle/compileEnv.json +0 -1
  298. package/fiddle/lang_data.js +0 -1
  299. package/index.html +0 -18
  300. package/native/httpd/HttpTester.clj +0 -33
  301. package/native/httpd/RangerWebService.clj +0 -81
  302. package/operators.md +0 -290
  303. package/tsconfig.json +0 -29
  304. package/versions/cpp/compiler.cpp +0 -15032
  305. package/versions/es6/compiler.js +0 -12860
  306. package/versions/go/compiler.go +0 -21338
  307. package/versions/java/AfterCodeNode.java +0 -4
  308. package/versions/java/ClassJoinPoint.java +0 -6
  309. package/versions/java/CodeFile.java +0 -42
  310. package/versions/java/CodeFileSystem.java +0 -72
  311. package/versions/java/CodeNode.java +0 -807
  312. package/versions/java/CodeSlice.java +0 -13
  313. package/versions/java/CodeWriter.java +0 -185
  314. package/versions/java/ColorConsole.java +0 -8
  315. package/versions/java/CompilerInterface.java +0 -213
  316. package/versions/java/DictNode.java +0 -353
  317. package/versions/java/LiveCompiler.java +0 -772
  318. package/versions/java/NodeEvalState.java +0 -24
  319. package/versions/java/OpFindResult.java +0 -6
  320. package/versions/java/RangerAppArrayValue.java +0 -7
  321. package/versions/java/RangerAppClassDesc.java +0 -217
  322. package/versions/java/RangerAppEnum.java +0 -14
  323. package/versions/java/RangerAppFunctionDesc.java +0 -20
  324. package/versions/java/RangerAppHashValue.java +0 -11
  325. package/versions/java/RangerAppInterfaceImpl.java +0 -6
  326. package/versions/java/RangerAppMethodVariants.java +0 -6
  327. package/versions/java/RangerAppParamDesc.java +0 -321
  328. package/versions/java/RangerAppTodo.java +0 -6
  329. package/versions/java/RangerAppValue.java +0 -10
  330. package/versions/java/RangerAppWriterContext.java +0 -800
  331. package/versions/java/RangerArgMatch.java +0 -317
  332. package/versions/java/RangerBackReference.java +0 -7
  333. package/versions/java/RangerCSharpClassWriter.java +0 -287
  334. package/versions/java/RangerCompilerMessage.java +0 -9
  335. package/versions/java/RangerCppClassWriter.java +0 -725
  336. package/versions/java/RangerFlowParser.java +0 -2142
  337. package/versions/java/RangerGenericClassWriter.java +0 -367
  338. package/versions/java/RangerGolangClassWriter.java +0 -1379
  339. package/versions/java/RangerJava7ClassWriter.java +0 -652
  340. package/versions/java/RangerJavaScriptClassWriter.java +0 -305
  341. package/versions/java/RangerKotlinClassWriter.java +0 -380
  342. package/versions/java/RangerLispParser.java +0 -845
  343. package/versions/java/RangerNodeValue.java +0 -9
  344. package/versions/java/RangerPHPClassWriter.java +0 -527
  345. package/versions/java/RangerParamEventHandler.java +0 -6
  346. package/versions/java/RangerParamEventList.java +0 -5
  347. package/versions/java/RangerParamEventMap.java +0 -27
  348. package/versions/java/RangerRangerClassWriter.java +0 -268
  349. package/versions/java/RangerRefForce.java +0 -7
  350. package/versions/java/RangerScalaClassWriter.java +0 -365
  351. package/versions/java/RangerSerializeClass.java +0 -148
  352. package/versions/java/RangerSwift3ClassWriter.java +0 -548
  353. package/versions/java/RangerTypeClass.java +0 -17
  354. package/versions/java/SourceCode.java +0 -65
  355. package/versions/php/compiler.php +0 -13830
  356. package/versions/swift3/compiler.swift +0 -12542
  357. /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
  358. /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
  359. /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
  360. /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
  361. /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
  362. /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
  363. /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
@@ -1,388 +0,0 @@
1
-
2
- class RangerParamEventHandler {
3
- fn callback:void (param:RangerAppParamDesc) {
4
- }
5
- }
6
-
7
- class RangerParamEventList {
8
- def list:[RangerParamEventHandler]
9
- }
10
-
11
- class RangerParamEventMap {
12
- def events:[string:RangerParamEventList]
13
-
14
- fn clearAllEvents:void () {
15
-
16
- }
17
-
18
- fn addEvent:void (name:string e@(strong):RangerParamEventHandler) {
19
- if( (has events name) == false ) {
20
- set events name (new RangerParamEventList())
21
- }
22
- def list:RangerParamEventList (unwrap (get events name))
23
- push list.list e
24
- }
25
-
26
- fn fireEvent:void (name:string from:RangerAppParamDesc) {
27
- if( has events name ) {
28
- def list:RangerParamEventList (unwrap (get events name))
29
- for list.list ev:RangerParamEventHandler i {
30
- ev.callback( from )
31
- }
32
- }
33
- }
34
- }
35
-
36
- class RangerAppArrayValue {
37
- def value_type:RangerNodeType RangerNodeType.NoType
38
- def value_type_name:string ""
39
- def values:[RangerAppValue]
40
- }
41
- class RangerAppHashValue {
42
- def value_type:RangerNodeType RangerNodeType.NoType
43
- def key_type_name:string ""
44
- def value_type_name:string ""
45
- def s_values:[string:RangerAppValue]
46
- def i_values:[string:RangerAppValue]
47
- def b_values:[string:RangerAppValue]
48
- def d_values:[string:RangerAppValue]
49
- }
50
- class RangerAppValue {
51
- def double_value:double 0.0
52
- def string_value:string ""
53
- def int_value:int 0
54
- def boolean_value:boolean false
55
- def arr:RangerAppArrayValue
56
- def hash:RangerAppHashValue
57
- }
58
-
59
- class RangerRefForce {
60
- def strength:int 0
61
- def lifetime:int 1
62
- def changer@(weak optional):CodeNode
63
- }
64
-
65
- class RangerAppParamDesc {
66
- def name:string ""
67
- def value:RangerAppValue
68
- def compiledName:string ""
69
- def debugString:string ""
70
- def is_register false
71
- def ref_cnt:int 0
72
- def init_cnt:int 0
73
- def set_cnt:int 0
74
- def return_cnt:int 0
75
- def prop_assign_cnt:int 0
76
- def value_type:RangerNodeType RangerNodeType.NoType
77
- def has_default:boolean false
78
- def def_value:CodeNode
79
- def default_value:RangerNodeValue
80
- def isThis:boolean false
81
- def classDesc:RangerAppClassDesc
82
- def is_immutable false
83
- def is_static false
84
- def propertyClass@(weak):RangerAppClassDesc
85
- def fnDesc:RangerAppFunctionDesc
86
- def ownerHistory:[RangerRefForce]
87
- def varType:RangerContextVarType RangerContextVarType.NoType
88
- def refType:RangerNodeRefType RangerNodeRefType.NoType
89
- def initRefType:RangerNodeRefType RangerNodeRefType.NoType
90
- def isParam:boolean
91
- def paramIndex:int 0
92
- def is_optional:boolean false
93
- def is_mutating:boolean false
94
- def is_set:boolean false
95
- def is_class_variable:boolean false
96
- def is_captured:boolean false
97
- def node@(weak):CodeNode
98
- def nameNode@(weak):CodeNode
99
- def fnBody@(weak):CodeNode
100
- def params:[RangerAppParamDesc]
101
- def return_value:RangerAppParamDesc
102
- def description:string ""
103
- def git_doc:string ""
104
- def has_events:boolean false
105
- def eMap:RangerParamEventMap
106
-
107
- fn addEvent:void (name:string e@(strong lives):RangerParamEventHandler) {
108
- if( has_events == false ) {
109
- eMap = (new RangerParamEventMap())
110
- has_events = true
111
- }
112
- eMap.addEvent(name e)
113
- }
114
- fn changeStrength:void (newStrength:int lifeTime:int changer:CodeNode) {
115
- def entry:RangerRefForce (new RangerRefForce ())
116
- entry.strength = newStrength
117
- entry.lifetime = lifeTime
118
- entry.changer = changer
119
- push ownerHistory entry
120
- }
121
- fn isFunction:boolean () {
122
- return false
123
- }
124
- fn isProperty:boolean () {
125
- return true
126
- }
127
- fn isClass:boolean () {
128
- return false
129
- }
130
- fn isOperator:boolean () {
131
- return false
132
- }
133
- fn doesInherit:boolean () {
134
- return false
135
- }
136
- fn isAllocatedType:boolean () {
137
- if (!null? nameNode) {
138
- if (nameNode.eval_type != RangerNodeType.NoType) {
139
- if (nameNode.eval_type == RangerNodeType.Array) {
140
- return true
141
- }
142
- if (nameNode.eval_type == RangerNodeType.Hash) {
143
- return true
144
- }
145
- if ((((nameNode.eval_type == RangerNodeType.CharBuffer)
146
- || (nameNode.eval_type == RangerNodeType.Char) || (nameNode.eval_type == RangerNodeType.String) || (nameNode.eval_type == RangerNodeType.Double)) || (nameNode.eval_type == RangerNodeType.Boolean)) || (nameNode.eval_type == RangerNodeType.Integer)) {
147
- return false
148
- }
149
- if (nameNode.eval_type == RangerNodeType.Enum) {
150
- return false
151
- }
152
- return true
153
- }
154
- if (nameNode.value_type == RangerNodeType.VRef) {
155
-
156
- if (false == (nameNode.isPrimitive())) {
157
- return true
158
- }
159
- }
160
- if (nameNode.value_type == RangerNodeType.Array) {
161
- return true
162
- }
163
- if (nameNode.value_type == RangerNodeType.Hash) {
164
- return true
165
- }
166
- }
167
- return false
168
- }
169
- fn moveRefTo:void (nodeToMove:CodeNode target:RangerAppParamDesc ctx:RangerAppWriterContext) {
170
-
171
- def b_disable_errors ( (ctx.hasCompilerFlag('refcnt')) == false )
172
-
173
- if nodeToMove.ref_change_done {
174
- return
175
- }
176
- if (false == (target.isAllocatedType())) {
177
- return
178
- }
179
- if (false == (this.isAllocatedType())) {
180
- return
181
- }
182
- nodeToMove.ref_change_done = true
183
- def other_s:int (target.getStrength())
184
- def my_s:int (this.getStrength())
185
- def my_lifetime:int (this.getLifetime())
186
- def other_lifetime:int (target.getLifetime())
187
- def a_lives:boolean false
188
- def b_lives:boolean false
189
- def tmp_var:boolean (nameNode.hasFlag("temp"))
190
- if (!null? target.nameNode) {
191
- if (target.nameNode.hasFlag("lives")) {
192
- my_lifetime = 2
193
- b_lives = true
194
- }
195
- }
196
- if (!null? nameNode) {
197
- if (nameNode.hasFlag("lives")) {
198
- my_lifetime = 2
199
- a_lives = true
200
- }
201
- }
202
- if (other_s > 0) {
203
- if (my_s == 1) {
204
- def lt:int my_lifetime
205
- if (other_lifetime > my_lifetime) {
206
- lt = other_lifetime
207
- }
208
- this.changeStrength(0 lt nodeToMove)
209
- } {
210
- if (my_s == 0) {
211
- if (tmp_var == false) {
212
- if(! b_disable_errors) {
213
- ctx.addError(nodeToMove "Can not move a weak reference to a strong target." )
214
- print "can not move weak refs to strong target:"
215
- this.debugRefChanges()
216
- }
217
- }
218
- } {
219
- if(! b_disable_errors) {
220
- ctx.addError(nodeToMove ('Can not move immutable reference to a strong target, evald type ' + nameNode.eval_type_name))
221
- }
222
- }
223
- }
224
- } {
225
- if (a_lives || b_lives) {
226
- } {
227
- if ((my_lifetime < other_lifetime) && (return_cnt == 0)) {
228
- if ((nameNode.hasFlag("returnvalue")) == false) {
229
- if(! b_disable_errors) {
230
- ctx.addError(nodeToMove ('Can not create a weak reference if target has longer lifetime than original, current lifetime == ' + my_lifetime))
231
- }
232
- }
233
- }
234
- }
235
- }
236
- }
237
- fn originalStrength:int () {
238
- def len:int (array_length ownerHistory)
239
- if (len > 0) {
240
- def firstEntry:RangerRefForce (itemAt ownerHistory 0)
241
- return firstEntry.strength
242
- }
243
- return 1
244
- }
245
- fn getLifetime:int () {
246
- def len:int (array_length ownerHistory)
247
- if (len > 0) {
248
- def lastEntry:RangerRefForce (itemAt ownerHistory (len - 1))
249
- return lastEntry.lifetime
250
- }
251
- return 1
252
- }
253
- fn getStrength:int () {
254
- def len:int (array_length ownerHistory)
255
- if (len > 0) {
256
- def lastEntry:RangerRefForce (itemAt ownerHistory (len - 1))
257
- return lastEntry.strength
258
- }
259
- return 1
260
- }
261
- fn debugRefChanges:void () {
262
- print (("variable " + name) + " ref history : ")
263
- for ownerHistory h:RangerRefForce i {
264
- print (((" => change to " + h.strength) + " by ") + (h.changer.getCode()))
265
- }
266
- }
267
- fn pointsToObject:boolean (ctx:RangerAppWriterContext) {
268
- if (!null? nameNode) {
269
- def is_primitive:boolean false
270
- switch nameNode.array_type {
271
- case "string" {
272
- is_primitive = true
273
- }
274
- case "int" {
275
- is_primitive = true
276
- }
277
- case "boolean" {
278
- is_primitive = true
279
- }
280
- case "double" {
281
- is_primitive = true
282
- }
283
- }
284
- if is_primitive {
285
- return false
286
- }
287
- if ((nameNode.value_type == RangerNodeType.Array) || (nameNode.value_type == RangerNodeType.Hash)) {
288
- def is_object:boolean true
289
- switch nameNode.array_type {
290
- case "string" {
291
- is_object = false
292
- }
293
- case "int" {
294
- is_object = false
295
- }
296
- case "boolean" {
297
- is_object = false
298
- }
299
- case "double" {
300
- is_object = false
301
- }
302
- }
303
- return is_object
304
- }
305
- if (nameNode.value_type == RangerNodeType.VRef) {
306
- def is_object:boolean true
307
- switch nameNode.type_name {
308
- case "string" {
309
- is_object = false
310
- }
311
- case "int" {
312
- is_object = false
313
- }
314
- case "boolean" {
315
- is_object = false
316
- }
317
- case "double" {
318
- is_object = false
319
- }
320
- }
321
- if (ctx.isEnumDefined(nameNode.type_name)) {
322
- return false
323
- }
324
- return is_object
325
- }
326
- }
327
- return false
328
- }
329
- fn isObject:boolean () {
330
- if (!null? nameNode) {
331
- if (nameNode.value_type == RangerNodeType.VRef) {
332
- if (false == (nameNode.isPrimitive())) {
333
- return true
334
- }
335
- }
336
- }
337
- return false
338
- }
339
- fn isArray:boolean () {
340
- if (!null? nameNode) {
341
- if (nameNode.value_type == RangerNodeType.Array) {
342
- return true
343
- }
344
- }
345
- return false
346
- }
347
- fn isHash:boolean () {
348
- if (!null? nameNode) {
349
- if (nameNode.value_type == RangerNodeType.Hash) {
350
- return true
351
- }
352
- }
353
- return false
354
- }
355
- fn isPrimitive:boolean () {
356
- if (!null? nameNode) {
357
- return (nameNode.isPrimitive())
358
- }
359
- return false
360
- }
361
- fn getRefTypeName:string () {
362
- switch refType {
363
- case RangerNodeRefType.NoType {
364
- return "NoType"
365
- }
366
- case RangerNodeRefType.Weak {
367
- return "Weak"
368
- }
369
- }
370
- return ""
371
- }
372
- fn getVarTypeName:string () {
373
- switch refType {
374
- case RangerContextVarType.NoType {
375
- return "NoType"
376
- }
377
- case RangerContextVarType.This {
378
- return "This"
379
- }
380
- }
381
- return ""
382
- }
383
- fn getTypeName:string () {
384
- def s:string nameNode.type_name
385
- return s
386
- }
387
- }
388
-