arkanalyzer 1.0.86 → 1.0.87

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 (400) hide show
  1. package/README.en.md +69 -65
  2. package/README.md +56 -70
  3. package/config/arkanalyzer.json +7 -2
  4. package/docs/cppFrontend/ArkAnalyzer-cpp_usage_guide.md +245 -0
  5. package/docs/cppFrontend/cpp_frontend_build_guide.md +126 -0
  6. package/docs/cppFrontend/cpp_frontend_user_guide.md +175 -0
  7. package/docs/cppFrontend/img.png +0 -0
  8. package/docs/cppFrontend/img_1.png +0 -0
  9. package/docs/cppFrontend/img_10.png +0 -0
  10. package/docs/cppFrontend/img_11.png +0 -0
  11. package/docs/cppFrontend/img_12.png +0 -0
  12. package/docs/cppFrontend/img_13.png +0 -0
  13. package/docs/cppFrontend/img_14.png +0 -0
  14. package/docs/cppFrontend/img_15.png +0 -0
  15. package/docs/cppFrontend/img_16.png +0 -0
  16. package/docs/cppFrontend/img_17.png +0 -0
  17. package/docs/cppFrontend/img_18.png +0 -0
  18. package/docs/cppFrontend/img_19.png +0 -0
  19. package/docs/cppFrontend/img_2.png +0 -0
  20. package/docs/cppFrontend/img_20.png +0 -0
  21. package/docs/cppFrontend/img_21.png +0 -0
  22. package/docs/cppFrontend/img_22.png +0 -0
  23. package/docs/cppFrontend/img_23.png +0 -0
  24. package/docs/cppFrontend/img_3.png +0 -0
  25. package/docs/cppFrontend/img_4.png +0 -0
  26. package/docs/cppFrontend/img_5.png +0 -0
  27. package/docs/cppFrontend/img_6.png +0 -0
  28. package/docs/cppFrontend/img_7.png +0 -0
  29. package/docs/cppFrontend/img_8.png +0 -0
  30. package/docs/cppFrontend/img_9.png +0 -0
  31. package/docs/sig_programanalysis.en.md +66 -0
  32. package/docs/sig_programanalysis.md +73 -0
  33. package/lib/Config.d.ts +32 -1
  34. package/lib/Config.d.ts.map +1 -1
  35. package/lib/Config.js +76 -2
  36. package/lib/Scene.d.ts +25 -2
  37. package/lib/Scene.d.ts.map +1 -1
  38. package/lib/Scene.js +148 -40
  39. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +4 -3
  40. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  41. package/lib/callgraph/algorithm/AbstractAnalysis.js +17 -17
  42. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +6 -1
  43. package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
  44. package/lib/callgraph/algorithm/RapidTypeAnalysis.js +117 -14
  45. package/lib/callgraph/common/Statistics.d.ts +4 -2
  46. package/lib/callgraph/common/Statistics.d.ts.map +1 -1
  47. package/lib/callgraph/common/Statistics.js +14 -2
  48. package/lib/callgraph/model/CallGraph.d.ts +12 -8
  49. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  50. package/lib/callgraph/model/CallGraph.js +53 -29
  51. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +1 -0
  52. package/lib/callgraph/model/builder/CallGraphBuilder.d.ts.map +1 -1
  53. package/lib/callgraph/model/builder/CallGraphBuilder.js +5 -1
  54. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  55. package/lib/callgraph/pointerAnalysis/Pag.js +3 -0
  56. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +4 -2
  57. package/lib/cli/cli.d.ts +3 -0
  58. package/lib/cli/cli.d.ts.map +1 -0
  59. package/lib/cli/cli.js +82 -0
  60. package/lib/cli/commands/cg.d.ts +32 -0
  61. package/lib/cli/commands/cg.d.ts.map +1 -0
  62. package/lib/cli/commands/cg.js +401 -0
  63. package/lib/cli/commands/index.d.ts +6 -0
  64. package/lib/cli/commands/index.d.ts.map +1 -0
  65. package/lib/cli/commands/index.js +64 -0
  66. package/lib/cli/commands/ir.d.ts +26 -0
  67. package/lib/cli/commands/ir.d.ts.map +1 -0
  68. package/lib/cli/commands/ir.js +94 -0
  69. package/lib/core/base/Constant.d.ts +1 -1
  70. package/lib/core/base/Constant.d.ts.map +1 -1
  71. package/lib/core/base/Constant.js +1 -1
  72. package/lib/core/base/Expr.d.ts +29 -5
  73. package/lib/core/base/Expr.d.ts.map +1 -1
  74. package/lib/core/base/Expr.js +144 -22
  75. package/lib/core/base/Position.d.ts +14 -0
  76. package/lib/core/base/Position.d.ts.map +1 -1
  77. package/lib/core/base/Position.js +27 -0
  78. package/lib/core/base/Ref.d.ts +1 -0
  79. package/lib/core/base/Ref.d.ts.map +1 -1
  80. package/lib/core/base/Ref.js +4 -1
  81. package/lib/core/base/Type.d.ts +64 -24
  82. package/lib/core/base/Type.d.ts.map +1 -1
  83. package/lib/core/base/Type.js +144 -49
  84. package/lib/core/common/ArkError.d.ts +26 -2
  85. package/lib/core/common/ArkError.d.ts.map +1 -1
  86. package/lib/core/common/ArkError.js +56 -2
  87. package/lib/core/common/ArkIRTransformer.d.ts +11 -10
  88. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  89. package/lib/core/common/ArkIRTransformer.js +1 -1
  90. package/lib/core/common/ArkValueTransformer.d.ts +14 -12
  91. package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
  92. package/lib/core/common/ArkValueTransformer.js +1 -5
  93. package/lib/core/common/Const.d.ts +3 -0
  94. package/lib/core/common/Const.d.ts.map +1 -1
  95. package/lib/core/common/Const.js +4 -1
  96. package/lib/core/common/DummyMainCreater.d.ts +23 -13
  97. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  98. package/lib/core/common/DummyMainCreater.js +66 -43
  99. package/lib/core/common/EtsConst.d.ts +11 -0
  100. package/lib/core/common/EtsConst.d.ts.map +1 -1
  101. package/lib/core/common/EtsConst.js +12 -1
  102. package/lib/core/common/IRInference.d.ts.map +1 -1
  103. package/lib/core/common/IRInference.js +5 -1
  104. package/lib/core/common/ModelUtils.d.ts +4 -7
  105. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  106. package/lib/core/common/ModelUtils.js +77 -110
  107. package/lib/core/common/SdkUtils.d.ts +1 -1
  108. package/lib/core/common/SdkUtils.d.ts.map +1 -1
  109. package/lib/core/common/SdkUtils.js +14 -5
  110. package/lib/core/common/TypeInference.d.ts.map +1 -1
  111. package/lib/core/common/TypeInference.js +9 -3
  112. package/lib/core/graph/BaseExplicitGraph.d.ts +4 -4
  113. package/lib/core/graph/BaseExplicitGraph.d.ts.map +1 -1
  114. package/lib/core/graph/BaseExplicitGraph.js +15 -8
  115. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  116. package/lib/core/graph/Scc.d.ts.map +1 -1
  117. package/lib/core/graph/Scc.js +7 -2
  118. package/lib/core/graph/builder/CfgBuilder.d.ts +10 -7
  119. package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
  120. package/lib/core/graph/builder/CfgBuilder.js +12 -5
  121. package/lib/core/inference/Inference.d.ts.map +1 -1
  122. package/lib/core/inference/Inference.js +7 -0
  123. package/lib/core/inference/ModelInference.d.ts +1 -1
  124. package/lib/core/inference/ModelInference.d.ts.map +1 -1
  125. package/lib/core/inference/ValueInference.d.ts +3 -2
  126. package/lib/core/inference/ValueInference.d.ts.map +1 -1
  127. package/lib/core/inference/ValueInference.js +64 -12
  128. package/lib/core/inference/abc/AbcInference.d.ts +28 -2
  129. package/lib/core/inference/abc/AbcInference.d.ts.map +1 -1
  130. package/lib/core/inference/abc/AbcInference.js +105 -4
  131. package/lib/core/model/ArkBaseModel.d.ts +14 -1
  132. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  133. package/lib/core/model/ArkBaseModel.js +61 -2
  134. package/lib/core/model/ArkBody.d.ts.map +1 -1
  135. package/lib/core/model/ArkBody.js +1 -3
  136. package/lib/core/model/ArkClass.d.ts +22 -2
  137. package/lib/core/model/ArkClass.d.ts.map +1 -1
  138. package/lib/core/model/ArkClass.js +59 -28
  139. package/lib/core/model/ArkField.d.ts.map +1 -1
  140. package/lib/core/model/ArkField.js +3 -1
  141. package/lib/core/model/ArkFile.d.ts +4 -1
  142. package/lib/core/model/ArkFile.d.ts.map +1 -1
  143. package/lib/core/model/ArkFile.js +44 -3
  144. package/lib/core/model/ArkImport.d.ts.map +1 -1
  145. package/lib/core/model/ArkImport.js +9 -1
  146. package/lib/core/model/ArkMethod.d.ts +5 -0
  147. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  148. package/lib/core/model/ArkMethod.js +33 -1
  149. package/lib/core/model/ArkNamespace.d.ts +2 -0
  150. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  151. package/lib/core/model/ArkNamespace.js +11 -0
  152. package/lib/core/model/ArkSignature.d.ts +3 -3
  153. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  154. package/lib/core/model/ArkSignature.js +14 -9
  155. package/lib/core/model/builder/ArkClassBuilder.d.ts +2 -0
  156. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  157. package/lib/core/model/builder/ArkClassBuilder.js +3 -3
  158. package/lib/core/model/builder/ArkMethodBuilder.d.ts +4 -1
  159. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  160. package/lib/core/model/builder/ArkMethodBuilder.js +19 -6
  161. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +1 -0
  162. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  163. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -1
  164. package/lib/core/model/builder/BodyBuilder.d.ts +4 -0
  165. package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
  166. package/lib/core/model/builder/builderUtils.d.ts +1 -0
  167. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  168. package/lib/core/model/builder/builderUtils.js +7 -3
  169. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts +296 -0
  170. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.d.ts.map +1 -0
  171. package/lib/frontend/cppFrontend/ast/ArkCxxAstNode.js +145 -0
  172. package/lib/frontend/cppFrontend/ast/astUtils.d.ts +51 -0
  173. package/lib/frontend/cppFrontend/ast/astUtils.d.ts.map +1 -0
  174. package/lib/frontend/cppFrontend/ast/astUtils.js +470 -0
  175. package/lib/frontend/cppFrontend/ast/const.d.ts +30 -0
  176. package/lib/frontend/cppFrontend/ast/const.d.ts.map +1 -0
  177. package/lib/frontend/cppFrontend/ast/const.js +134 -0
  178. package/lib/frontend/cppFrontend/base/Constant.d.ts +9 -0
  179. package/lib/frontend/cppFrontend/base/Constant.d.ts.map +1 -0
  180. package/lib/frontend/cppFrontend/base/Constant.js +33 -0
  181. package/lib/frontend/cppFrontend/base/Expr.d.ts +174 -0
  182. package/lib/frontend/cppFrontend/base/Expr.d.ts.map +1 -0
  183. package/lib/frontend/cppFrontend/base/Expr.js +530 -0
  184. package/lib/frontend/cppFrontend/base/Ref.d.ts +25 -0
  185. package/lib/frontend/cppFrontend/base/Ref.d.ts.map +1 -0
  186. package/lib/frontend/cppFrontend/base/Ref.js +53 -0
  187. package/lib/frontend/cppFrontend/base/Trap.d.ts +8 -0
  188. package/lib/frontend/cppFrontend/base/Trap.d.ts.map +1 -0
  189. package/lib/frontend/cppFrontend/base/Trap.js +28 -0
  190. package/lib/frontend/cppFrontend/base/Type.d.ts +264 -0
  191. package/lib/frontend/cppFrontend/base/Type.d.ts.map +1 -0
  192. package/lib/frontend/cppFrontend/base/Type.js +600 -0
  193. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts +109 -0
  194. package/lib/frontend/cppFrontend/common/ArkIRTransformer.d.ts.map +1 -0
  195. package/lib/frontend/cppFrontend/common/ArkIRTransformer.js +925 -0
  196. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts +477 -0
  197. package/lib/frontend/cppFrontend/common/ArkValueTransformer.d.ts.map +1 -0
  198. package/lib/frontend/cppFrontend/common/ArkValueTransformer.js +2746 -0
  199. package/lib/frontend/cppFrontend/common/Builtin.d.ts +57 -0
  200. package/lib/frontend/cppFrontend/common/Builtin.d.ts.map +1 -0
  201. package/lib/frontend/cppFrontend/common/Builtin.js +106 -0
  202. package/lib/frontend/cppFrontend/common/IRInference.d.ts +94 -0
  203. package/lib/frontend/cppFrontend/common/IRInference.d.ts.map +1 -0
  204. package/lib/frontend/cppFrontend/common/IRInference.js +1087 -0
  205. package/lib/frontend/cppFrontend/common/IRUtils.d.ts +23 -0
  206. package/lib/frontend/cppFrontend/common/IRUtils.d.ts.map +1 -0
  207. package/lib/frontend/cppFrontend/common/IRUtils.js +168 -0
  208. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts +44 -0
  209. package/lib/frontend/cppFrontend/common/ModelUtils.d.ts.map +1 -0
  210. package/lib/frontend/cppFrontend/common/ModelUtils.js +567 -0
  211. package/lib/frontend/cppFrontend/common/TypeInference.d.ts +278 -0
  212. package/lib/frontend/cppFrontend/common/TypeInference.d.ts.map +1 -0
  213. package/lib/frontend/cppFrontend/common/TypeInference.js +1354 -0
  214. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts +16 -0
  215. package/lib/frontend/cppFrontend/common/ValueUtil.d.ts.map +1 -0
  216. package/lib/frontend/cppFrontend/common/ValueUtil.js +61 -0
  217. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts +182 -0
  218. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.d.ts.map +1 -0
  219. package/lib/frontend/cppFrontend/graph/builder/CfgBuilder.js +1435 -0
  220. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts +21 -0
  221. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.d.ts.map +1 -0
  222. package/lib/frontend/cppFrontend/graph/builder/ConditionBuilder.js +303 -0
  223. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts +15 -0
  224. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.d.ts.map +1 -0
  225. package/lib/frontend/cppFrontend/graph/builder/IfBuilder.js +161 -0
  226. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts +21 -0
  227. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.d.ts.map +1 -0
  228. package/lib/frontend/cppFrontend/graph/builder/LoopBuilder.js +261 -0
  229. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts +12 -0
  230. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts.map +1 -0
  231. package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.js +155 -0
  232. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts +29 -0
  233. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.d.ts.map +1 -0
  234. package/lib/frontend/cppFrontend/graph/builder/TrapBuilder.js +302 -0
  235. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts +10 -0
  236. package/lib/frontend/cppFrontend/inference/CxxInference.d.ts.map +1 -0
  237. package/lib/frontend/cppFrontend/inference/CxxInference.js +41 -0
  238. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts +28 -0
  239. package/lib/frontend/cppFrontend/inference/CxxModelInference.d.ts.map +1 -0
  240. package/lib/frontend/cppFrontend/inference/CxxModelInference.js +98 -0
  241. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts +20 -0
  242. package/lib/frontend/cppFrontend/inference/CxxValueInference.d.ts.map +1 -0
  243. package/lib/frontend/cppFrontend/inference/CxxValueInference.js +128 -0
  244. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts +11 -0
  245. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.d.ts.map +1 -0
  246. package/lib/frontend/cppFrontend/model/builder/ArkClassBuilder.js +413 -0
  247. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts +5 -0
  248. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.d.ts.map +1 -0
  249. package/lib/frontend/cppFrontend/model/builder/ArkFieldBuilder.js +61 -0
  250. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts +17 -0
  251. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.d.ts.map +1 -0
  252. package/lib/frontend/cppFrontend/model/builder/ArkFileBuilder.js +285 -0
  253. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts +6 -0
  254. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.d.ts.map +1 -0
  255. package/lib/frontend/cppFrontend/model/builder/ArkImportBuilder.js +57 -0
  256. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts +14 -0
  257. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.d.ts.map +1 -0
  258. package/lib/frontend/cppFrontend/model/builder/ArkMethodBuilder.js +422 -0
  259. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts +8 -0
  260. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.d.ts.map +1 -0
  261. package/lib/frontend/cppFrontend/model/builder/ArkNamespaceBuilder.js +194 -0
  262. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts +59 -0
  263. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.d.ts.map +1 -0
  264. package/lib/frontend/cppFrontend/model/builder/BodyBuilder.js +605 -0
  265. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts +46 -0
  266. package/lib/frontend/cppFrontend/model/builder/builderUtils.d.ts.map +1 -0
  267. package/lib/frontend/cppFrontend/model/builder/builderUtils.js +499 -0
  268. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts +44 -0
  269. package/lib/frontend/cppFrontend/utils/cmakeUtils.d.ts.map +1 -0
  270. package/lib/frontend/cppFrontend/utils/cmakeUtils.js +240 -0
  271. package/lib/index.d.ts +1 -0
  272. package/lib/index.d.ts.map +1 -1
  273. package/lib/index.js +7 -1
  274. package/lib/node_modules/ohos-typescript/.ohos-typescript-version +1 -0
  275. package/{node_modules → lib/node_modules}/ohos-typescript/package.json +2 -1
  276. package/lib/save/CGJsonPrinter.d.ts +8 -0
  277. package/lib/save/CGJsonPrinter.d.ts.map +1 -0
  278. package/lib/save/CGJsonPrinter.js +41 -0
  279. package/lib/save/GraphPrinter.js +2 -2
  280. package/lib/save/json/JsonDto.d.ts +86 -2
  281. package/lib/save/json/JsonDto.d.ts.map +1 -1
  282. package/lib/save/json/JsonSerialization.d.ts +1 -1
  283. package/lib/save/json/JsonSerialization.d.ts.map +1 -1
  284. package/lib/save/json/JsonSerialization.js +235 -145
  285. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  286. package/lib/save/source/SourceTransformer.js +0 -3
  287. package/lib/utils/CxxSceneUtils.d.ts +11 -0
  288. package/lib/utils/CxxSceneUtils.d.ts.map +1 -0
  289. package/lib/utils/CxxSceneUtils.js +178 -0
  290. package/lib/utils/FileUtils.d.ts +7 -8
  291. package/lib/utils/FileUtils.d.ts.map +1 -1
  292. package/lib/utils/FileUtils.js +27 -45
  293. package/lib/utils/LRUCacheDecorator.d.ts +20 -0
  294. package/lib/utils/LRUCacheDecorator.d.ts.map +1 -0
  295. package/lib/utils/LRUCacheDecorator.js +89 -0
  296. package/lib/utils/ModuleUtils.d.ts +39 -0
  297. package/lib/utils/ModuleUtils.d.ts.map +1 -0
  298. package/lib/utils/ModuleUtils.js +261 -0
  299. package/package.json +10 -7
  300. /package/{node_modules → lib/node_modules}/ohos-typescript/LICENSE +0 -0
  301. /package/{node_modules → lib/node_modules}/ohos-typescript/README.OpenSource +0 -0
  302. /package/{node_modules → lib/node_modules}/ohos-typescript/README.md +0 -0
  303. /package/{node_modules → lib/node_modules}/ohos-typescript/SECURITY.md +0 -0
  304. /package/{node_modules → lib/node_modules}/ohos-typescript/ThirdPartyNoticeText.txt +0 -0
  305. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsc +0 -0
  306. /package/{node_modules → lib/node_modules}/ohos-typescript/bin/tsserver +0 -0
  307. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/README.md +0 -0
  308. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cancellationToken.js +0 -0
  309. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/cs/diagnosticMessages.generated.json +0 -0
  310. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/de/diagnosticMessages.generated.json +0 -0
  311. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/es/diagnosticMessages.generated.json +0 -0
  312. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/fr/diagnosticMessages.generated.json +0 -0
  313. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/it/diagnosticMessages.generated.json +0 -0
  314. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ja/diagnosticMessages.generated.json +0 -0
  315. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ko/diagnosticMessages.generated.json +0 -0
  316. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.d.ts +0 -0
  317. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.d.ts +0 -0
  318. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.dom.iterable.d.ts +0 -0
  319. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.collection.d.ts +0 -0
  320. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.core.d.ts +0 -0
  321. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.d.ts +0 -0
  322. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.generator.d.ts +0 -0
  323. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.iterable.d.ts +0 -0
  324. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.promise.d.ts +0 -0
  325. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.proxy.d.ts +0 -0
  326. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.reflect.d.ts +0 -0
  327. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.d.ts +0 -0
  328. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
  329. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.array.include.d.ts +0 -0
  330. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.d.ts +0 -0
  331. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2016.full.d.ts +0 -0
  332. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.d.ts +0 -0
  333. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.full.d.ts +0 -0
  334. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.intl.d.ts +0 -0
  335. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.object.d.ts +0 -0
  336. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
  337. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.string.d.ts +0 -0
  338. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
  339. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
  340. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
  341. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.d.ts +0 -0
  342. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.full.d.ts +0 -0
  343. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.intl.d.ts +0 -0
  344. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.promise.d.ts +0 -0
  345. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2018.regexp.d.ts +0 -0
  346. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.array.d.ts +0 -0
  347. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.d.ts +0 -0
  348. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.full.d.ts +0 -0
  349. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.intl.d.ts +0 -0
  350. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.object.d.ts +0 -0
  351. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.string.d.ts +0 -0
  352. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2019.symbol.d.ts +0 -0
  353. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.bigint.d.ts +0 -0
  354. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.d.ts +0 -0
  355. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.date.d.ts +0 -0
  356. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.full.d.ts +0 -0
  357. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.intl.d.ts +0 -0
  358. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.number.d.ts +0 -0
  359. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.promise.d.ts +0 -0
  360. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
  361. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.string.d.ts +0 -0
  362. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
  363. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.d.ts +0 -0
  364. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.full.d.ts +0 -0
  365. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.intl.d.ts +0 -0
  366. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.promise.d.ts +0 -0
  367. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.string.d.ts +0 -0
  368. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2021.weakref.d.ts +0 -0
  369. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.array.d.ts +0 -0
  370. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.d.ts +0 -0
  371. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.error.d.ts +0 -0
  372. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.full.d.ts +0 -0
  373. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.intl.d.ts +0 -0
  374. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.object.d.ts +0 -0
  375. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.sharedmemory.d.ts +0 -0
  376. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es2022.string.d.ts +0 -0
  377. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es5.d.ts +0 -0
  378. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.es6.d.ts +0 -0
  379. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.d.ts +0 -0
  380. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.full.d.ts +0 -0
  381. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.esnext.intl.d.ts +0 -0
  382. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.scripthost.d.ts +0 -0
  383. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.d.ts +0 -0
  384. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.importscripts.d.ts +0 -0
  385. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/lib.webworker.iterable.d.ts +0 -0
  386. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pl/diagnosticMessages.generated.json +0 -0
  387. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
  388. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/ru/diagnosticMessages.generated.json +0 -0
  389. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tr/diagnosticMessages.generated.json +0 -0
  390. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsc.js +0 -0
  391. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserver.js +0 -0
  392. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.d.ts +0 -0
  393. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/tsserverlibrary.js +0 -0
  394. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typesMap.json +0 -0
  395. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.d.ts +0 -0
  396. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typescript.js +0 -0
  397. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/typingsInstaller.js +0 -0
  398. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/watchGuard.js +0 -0
  399. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
  400. /package/{node_modules → lib/node_modules}/ohos-typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
