ranger-compiler 2.1.69 → 3.0.3

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 +103 -0
  2. package/README.md +991 -96
  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/{bin/output.js → dist/rgrc.js} +15377 -7935
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -38
  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/compiler/ColorConsole.clj +0 -22
  150. package/compiler/ContextOperators.clj +0 -75
  151. package/compiler/FlowEnterVarDef.clj +0 -223
  152. package/compiler/InputFileSystem.clj +0 -276
  153. package/compiler/RangerDocs.clj +0 -7
  154. package/compiler/TFactory.clj +0 -146
  155. package/compiler/TFiles.clj +0 -23
  156. package/compiler/TFlow.clj +0 -39
  157. package/compiler/TNodeFactory.clj +0 -84
  158. package/compiler/TTypes.clj +0 -188
  159. package/compiler/VirtualCompiler.clj +0 -800
  160. package/compiler/bin/ng_Compiler.js +0 -23779
  161. package/compiler/commonmark_plugin.clj +0 -359
  162. package/compiler/feat2.bat +0 -2
  163. package/compiler/feats.bat +0 -9
  164. package/compiler/feature_tests.clj +0 -192
  165. package/compiler/index.js +0 -2
  166. package/compiler/issue_57.clj +0 -25
  167. package/compiler/makefile_plugin.clj +0 -135
  168. package/compiler/markdown_plugin.clj +0 -386
  169. package/compiler/maven_plugin.clj +0 -162
  170. package/compiler/ng_AndroidPageWriter.clj +0 -299
  171. package/compiler/ng_CodeNode.clj +0 -756
  172. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  173. package/compiler/ng_Compiler.clj +0 -49
  174. package/compiler/ng_CompilerGeneric.clj +0 -260
  175. package/compiler/ng_CompilerOrig.clj +0 -854
  176. package/compiler/ng_DictNode.clj +0 -346
  177. package/compiler/ng_DictNode2.clj +0 -316
  178. package/compiler/ng_Execute.clj +0 -138
  179. package/compiler/ng_Execute1.clj +0 -129
  180. package/compiler/ng_FlowWork.clj +0 -3951
  181. package/compiler/ng_LiveCompiler.clj +0 -1109
  182. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  183. package/compiler/ng_RangerActiveOperators.clj +0 -86
  184. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  185. package/compiler/ng_RangerAppEnums.clj +0 -86
  186. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  187. package/compiler/ng_RangerAppMessages.clj +0 -15
  188. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  189. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  190. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  191. package/compiler/ng_RangerArgMatch.clj +0 -638
  192. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  193. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  194. package/compiler/ng_RangerDocGenerator.clj +0 -305
  195. package/compiler/ng_RangerFlowParser.clj +0 -4992
  196. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  197. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  198. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  199. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  200. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  201. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1042
  202. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  203. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  204. package/compiler/ng_RangerLispParser.clj +0 -873
  205. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  206. package/compiler/ng_RangerPlugin.clj +0 -41
  207. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  208. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  209. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  210. package/compiler/ng_RangerSerializeClass.clj +0 -502
  211. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  212. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  213. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  214. package/compiler/ng_RangerTypeClass.clj +0 -45
  215. package/compiler/ng_SourceParser.clj +0 -241
  216. package/compiler/ng_SourceParser2.clj +0 -214
  217. package/compiler/ng_WebPageWriter.clj +0 -39
  218. package/compiler/ng_jsonParser.clj +0 -340
  219. package/compiler/ng_p_test.clj +0 -1711
  220. package/compiler/ng_parser.clj +0 -911
  221. package/compiler/ng_parser2.clj +0 -735
  222. package/compiler/ng_parser2_backup.clj +0 -1679
  223. package/compiler/ng_parser_backup.clj +0 -886
  224. package/compiler/ng_parser_ok.clj +0 -1718
  225. package/compiler/ng_parser_ok2.clj +0 -1717
  226. package/compiler/ng_parser_std_match.clj +0 -687
  227. package/compiler/ng_parser_std_match2.clj +0 -1012
  228. package/compiler/ng_parser_v2.clj +0 -1251
  229. package/compiler/ng_ui.clj +0 -403
  230. package/compiler/ng_ui_test.clj +0 -18
  231. package/compiler/ng_writer.clj +0 -338
  232. package/compiler/ng_xmlParser.clj +0 -472
  233. package/compiler/ng_xmlParser2.clj +0 -317
  234. package/compiler/ng_xmlParser3.clj +0 -251
  235. package/compiler/opdoc.bat +0 -4
  236. package/compiler/operators.md +0 -290
  237. package/compiler/p.bat +0 -4
  238. package/compiler/package.json +0 -10
  239. package/compiler/pcmd.bat +0 -4
  240. package/compiler/pcmd2.bat +0 -3
  241. package/compiler/plaintext_plugin.clj +0 -69
  242. package/compiler/plugin.bat +0 -19
  243. package/compiler/plugin2.bat +0 -4
  244. package/compiler/plugin_app.bat +0 -3
  245. package/compiler/plugin_apps.clj +0 -27
  246. package/compiler/plugins.bat +0 -10
  247. package/compiler/reveal_plugin.clj +0 -409
  248. package/compiler/simplePlugin.clj +0 -780
  249. package/compiler/t.bat +0 -3
  250. package/compiler/test_any.clj +0 -43
  251. package/compiler/test_call.clj +0 -141
  252. package/compiler/test_chain.clj +0 -79
  253. package/compiler/test_json.clj +0 -10
  254. package/compiler/test_lambda.clj +0 -153
  255. package/compiler/test_pcmd.clj +0 -32
  256. package/compiler/test_pcmd2.clj +0 -29
  257. package/compiler/test_plugin.clj +0 -237
  258. package/compiler/test_readfile.clj +0 -13
  259. package/compiler/test_reveal.clj +0 -19
  260. package/compiler/test_slides.clj +0 -312
  261. package/compiler/test_types.clj +0 -143
  262. package/compiler/test_types2.clj +0 -49
  263. package/compiler/test_types3.clj +0 -53
  264. package/compiler/test_var.clj +0 -40
  265. package/compiler/tonpm.bat +0 -14
  266. package/compiler/tonpm2.bat +0 -12
  267. package/compiler/ui_plugin.clj +0 -507
  268. package/compiler/ui_plugin2.clj +0 -427
  269. package/compiler/update-git.bat +0 -3
  270. package/compiler/vcomp.bat +0 -4
  271. package/compiler/viewbuilder_Android.clj +0 -176
  272. package/compiler/viewbuilder_Web.clj +0 -105
  273. package/dist/bin/api.js +0 -32422
  274. package/dist/bin/api.js.map +0 -1
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/dist/bin/compiler.js.map +0 -1
  278. package/examples/3D/bin/test_3d.js +0 -329
  279. package/examples/3D/test_3d.clj +0 -385
  280. package/examples/EVGColor/EVGColor.clj +0 -310
  281. package/examples/EVGColor/EVGColorContext.clj +0 -176
  282. package/examples/EVGColor/bin/EVGColor.js +0 -286
  283. package/examples/EVGColor/bin/minimized.js +0 -286
  284. package/examples/SVGPath/SVGPath.clj +0 -625
  285. package/examples/SVGPath/Vec2.clj +0 -103
  286. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  287. package/examples/SVGPath/bin/SVGPath.js +0 -682
  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
-