@@ -0,0 +1,477 @@
1
+ import { Value } from '../../../core/base/Value';
2
+ import { ArkMethod } from '../../../core/model/ArkMethod';
3
+ import { ArkCxxIRTransformer, ValueAndStmts } from './ArkIRTransformer';
4
+ import { ArkValueTransformer } from '../../../core/common/ArkValueTransformer';
5
+ import { CxxAstNode, CxxTranslationUnit } from '../ast/ArkCxxAstNode';
6
+ export declare class ArkCxxValueTransformer extends ArkValueTransformer {
7
+ private ArkCxxIRTransformer;
8
+ private readonly cxxSourceFile;
9
+ private nodeTransformerFuncMap;
10
+ constructor(arkIRTransformer: ArkCxxIRTransformer, sourceFile: CxxTranslationUnit, declaringMethod: ArkMethod);
11
+ /**
12
+ *Convert C++AST nodes into a combination of values and statements
13
+ *@ param node - C++AST node to be converted
14
+ *@ returns Objects containing converted values and related statements
15
+ */
16
+ cxxNodeToValueAndStmts(node: CxxAstNode): ValueAndStmts;
17
+ /**
18
+ * Convert an unprocessed C++AST node into a combination of values and statements
19
+ * @param aggregate - C++AST node to be converted
20
+ * @returns Objects containing converted values and related statements
21
+ * @throws Error if the node cannot be processed
22
+ * For example:
23
+ * struct Point q = (struct Point){.x = 5, .y = 8, .name = 'c'};
24
+ * int* arr = (int[5]){1, 2, 3, 4, 5};
25
+ * the right value is {},its kind is CompoundLiteralExpr or InitListExpr
26
+ */
27
+ private cxxAggregateToValueAndStmts;
28
+ private cxxThisExpressionToValueAndStmts;
29
+ private isNodeRelatedToCXXLambdaFunc;
30
+ private isNodeRelatedToImplicitNode;
31
+ private isNodeRelatedToMaterializeTemporaryExpr;
32
+ private isNodeRelatedToCXXMember;
33
+ private isPairConstructExpr;
34
+ private isNodeRelatedToTemporary;
35
+ private isNotNewExpression;
36
+ private isNodeRelatedToCXXFuncCast;
37
+ private undefinedToValueAndStmts;
38
+ private unprocessedNodeToValueAndStmts;
39
+ private cxxNamespaceRefToValueAndStmts;
40
+ private cxxTemporaryObjectExprToValueAndStmts;
41
+ /**
42
+ *Convert the C++construction expression node into a combination of values and statements.
43
+ * The main scenarios are structure and class construction, STL data structure object construction, and thread object construction
44
+ *@ param node - C++AST node, representing the construction expression
45
+ *@ returns ValueAndStmts object, including converted values and related statements
46
+ */
47
+ private cxxConstructExprToValueAndStmts;
48
+ bindingNodeToValueAndStmts(node: CxxAstNode, yieldValue?: Value): ValueAndStmts;
49
+ private processInnerNodeToValueAndStmts;
50
+ /**
51
+ *Converts an implicit conversion expression node to a combination of values and statements
52
+ *@ param node - C++AST node, representing implicit type conversion expression
53
+ *@ returns ValueAndStmts object, including converted values and related statements
54
+ */
55
+ private implicitCastExprToValueAndStmts;
56
+ /**
57
+ *Convert declaration and type reference nodes to collections of values and statements
58
+ *@ param node - C++AST node
59
+ *@ returns ValueAndStmts object, including converted values and related statements
60
+ */
61
+ private declAndTypeRefToValueAndStmts;
62
+ private staticMemberExprToValueAndStmts;
63
+ private materializeTemporaryExprToValueAndStmts;
64
+ /**
65
+ *Initialize a list expression into a collection of values and statements
66
+ *@ param node - C++abstract syntax tree node
67
+ *@ returns ValueAndStmts object, including converted values and related statements
68
+ */
69
+ private initListExprToValueAndStmts;
70
+ /**
71
+ *Convert the unary operator node into a combination of values and statements
72
+ *@ param node - C++AST node, representing unary operator expression
73
+ *@ returns ValueAndStmts object, including converted values and related statements
74
+ */
75
+ private unaryOperatorToValueAndStmts;
76
+ private unaryExprToValueAndStmts;
77
+ /**
78
+ *Convert user-defined literals into sets of values and statements
79
+ *The syntax format of user-defined literals is: original value+suffix (for example: 123_km, "hello" _s, 'a' _s)
80
+ *
81
+ *@ param userDefinedLiteral - AST node of user-defined literal
82
+ *@ returns The ValueAndStmts object containing the converted value and related statements
83
+ */
84
+ private userDefinedLiteralToValueAndStmts;
85
+ /**
86
+ *Convert the C++constructor initialization list node to a collection of values and statements
87
+ * 1. C++uses the initialization list to initialize class member variables: Base (char pname): name (pname) {...}.
88
+ * The final effect is similar to this ->name=pname, which is also processed as an assignment here
89
+ * 2. using parent::parent, The constructor of the subclass calls the constructor inherited from the parent class
90
+ *@ param cxxCtorInitializer C++constructor initializes list nodes
91
+ *@ returns An object containing a collection of values and statements
92
+ */
93
+ private cxxCtorInitializerToValueAndStmts;
94
+ /**
95
+ *Convert the C++inheritance constructor initialization expression to a collection of values and statements
96
+ * Using parent:: parent==>The constructor of the sub——class calls the constructor inherited from the parent
97
+ * class==>The same as calling the constructor of the parent class directly
98
+ *@ param cxxInheritedCtorInitExpr - C++inheritance constructor initialization expression node
99
+ *@ returns The object containing the converted value and statement array
100
+ */
101
+ private cxxInheritedCtorInitExprToValueAndStmts;
102
+ /**
103
+ *Convert super expression in C++to IR
104
+ * C++subclasses call the parent class constructor for initialization,
105
+ * similar to ts super (xx). For example, Left (const char&name, int power): Base (name) {...}
106
+ *@ param cxxConstructExpr C++construction expression node
107
+ *@ returns The ValueAndStmts object containing the converted value and related statements
108
+ */
109
+ private cxxSuperExpressionToValueAndStmts;
110
+ /**
111
+ *Convert array type characteristic expression to IR
112
+ * ArrayTypeTraitExpr is processed by function call
113
+ *@ param ArrayTypeTraitExpr - C++AST node, representing array type characteristic expression
114
+ *@ returns ValueAndStmts object, including converted values and related statements
115
+ */
116
+ private arrayTypeTraitExprToValueAndStmts;
117
+ /**
118
+ * Convert C++typeid expression to IR, And CXXTypeidExpr is processed by function call.
119
+ *@ param CXXTypeidExpr - typeid expression node in C++AST
120
+ *@ returns Objects containing converted values and related statements
121
+ */
122
+ private cxxTypeidExprToValueAndStmts;
123
+ /**
124
+ *Convert the noexcept expression of C++syntax tree to IR
125
+ *@ param CXXNoexceptExpr - AST node representing C++noexcept expression
126
+ *@ returns Objects containing converted values and related statements
127
+ */
128
+ private cxxNoexceptExprToValueAndStmts;
129
+ /**
130
+ *Process the C++scalar value initialization expression and convert it to IR
131
+ *@ param CXXScalarValueInitExpr - C++abstract syntax tree node, representing scalar value initialization expression
132
+ *@ returns an object containing initialization values and related statements. If it cannot be processed, it returns null
133
+ */
134
+ private cxxScalarValueInitToValueAndStmts;
135
+ /**
136
+ *Convert C++delete expression to IR
137
+ *@ param deleteExpression - C++AST node, representing delete expression
138
+ *@ returns The object containing the converted value and statement array
139
+ */
140
+ private cxxDeleteExpressionToValueAndStmts;
141
+ /**
142
+ *Convert C++type conversion expression to IR
143
+ *@ param castExpression C++AST node, representing type conversion expression
144
+ *@ returns ValueAndStmts object, including converted values, original location information and related statements
145
+ */
146
+ private castExpressionToValueAndStmts;
147
+ private cxxFoldExprToValueAndStmts;
148
+ /**
149
+ *Convert C++conditional expression to IR
150
+ *@ param conditionalExpression - C++AST node, representing conditional expression
151
+ *@ returns ValueAndStmts object, including converted values, original location information and related statements
152
+ */
153
+ private cxxConditionalExpressionToValueAndStmts;
154
+ /**
155
+ *Extract the calling node and parameter node from the internal AST node array for overwriting
156
+ *@ param innerAsNodes An AST node array containing call information and parameters. The first element is the call node, and the rest are parameter nodes
157
+ *@ returns an array containing two elements: the first element is the call node, and the second element is the parameter node array
158
+ */
159
+ private getArgumentNodeForRecover;
160
+ private getArgumentNode;
161
+ private getDeclRef;
162
+ private cxxGenerateSystemComponentStmt;
163
+ private cxxGenerateCustomViewStmt;
164
+ private cxxGenerateComponentCreationStmts;
165
+ /**
166
+ *Convert C++identifiers to collections of values and statements
167
+ *@ param identifier C++AST node identifier
168
+ *@ param variableDefFlag Optional variable definition flag, used to distinguish variable declaration from variable use
169
+ *@ returns Objects containing values, location information and statement arrays
170
+ */
171
+ private cxxIdentifierToValueAndStmts;
172
+ /**
173
+ *Convert the member expression of C++(such as testMap. insert) to ValueAndStmts of Ark IR
174
+ *@ param memberExpression - shaped like an AST MemberExpr/MemberRef node, which usually means obj. field or obj ->field
175
+ *@ param localValue - (Optional) The scenario where the baseValue is specified directly (
176
+ * such as determining the base in advance when resolving the parent node)
177
+ */
178
+ private memberExpressionToValueAndStmts;
179
+ private buildFieldSignatureFromMemberExpr;
180
+ /**
181
+ *Convert element access expressions (such as array [index] or object. field) in C++AST to values and statements in intermediate representation (IR).
182
+ *
183
+ *@ param elementAccessExpression represents the AST node of C++element access expression
184
+ *@ returns contains the generated IR value, original location information and the ValueAndStmts object of related statements
185
+ */
186
+ private cxxElementAccessExpressionToValueAndStmts;
187
+ private cxxCallExpressionToValueAndStmts;
188
+ /**
189
+ *Process the 'cout<<...' or lambda expression in C++, extract its operands and construct corresponding statements and values.
190
+ *
191
+ *@ param callExpression - The currently processed C++AST node, which represents an operator calling expression (such as<<).
192
+ *@ param callArgus - An array used to collect the parameter nodes involved in the expression.
193
+ *@ returns the ValueAndStmts object containing values and statements. If it cannot be processed, it returns null.
194
+ */
195
+ private streamOrLambdaExprToValueAndStmts;
196
+ /**
197
+ *Build a collection of values and statements for stream operations or lambda function call
198
+ *
199
+ *@ param streamNode The AST node of the stream node
200
+ *@ param args parameter array of stream operation
201
+ *@ param stmts statement array
202
+ *@ param streamExpr AST node of stream expression
203
+ *@ returns The ValueAndStmts object containing values and statements
204
+ */
205
+ private buildValueAndStmtsForStreamOrLambdaCall;
206
+ /**
207
+ *Build values and statements of overloaded flow operators
208
+ *@ param streamNode
209
+ *@ param overloadedArg overload parameter node
210
+ *@ param currValueAndStmts Current value and statement collection
211
+ */
212
+ private buildValueAndStmtsForOverloadedStream;
213
+ /**
214
+ *Build a collection of values and statements for standard flow or lambda call nodes
215
+ *@ param streamNode - AST node of the stream node
216
+ *@ param nonOverlooadedArgs - non overloaded parameter array
217
+ *@ param streamExpr - AST node of stream expression
218
+ *@ param currValueAndStmts - current value and statement collection object, used to store processing results
219
+ */
220
+ private buildValueAndStmtsForStdStreamOrLambdaCall;
221
+ /**
222
+ *Convert C++operator expression to binary operator expression
223
+ *@ param expression - C++AST node, representing operator expression
224
+ *@ returns the converted values and statements
225
+ */
226
+ private CXXOperatorExpressionToBinaryOperator;
227
+ /**
228
+ *Convert C++operator expression to unary operator expression
229
+ *@ param expression - C++AST node, representing operator expression
230
+ *@ returns ValueAndStmts object, including converted values and statements
231
+ */
232
+ private CXXOperatorExpressionToUnaryOperator;
233
+ /**
234
+ *Convert C++operator expressions to lists of values and statements
235
+ *@ param callExpression - C++AST node, representing the operator expression to be converted
236
+ *@ param layer - Boolean value, which controls whether to process the final output layer. The default value is true
237
+ *@ returns a list of converted values and statements, which may include special operator processing results or array reference expressions
238
+ */
239
+ private cxxOperatorExpressionToValueAndStmts;
240
+ /**
241
+ * Handle special operator scenarios and return early if matched
242
+ */
243
+ private handleSpecialOperators;
244
+ /**
245
+ * Collect ValueAndStmts from each inner node
246
+ */
247
+ private collectInnerOperatorStmts;
248
+ private getOverloadOpName;
249
+ /**
250
+ *Handling C++overloaded operator call expressions
251
+ *@ param cxxOperatorCallExpr C++AST node, representing operator calling expression
252
+ *@ returns the processed value and statement object. If it cannot be processed, it returns null
253
+ */
254
+ private handleOverloadedOp;
255
+ /**
256
+ *Build values and statements called by overloaded flow operators, such as<<or>>.
257
+ * Call IR for the function corresponding to the overload construction of the input/output stream operators operator<<, operator>>
258
+ *This function is used to handle operator overloading call expressions in C++, especially for input/output stream operators.
259
+ *It will parse parameters, find matching Ark methods, and generate corresponding call expressions.
260
+ *
261
+ *@ param cxxOperatorCallExpr represents the AST node of the C++operator call expression
262
+ *@ returns an object containing values and statements. If it cannot be constructed, it returns null
263
+ */
264
+ private buildInvokeValueForOverloadedStreamOp;
265
+ private buildInvokeValueForNormalOverloadedOp;
266
+ private RecoverExpressionToValueAndStmts;
267
+ /**
268
+ *Generate the value and statement block of the C++call expression (ValueAndStmts).
269
+ *
270
+ *@ param functionNameNode - the node corresponding to the function name, which is used to resolve the caller information.
271
+ *@ param argus - The object containing the actual generic type, parameter value list, and parameter location information.
272
+ *- realGenericTypes: list of actual generic types.
273
+ *- args: parameter value list.
274
+ *- argPositions: The location information of the parameter in the source code.
275
+ *@ param currStmts - List of existing statements. The newly generated statements will be appended on this basis.
276
+ *@ param callExpression - represents the AST node of the call expression, which is used to obtain the call location information.
277
+ *@ returns a ValueAndStmts object that contains the call value, value location information, and related statements.
278
+ */
279
+ private cxxGenerateInvokeValueAndStmts;
280
+ /**
281
+ *IR Processing of C++Function Calls
282
+ *@ param callExpression - C++AST node, representing member call expression
283
+ *@ returns ValueAndStmts object, including converted values and related statements
284
+ */
285
+ private cxxMemberCallExpressionToValueAndStmts;
286
+ /**
287
+ *Build values and statements called by members
288
+ *@ param stmts statement array, used to collect generated statements
289
+ *@ param callerNode Caller Node
290
+ *@ param argNodes parameter node array
291
+ *@ param callExpression calls the expression node
292
+ *@ param realGenericTypes Actual generic type array
293
+ *@ returns The ValueAndStmts object containing values, location information, and statements
294
+ */
295
+ private buildValueAndStmtsForMemberCall;
296
+ /**
297
+ *Build the call value referenced by the field
298
+ *
299
+ *@ param callerValue The caller value indicates the field reference
300
+ *@ param args calls the parameter array
301
+ *@ param realGenericTypes The actual generic type array may be undefined
302
+ *@ param invokeValuePositions calls the value position information array
303
+ *@ param callerPositions Caller position information array
304
+ *@ returns the ArkInstanceFieldRef or ArkStaticInvokeExpr instance
305
+ */
306
+ private buildInvokeValueForFieldRef;
307
+ private buildInvokeValueForLocal;
308
+ private cxxParseArgumentsOfCallExpression;
309
+ private getRealGenericTypes;
310
+ /**
311
+ * Resolves the type string based on priority (provided qualType > desugared > default).
312
+ */
313
+ private getTargetQualType;
314
+ /**
315
+ * Splits template arguments by comma, but remains aware of nested brackets
316
+ * to prevent incorrect splitting of nested templates.
317
+ */
318
+ private splitTemplateArguments;
319
+ private cxxParseArguments;
320
+ private cxxCallableNodeToValueAndStmts;
321
+ private cxxNewExpressionToValueAndStmts;
322
+ /**
323
+ *Generate C++code representation of constructor calls and member initialization, and add related statements to stmts.
324
+ * Extracted tail logic: construction call+special case processing+member initialization
325
+ *@ param stmts - an array that stores the generated statement nodes
326
+ *@ param newExpression - C++AST node representing new expression
327
+ *@ param newLocal - local variable representing the newly created object
328
+ *@ param newLocalPositions - the location information of the new local variable in the source code
329
+ *@ param constructorMethodSignature - constructor's method signature
330
+ *@ param className - the name of the current class, which is used for special processing of certain types (such as napi_property_descriptor)
331
+ */
332
+ private cxxEmitCtorInvokeAndMemberInits;
333
+ private getConstructorSignatureByClassTypeAndArgs;
334
+ /**
335
+ *Get the constructor parameter list, and process parameter resolution and conversion of various AST node types
336
+ *@ param constructArgs constructor parameter, which can be a single AST node or AST node array
337
+ *@ returns The constructor parameter array after parsing
338
+ */
339
+ private getConstructArgs;
340
+ /**
341
+ *Get the class name of the new expression
342
+ *@ param newExpression - new expression node of CxxAstNode type
343
+ *@ returns the processed class name string
344
+ */
345
+ private getNewExpressionClassName;
346
+ /**
347
+ *Remove the outermost template parameter (angle brackets and their contents) from the string
348
+ *@ param typeStr is a type string containing template parameters
349
+ *@ returns string after removing the outermost template parameter
350
+ */
351
+ private removeOutermostTemplateArgs;
352
+ /**
353
+ *Convert the new array expression of C++to ValueAndStmts
354
+ *@ param newArrayExpression - C++AST node, representing new array expression
355
+ *@ returns ValueAndStmts object, including converted values and related statements
356
+ */
357
+ private cxxNewArrayExpressionToValueAndStmts;
358
+ /**
359
+ *Convert C++array literal expression to ValueAndStmts
360
+ *@ param arrayLiteralExpression - Array literal node in C++abstract syntax tree
361
+ *@ returns The ValueAndStmts object containing the converted value and related statements
362
+ */
363
+ private cxxArrayLiteralExpressionToValueAndStmts;
364
+ private getArrayDimensions;
365
+ /**
366
+ *Process array literal expression and convert it to intermediate representation
367
+ *@ param arrayLiteralExpression array literal expression node
368
+ *@ param stmts is used to collect the generated statement list
369
+ *@ param elementTypes is used to collect the collection of array element types
370
+ *@ param elementValues is used to collect the list of array element values
371
+ *@ param elementPositions is used to collect the list of array element position information
372
+ */
373
+ private getArrayLiteralExpression;
374
+ /**
375
+ *Generate IR expressed by C++array
376
+ *
377
+ *@ param baseType - the basic type of the array element
378
+ *@ param arrayLengthValue - value object of array length
379
+ *@ param arrayLengthPosition - position information of array length
380
+ *@ param arrayLength - the actual length of the array
381
+ *@ param initializerValues - array initialization value list
382
+ *@ param initializerPositions - List of location information of initialization values
383
+ *@ param currStmts - List of existing statements
384
+ *@ param newArrayExprPosition - position information of the new array expression
385
+ *@ param fromLiteral - whether from literal
386
+ *@ returns The ValueAndStmts object containing values and statements
387
+ */
388
+ private cxxGenerateArrayExprAndStmts;
389
+ /**
390
+ *Converts C++prefix unary expression nodes to IR values and statement lists.
391
+ *
392
+ *@ param prefixUnaryExpression - prefix unary expression node in C++AST
393
+ *@ returns The object containing the converted value and the generated statement list
394
+ */
395
+ private cxxPrefixUnaryExpressionToValueAndStmts;
396
+ /**
397
+ *Convert a C++suffix unary expression to a sequence of values and statements
398
+ *
399
+ *@ param postfixUnaryExpression - suffix unary expression node in C++AST
400
+ *@ returns The object containing the converted value and related statements
401
+ */
402
+ private cxxPostfixUnaryExpressionToValueAndStmts;
403
+ declStmtToValueAndStmts(decl: CxxAstNode): ValueAndStmts;
404
+ /**
405
+ *Convert C++variable declarations to combinations of values and statements
406
+ *@ param variableDeclaration - C++variable declaration node
407
+ *@ param isConst - whether it is a constant declaration
408
+ *@ param needRightOp - Whether the right operand is required, the default is true
409
+ *@ returns the ValueAndStmts object containing values and statements
410
+ */
411
+ cxxVariableDeclarationToValueAndStmts(variableDeclaration: CxxAstNode, needRightOp?: boolean): ValueAndStmts;
412
+ private isCxxArray;
413
+ /**
414
+ *Process C++assignment expressions and convert them into ValueAndStmts structures.
415
+ *
416
+ *@ param leftOpNode The AST node of the left operand
417
+ *@ param rightOpNode The AST node of the right operand, which may be undefined
418
+ *@ param variableDefFlag indicates whether the variable is defined
419
+ *@ param isConst indicates whether it is a constant
420
+ *@ param declarationType Declared type
421
+ *@ param needRightOp Whether to process the right operand, the default is true
422
+ *@ returns the ValueAndStmts object containing the value, original position and statement list
423
+ */
424
+ private cxxAssignmentToValueAndStmts;
425
+ /**
426
+ *CPP implementation of converting the right operand node to a list of values and statements
427
+ *@ param rightOpNode The AST node of the right operand, which may be undefined
428
+ *@ param leftValue Left value object
429
+ *@ returns Objects containing values, location information, and statement lists
430
+ */
431
+ private cxxAssignmentRightOpToValueAndStmts;
432
+ /**
433
+ *Convert the C++AST node to a single address value and statement list
434
+ *@ param node - C++AST node to be converted
435
+ *@ returns An object containing a list of values, original positions, and statements
436
+ */
437
+ private cxxNodeToSingleAddressValueAndStmts;
438
+ /**
439
+ *Converts a C++binary expression node to a list of values and statements.
440
+ *In assignment patterns, the left operand will be an array literal expression
441
+ *In assignment patterns, the left operand will be an object literal expression
442
+ *@ param binaryExpression - Binary expression node in C++AST
443
+ *@ returns The ValueAndStmts object containing calculated values and related statements
444
+ */
445
+ private cxxBinaryExpressionToValueAndStmts;
446
+ /**
447
+ *Convert compound assignment expressions (such as+=, -=, etc.) in C++to values and statement lists in intermediate representation (IR).
448
+ *
449
+ *@ param binaryExpression represents the C++AST node of the compound assignment operation
450
+ *@ returns an object containing the calculated value, the original location information, and the generated statement list
451
+ */
452
+ private cxxCompoundAssignmentToValueAndStmts;
453
+ /**
454
+ *Convert the compound assignment operator to the corresponding binary operator
455
+ *
456
+ *@ param token - compound assignment operator string
457
+ *@ returns The corresponding binary operator. If no match is found, null is returned
458
+ */
459
+ private cxxCcompoundAssignmentTokenToBinaryOperator;
460
+ /**
461
+ *Convert C++conditional expression nodes to a combination of values and statements
462
+ *@ param condition - Condition node in C++abstract syntax tree
463
+ *@ returns Objects containing conditional expression values and related statements
464
+ */
465
+ cxxConditionToValueAndStmts(condition: CxxAstNode): ValueAndStmts;
466
+ private parseFloatAsCxxFloat;
467
+ /**
468
+ *Convert literal nodes in C++AST into corresponding value and statement lists.
469
+ *Literals currently processed: integer, floating point, string, character, Boolean value, null pointer, address label
470
+ *@ param literalNode - an AST node representing a C++literal
471
+ *@ returns the object containing the value, original location information and statement list. If the node type cannot be processed, null is returned
472
+ */
473
+ private cxxLiteralNodeToValueAndStmts;
474
+ static isCxxCompoundAssignmentOperator(op?: string): boolean;
475
+ private static isRelationalBinaryOperator;
476
+ }
477
+ //# sourceMappingURL=ArkValueTransformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../../src/frontend/cppFrontend/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}