@idlizer/arktscgen 2.1.5 → 2.1.9-arktscgen-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 (360) hide show
  1. package/build/libarkts-copy/generator/options.json5 +34 -0
  2. package/build/libarkts-copy/native/meson.build +128 -62
  3. package/build/libarkts-copy/native/meson_options.txt +19 -0
  4. package/build/libarkts-copy/native/src/bridges.cc +278 -15
  5. package/build/libarkts-copy/native/src/common.cc +212 -43
  6. package/build/libarkts-copy/native/src/common.h +95 -2
  7. package/build/libarkts-copy/native/src/generated/bridges.cc +2801 -466
  8. package/build/libarkts-copy/package.json +82 -62
  9. package/build/libarkts-copy/src/Es2pandaNativeModule.ts +97 -3
  10. package/build/libarkts-copy/src/InteropNativeModule.ts +3 -1
  11. package/build/libarkts-copy/src/arkts-api/AbstractVisitor.ts +1 -1
  12. package/build/libarkts-copy/src/arkts-api/ChainExpressionFilter.ts +78 -0
  13. package/build/libarkts-copy/src/arkts-api/CheckedBackFilter.ts +131 -0
  14. package/build/libarkts-copy/src/arkts-api/CompileWithCache.ts +193 -0
  15. package/build/libarkts-copy/src/arkts-api/ImportStorage.ts +78 -0
  16. package/build/libarkts-copy/src/arkts-api/InferVoidReturnType.ts +89 -0
  17. package/build/libarkts-copy/src/arkts-api/ProgramProvider.ts +50 -0
  18. package/build/libarkts-copy/src/arkts-api/SetBaseOverloads.ts +44 -0
  19. package/build/libarkts-copy/src/arkts-api/class-by-peer.ts +2 -3
  20. package/build/libarkts-copy/src/arkts-api/factory/nodeFactory.ts +93 -10
  21. package/build/libarkts-copy/src/arkts-api/index.ts +13 -1
  22. package/build/libarkts-copy/src/arkts-api/node-cache.ts +8 -4
  23. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationDeclaration.ts +32 -0
  24. package/build/libarkts-copy/src/arkts-api/node-utilities/AnnotationUsage.ts +37 -0
  25. package/build/libarkts-copy/src/arkts-api/node-utilities/ArkTsConfig.ts +26 -0
  26. package/build/libarkts-copy/src/arkts-api/node-utilities/ArrayExpression.ts +1 -1
  27. package/build/libarkts-copy/src/arkts-api/node-utilities/BinaryExpression.ts +37 -0
  28. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockExpression.ts +27 -0
  29. package/build/libarkts-copy/src/arkts-api/node-utilities/BlockStatement.ts +29 -0
  30. package/build/libarkts-copy/src/arkts-api/node-utilities/CallExpression.ts +2 -2
  31. package/build/libarkts-copy/src/arkts-api/node-utilities/ChainExpression.ts +27 -0
  32. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDeclaration.ts +54 -0
  33. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassDefinition.ts +1 -1
  34. package/build/libarkts-copy/src/arkts-api/node-utilities/ClassProperty.ts +27 -4
  35. package/build/libarkts-copy/src/arkts-api/node-utilities/ConditionalExpression.ts +36 -0
  36. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSFunctionType.ts +2 -2
  37. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSImportDeclaration.ts +3 -27
  38. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSNewClassInstanceExpression.ts +34 -0
  39. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSParameterExpression.ts +3 -9
  40. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSPrimitiveType.ts +28 -0
  41. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSStructDeclaration.ts +1 -1
  42. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTuple.ts +1 -1
  43. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReference.ts +27 -0
  44. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSTypeReferencePart.ts +36 -0
  45. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUndefinedType.ts +24 -0
  46. package/build/libarkts-copy/src/arkts-api/node-utilities/ETSUnionType.ts +27 -0
  47. package/build/libarkts-copy/src/arkts-api/node-utilities/Identifier.ts +27 -0
  48. package/build/libarkts-copy/src/arkts-api/node-utilities/ImportSpecifier.ts +31 -0
  49. package/build/libarkts-copy/src/arkts-api/node-utilities/MemberExpression.ts +1 -1
  50. package/build/libarkts-copy/src/arkts-api/node-utilities/MethodDefinition.ts +2 -2
  51. package/build/libarkts-copy/src/arkts-api/node-utilities/NullLiteral.ts +24 -0
  52. package/build/libarkts-copy/src/arkts-api/node-utilities/NumberLiteral.ts +2 -2
  53. package/build/libarkts-copy/src/arkts-api/node-utilities/ObjectExpression.ts +1 -1
  54. package/build/libarkts-copy/src/arkts-api/node-utilities/Program.ts +40 -0
  55. package/build/libarkts-copy/src/arkts-api/node-utilities/ReturnStatement.ts +27 -0
  56. package/build/libarkts-copy/src/arkts-api/node-utilities/StringLiteral.ts +27 -0
  57. package/build/libarkts-copy/src/arkts-api/node-utilities/SuperExpression.ts +24 -0
  58. package/build/libarkts-copy/src/arkts-api/node-utilities/TSAsExpression.ts +36 -0
  59. package/build/libarkts-copy/src/arkts-api/node-utilities/TSClassImplements.ts +31 -0
  60. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceBody.ts +28 -0
  61. package/build/libarkts-copy/src/arkts-api/node-utilities/TSInterfaceDeclaration.ts +30 -10
  62. package/build/libarkts-copy/src/arkts-api/node-utilities/TSNonNullExpression.ts +27 -0
  63. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +10 -2
  64. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameter.ts +1 -1
  65. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterDeclaration.ts +31 -0
  66. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeParameterInstantiation.ts +30 -0
  67. package/build/libarkts-copy/src/arkts-api/node-utilities/TSTypeReferencePart.ts +1 -1
  68. package/build/libarkts-copy/src/arkts-api/node-utilities/TemplateLiteral.ts +35 -0
  69. package/build/libarkts-copy/src/arkts-api/node-utilities/ThisExpression.ts +24 -0
  70. package/build/libarkts-copy/src/arkts-api/node-utilities/UndefinedLiteral.ts +24 -0
  71. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclaration.ts +1 -1
  72. package/build/libarkts-copy/src/arkts-api/node-utilities/VariableDeclarator.ts +1 -1
  73. package/build/libarkts-copy/src/arkts-api/peers/ArktsObject.ts +3 -1
  74. package/build/libarkts-copy/src/arkts-api/peers/AstNode.ts +78 -15
  75. package/build/libarkts-copy/src/arkts-api/peers/Config.ts +8 -1
  76. package/build/libarkts-copy/src/arkts-api/peers/Context.ts +72 -6
  77. package/build/libarkts-copy/src/arkts-api/peers/{Program.ts → ExternalSource.ts} +3 -21
  78. package/build/libarkts-copy/src/arkts-api/peers/Options.ts +34 -0
  79. package/build/libarkts-copy/src/arkts-api/plugins.ts +62 -0
  80. package/build/libarkts-copy/src/arkts-api/static/global.ts +9 -5
  81. package/build/libarkts-copy/src/arkts-api/static/profiler.ts +195 -23
  82. package/build/libarkts-copy/src/arkts-api/utilities/private.ts +36 -10
  83. package/build/libarkts-copy/src/arkts-api/utilities/public.ts +68 -20
  84. package/build/libarkts-copy/src/arkts-api/visitor.ts +162 -18
  85. package/build/libarkts-copy/src/arkts-api/wrapper-compat.ts +32 -0
  86. package/build/libarkts-copy/src/checkSdk.ts +25 -0
  87. package/build/libarkts-copy/src/generated/Es2pandaEnums.ts +448 -436
  88. package/build/libarkts-copy/src/generated/Es2pandaNativeModule.ts +775 -60
  89. package/build/libarkts-copy/src/generated/factory.ts +12 -15
  90. package/build/libarkts-copy/src/generated/index.ts +10 -3
  91. package/build/libarkts-copy/src/generated/peers/AnnotatedAstNode.ts +7 -1
  92. package/build/libarkts-copy/src/generated/peers/AnnotatedExpression.ts +7 -1
  93. package/build/libarkts-copy/src/generated/peers/AnnotatedStatement.ts +7 -1
  94. package/build/libarkts-copy/src/generated/peers/AnnotationDeclaration.ts +58 -6
  95. package/build/libarkts-copy/src/generated/peers/AnnotationUsage.ts +10 -4
  96. package/build/libarkts-copy/src/generated/peers/ArkTsConfig.ts +75 -0
  97. package/build/libarkts-copy/src/generated/peers/ArrayExpression.ts +11 -5
  98. package/build/libarkts-copy/src/generated/peers/ArrowFunctionExpression.ts +40 -6
  99. package/build/libarkts-copy/src/generated/peers/AssertStatement.ts +9 -3
  100. package/build/libarkts-copy/src/generated/peers/AssignmentExpression.ts +11 -5
  101. package/build/libarkts-copy/src/generated/peers/AstDumper.ts +7 -1
  102. package/build/libarkts-copy/src/generated/peers/AstVerifier.ts +7 -1
  103. package/build/libarkts-copy/src/generated/peers/AstVisitor.ts +7 -1
  104. package/build/libarkts-copy/src/generated/peers/AwaitExpression.ts +9 -3
  105. package/build/libarkts-copy/src/generated/peers/BigIntLiteral.ts +9 -3
  106. package/build/libarkts-copy/src/generated/peers/BinaryExpression.ts +9 -3
  107. package/build/libarkts-copy/src/generated/peers/BindingProps.ts +7 -1
  108. package/build/libarkts-copy/src/generated/peers/BlockExpression.ts +10 -4
  109. package/build/libarkts-copy/src/generated/peers/BlockStatement.ts +26 -7
  110. package/build/libarkts-copy/src/generated/peers/BooleanLiteral.ts +9 -3
  111. package/build/libarkts-copy/src/generated/peers/BreakStatement.ts +10 -4
  112. package/build/libarkts-copy/src/generated/peers/CallExpression.ts +20 -3
  113. package/build/libarkts-copy/src/generated/peers/CatchClause.ts +10 -4
  114. package/build/libarkts-copy/src/generated/peers/ChainExpression.ts +9 -3
  115. package/build/libarkts-copy/src/generated/peers/CharLiteral.ts +9 -3
  116. package/build/libarkts-copy/src/generated/peers/ClassDeclaration.ts +33 -4
  117. package/build/libarkts-copy/src/generated/peers/ClassDefinition.ts +128 -42
  118. package/build/libarkts-copy/src/generated/peers/ClassElement.ts +28 -4
  119. package/build/libarkts-copy/src/generated/peers/ClassExpression.ts +9 -3
  120. package/build/libarkts-copy/src/generated/peers/ClassProperty.ts +39 -5
  121. package/build/libarkts-copy/src/generated/peers/ClassStaticBlock.ts +9 -3
  122. package/build/libarkts-copy/src/generated/peers/CodeGen.ts +7 -1
  123. package/build/libarkts-copy/src/generated/peers/ConditionalExpression.ts +9 -3
  124. package/build/libarkts-copy/src/generated/peers/ContinueStatement.ts +10 -4
  125. package/build/libarkts-copy/src/generated/peers/DebuggerStatement.ts +9 -3
  126. package/build/libarkts-copy/src/generated/peers/Declaration.ts +7 -1
  127. package/build/libarkts-copy/src/generated/peers/Decorator.ts +9 -3
  128. package/build/libarkts-copy/src/generated/peers/{OverloadInfo.ts → DiagnosticInfo.ts} +8 -2
  129. package/build/libarkts-copy/src/generated/peers/DirectEvalExpression.ts +9 -3
  130. package/build/libarkts-copy/src/generated/peers/DoWhileStatement.ts +9 -3
  131. package/build/libarkts-copy/src/generated/peers/DynamicImportData.ts +7 -1
  132. package/build/libarkts-copy/src/generated/peers/ETSClassLiteral.ts +10 -4
  133. package/build/libarkts-copy/src/generated/peers/ETSFunctionType.ts +10 -4
  134. package/build/libarkts-copy/src/generated/peers/ETSImportDeclaration.ts +16 -5
  135. package/build/libarkts-copy/src/generated/peers/ETSKeyofType.ts +10 -4
  136. package/build/libarkts-copy/src/generated/peers/ETSModule.ts +59 -4
  137. package/build/libarkts-copy/src/generated/peers/ETSNewArrayInstanceExpression.ts +10 -4
  138. package/build/libarkts-copy/src/generated/peers/ETSNewClassInstanceExpression.ts +11 -5
  139. package/build/libarkts-copy/src/generated/peers/ETSNewMultiDimArrayInstanceExpression.ts +11 -5
  140. package/build/libarkts-copy/src/generated/peers/ETSNullType.ts +10 -4
  141. package/build/libarkts-copy/src/generated/peers/ETSPackageDeclaration.ts +10 -4
  142. package/build/libarkts-copy/src/generated/peers/ETSParameterExpression.ts +46 -12
  143. package/build/libarkts-copy/src/generated/peers/ETSPrimitiveType.ts +10 -4
  144. package/build/libarkts-copy/src/generated/peers/ETSReExportDeclaration.ts +7 -1
  145. package/build/libarkts-copy/src/generated/peers/ETSStringLiteralType.ts +10 -4
  146. package/build/libarkts-copy/src/generated/peers/ETSStructDeclaration.ts +10 -4
  147. package/build/libarkts-copy/src/generated/peers/ETSTuple.ts +14 -8
  148. package/build/libarkts-copy/src/generated/peers/ETSTypeReference.ts +10 -4
  149. package/build/libarkts-copy/src/generated/peers/ETSTypeReferencePart.ts +11 -5
  150. package/build/libarkts-copy/src/generated/peers/ETSUndefinedType.ts +10 -4
  151. package/build/libarkts-copy/src/generated/peers/ETSUnionType.ts +15 -4
  152. package/build/libarkts-copy/src/generated/peers/ETSWildcardType.ts +10 -4
  153. package/build/libarkts-copy/src/generated/peers/EmptyStatement.ts +16 -4
  154. package/build/libarkts-copy/src/generated/peers/ErrorLogger.ts +7 -1
  155. package/build/libarkts-copy/src/generated/peers/ExportAllDeclaration.ts +9 -3
  156. package/build/libarkts-copy/src/generated/peers/ExportDefaultDeclaration.ts +9 -3
  157. package/build/libarkts-copy/src/generated/peers/ExportNamedDeclaration.ts +18 -7
  158. package/build/libarkts-copy/src/generated/peers/ExportSpecifier.ts +26 -3
  159. package/build/libarkts-copy/src/generated/peers/Expression.ts +7 -1
  160. package/build/libarkts-copy/src/generated/peers/ExpressionStatement.ts +9 -3
  161. package/build/libarkts-copy/src/generated/peers/ForInStatement.ts +9 -3
  162. package/build/libarkts-copy/src/generated/peers/ForOfStatement.ts +9 -3
  163. package/build/libarkts-copy/src/generated/peers/ForUpdateStatement.ts +8 -2
  164. package/build/libarkts-copy/src/generated/peers/FunctionDecl.ts +7 -1
  165. package/build/libarkts-copy/src/generated/peers/FunctionDeclaration.ts +44 -6
  166. package/build/libarkts-copy/src/generated/peers/FunctionExpression.ts +10 -4
  167. package/build/libarkts-copy/src/generated/peers/FunctionSignature.ts +7 -1
  168. package/build/libarkts-copy/src/generated/peers/IRNode.ts +7 -1
  169. package/build/libarkts-copy/src/generated/peers/Identifier.ts +16 -5
  170. package/build/libarkts-copy/src/generated/peers/IfStatement.ts +14 -3
  171. package/build/libarkts-copy/src/generated/peers/ImportDeclaration.ts +28 -4
  172. package/build/libarkts-copy/src/generated/peers/ImportDefaultSpecifier.ts +9 -3
  173. package/build/libarkts-copy/src/generated/peers/ImportExpression.ts +9 -3
  174. package/build/libarkts-copy/src/generated/peers/ImportNamespaceSpecifier.ts +9 -3
  175. package/build/libarkts-copy/src/generated/peers/ImportSource.ts +7 -1
  176. package/build/libarkts-copy/src/generated/peers/ImportSpecifier.ts +9 -3
  177. package/build/libarkts-copy/src/generated/peers/IndexInfo.ts +7 -1
  178. package/build/libarkts-copy/src/generated/peers/InterfaceDecl.ts +7 -1
  179. package/build/libarkts-copy/src/generated/peers/LabelPair.ts +7 -1
  180. package/build/libarkts-copy/src/generated/peers/LabelledStatement.ts +9 -3
  181. package/build/libarkts-copy/src/generated/peers/Literal.ts +15 -1
  182. package/build/libarkts-copy/src/generated/peers/LoopStatement.ts +7 -1
  183. package/build/libarkts-copy/src/generated/peers/MaybeOptionalExpression.ts +7 -1
  184. package/build/libarkts-copy/src/generated/peers/MemberExpression.ts +9 -3
  185. package/build/libarkts-copy/src/generated/peers/MetaProperty.ts +9 -3
  186. package/build/libarkts-copy/src/generated/peers/MethodDefinition.ts +26 -10
  187. package/build/libarkts-copy/src/generated/peers/NamedType.ts +9 -3
  188. package/build/libarkts-copy/src/generated/peers/NewExpression.ts +9 -3
  189. package/build/libarkts-copy/src/generated/peers/NullLiteral.ts +9 -3
  190. package/build/libarkts-copy/src/generated/peers/NumberLiteral.ts +12 -6
  191. package/build/libarkts-copy/src/generated/peers/ObjectDescriptor.ts +7 -1
  192. package/build/libarkts-copy/src/generated/peers/ObjectExpression.ts +10 -4
  193. package/build/libarkts-copy/src/generated/peers/OmittedExpression.ts +9 -3
  194. package/build/libarkts-copy/src/generated/peers/OpaqueTypeNode.ts +10 -4
  195. package/build/libarkts-copy/src/generated/peers/PrefixAssertionExpression.ts +9 -3
  196. package/build/libarkts-copy/src/generated/peers/Program.ts +194 -0
  197. package/build/libarkts-copy/src/generated/peers/Property.ts +10 -4
  198. package/build/libarkts-copy/src/generated/peers/RegExpLiteral.ts +9 -3
  199. package/build/libarkts-copy/src/generated/peers/ReturnStatement.ts +10 -4
  200. package/build/libarkts-copy/src/generated/peers/ScopeFindResult.ts +7 -1
  201. package/build/libarkts-copy/src/generated/peers/ScriptFunction.ts +77 -10
  202. package/build/libarkts-copy/src/generated/peers/ScriptFunctionData.ts +7 -1
  203. package/build/libarkts-copy/src/generated/peers/SequenceExpression.ts +9 -3
  204. package/build/libarkts-copy/src/generated/peers/SignatureInfo.ts +7 -1
  205. package/build/libarkts-copy/src/generated/peers/SourcePosition.ts +7 -1
  206. package/build/libarkts-copy/src/generated/peers/SourceRange.ts +7 -1
  207. package/build/libarkts-copy/src/generated/peers/SpreadElement.ts +10 -4
  208. package/build/libarkts-copy/src/generated/peers/SrcDumper.ts +46 -9
  209. package/build/libarkts-copy/src/generated/peers/Statement.ts +7 -1
  210. package/build/libarkts-copy/src/generated/peers/StringLiteral.ts +10 -4
  211. package/build/libarkts-copy/src/generated/peers/{ETSDynamicFunctionType.ts → SuggestionInfo.ts} +7 -5
  212. package/build/libarkts-copy/src/generated/peers/SuperExpression.ts +10 -4
  213. package/build/libarkts-copy/src/generated/peers/SwitchCaseStatement.ts +10 -4
  214. package/build/libarkts-copy/src/generated/peers/SwitchStatement.ts +10 -4
  215. package/build/libarkts-copy/src/generated/peers/TSAnyKeyword.ts +10 -4
  216. package/build/libarkts-copy/src/generated/peers/TSArrayType.ts +10 -4
  217. package/build/libarkts-copy/src/generated/peers/TSAsExpression.ts +10 -4
  218. package/build/libarkts-copy/src/generated/peers/TSBigintKeyword.ts +10 -4
  219. package/build/libarkts-copy/src/generated/peers/TSBooleanKeyword.ts +10 -4
  220. package/build/libarkts-copy/src/generated/peers/TSClassImplements.ts +11 -5
  221. package/build/libarkts-copy/src/generated/peers/TSConditionalType.ts +10 -4
  222. package/build/libarkts-copy/src/generated/peers/TSConstructorType.ts +10 -4
  223. package/build/libarkts-copy/src/generated/peers/TSEnumDeclaration.ts +48 -6
  224. package/build/libarkts-copy/src/generated/peers/TSEnumMember.ts +11 -5
  225. package/build/libarkts-copy/src/generated/peers/TSExternalModuleReference.ts +10 -4
  226. package/build/libarkts-copy/src/generated/peers/TSFunctionType.ts +10 -4
  227. package/build/libarkts-copy/src/generated/peers/TSImportEqualsDeclaration.ts +10 -4
  228. package/build/libarkts-copy/src/generated/peers/TSImportType.ts +10 -4
  229. package/build/libarkts-copy/src/generated/peers/TSIndexSignature.ts +10 -4
  230. package/build/libarkts-copy/src/generated/peers/TSIndexedAccessType.ts +10 -4
  231. package/build/libarkts-copy/src/generated/peers/TSInferType.ts +10 -4
  232. package/build/libarkts-copy/src/generated/peers/TSInterfaceBody.ts +10 -4
  233. package/build/libarkts-copy/src/generated/peers/TSInterfaceDeclaration.ts +78 -8
  234. package/build/libarkts-copy/src/generated/peers/TSInterfaceHeritage.ts +10 -4
  235. package/build/libarkts-copy/src/generated/peers/TSIntersectionType.ts +10 -4
  236. package/build/libarkts-copy/src/generated/peers/TSLiteralType.ts +10 -4
  237. package/build/libarkts-copy/src/generated/peers/TSMappedType.ts +10 -4
  238. package/build/libarkts-copy/src/generated/peers/TSMethodSignature.ts +10 -4
  239. package/build/libarkts-copy/src/generated/peers/TSModuleBlock.ts +10 -4
  240. package/build/libarkts-copy/src/generated/peers/TSModuleDeclaration.ts +10 -4
  241. package/build/libarkts-copy/src/generated/peers/TSNamedTupleMember.ts +10 -4
  242. package/build/libarkts-copy/src/generated/peers/TSNeverKeyword.ts +10 -4
  243. package/build/libarkts-copy/src/generated/peers/TSNonNullExpression.ts +10 -4
  244. package/build/libarkts-copy/src/generated/peers/TSNullKeyword.ts +10 -4
  245. package/build/libarkts-copy/src/generated/peers/TSNumberKeyword.ts +10 -4
  246. package/build/libarkts-copy/src/generated/peers/TSObjectKeyword.ts +10 -4
  247. package/build/libarkts-copy/src/generated/peers/TSParameterProperty.ts +10 -4
  248. package/build/libarkts-copy/src/generated/peers/TSParenthesizedType.ts +10 -4
  249. package/build/libarkts-copy/src/generated/peers/TSPropertySignature.ts +10 -4
  250. package/build/libarkts-copy/src/generated/peers/TSQualifiedName.ts +10 -4
  251. package/build/libarkts-copy/src/generated/peers/TSSignatureDeclaration.ts +10 -4
  252. package/build/libarkts-copy/src/generated/peers/TSStringKeyword.ts +10 -4
  253. package/build/libarkts-copy/src/generated/peers/TSThisType.ts +10 -4
  254. package/build/libarkts-copy/src/generated/peers/TSTupleType.ts +10 -4
  255. package/build/libarkts-copy/src/generated/peers/TSTypeAliasDeclaration.ts +53 -6
  256. package/build/libarkts-copy/src/generated/peers/TSTypeAssertion.ts +10 -4
  257. package/build/libarkts-copy/src/generated/peers/TSTypeLiteral.ts +10 -4
  258. package/build/libarkts-copy/src/generated/peers/TSTypeOperator.ts +10 -4
  259. package/build/libarkts-copy/src/generated/peers/TSTypeParameter.ts +41 -7
  260. package/build/libarkts-copy/src/generated/peers/TSTypeParameterDeclaration.ts +15 -4
  261. package/build/libarkts-copy/src/generated/peers/TSTypeParameterInstantiation.ts +10 -4
  262. package/build/libarkts-copy/src/generated/peers/TSTypePredicate.ts +10 -4
  263. package/build/libarkts-copy/src/generated/peers/TSTypeQuery.ts +10 -4
  264. package/build/libarkts-copy/src/generated/peers/TSTypeReference.ts +10 -4
  265. package/build/libarkts-copy/src/generated/peers/TSUndefinedKeyword.ts +10 -4
  266. package/build/libarkts-copy/src/generated/peers/TSUnionType.ts +10 -4
  267. package/build/libarkts-copy/src/generated/peers/TSUnknownKeyword.ts +10 -4
  268. package/build/libarkts-copy/src/generated/peers/TSVoidKeyword.ts +10 -4
  269. package/build/libarkts-copy/src/generated/peers/TaggedTemplateExpression.ts +10 -4
  270. package/build/libarkts-copy/src/generated/peers/TemplateElement.ts +11 -5
  271. package/build/libarkts-copy/src/generated/peers/TemplateLiteral.ts +10 -4
  272. package/build/libarkts-copy/src/generated/peers/ThisExpression.ts +10 -4
  273. package/build/libarkts-copy/src/generated/peers/ThrowStatement.ts +10 -4
  274. package/build/libarkts-copy/src/generated/peers/TryStatement.ts +11 -5
  275. package/build/libarkts-copy/src/generated/peers/TypeNode.ts +37 -3
  276. package/build/libarkts-copy/src/generated/peers/TypedAstNode.ts +7 -1
  277. package/build/libarkts-copy/src/generated/peers/TypedStatement.ts +7 -1
  278. package/build/libarkts-copy/src/generated/peers/TypeofExpression.ts +10 -4
  279. package/build/libarkts-copy/src/generated/peers/UnaryExpression.ts +15 -4
  280. package/build/libarkts-copy/src/generated/peers/UndefinedLiteral.ts +9 -3
  281. package/build/libarkts-copy/src/generated/peers/UpdateExpression.ts +10 -4
  282. package/build/libarkts-copy/src/generated/peers/VReg.ts +7 -1
  283. package/build/libarkts-copy/src/generated/peers/ValidationInfo.ts +7 -1
  284. package/build/libarkts-copy/src/generated/peers/VariableDeclaration.ts +48 -8
  285. package/build/libarkts-copy/src/generated/peers/VariableDeclarator.ts +11 -5
  286. package/build/libarkts-copy/src/generated/peers/VerificationContext.ts +7 -1
  287. package/build/libarkts-copy/src/generated/peers/VerifierMessage.ts +7 -1
  288. package/build/libarkts-copy/src/generated/peers/WhileStatement.ts +15 -4
  289. package/build/libarkts-copy/src/generated/peers/YieldExpression.ts +10 -4
  290. package/build/libarkts-copy/src/index.ts +31 -1
  291. package/build/libarkts-copy/src/plugin-utils.ts +117 -0
  292. package/build/libarkts-copy/src/ts-api/factory/nodeFactory.ts +15 -0
  293. package/build/libarkts-copy/src/ts-api/factory/nodeTests.ts +15 -0
  294. package/build/libarkts-copy/src/ts-api/types.ts +15 -0
  295. package/build/libarkts-copy/src/utils.ts +24 -41
  296. package/build/libarkts-copy/src/wrapper-compat/README.md +16 -0
  297. package/build/libarkts-copy/src/wrapper-compat/arkts-api/class-by-peer.ts +46 -0
  298. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeFactory.ts +454 -0
  299. package/build/libarkts-copy/src/wrapper-compat/arkts-api/factory/nodeTests.ts +99 -0
  300. package/build/libarkts-copy/src/wrapper-compat/arkts-api/index.ts +88 -0
  301. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrayExpression.ts +38 -0
  302. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ArrowFunctionExpression.ts +35 -0
  303. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/AssignmentExpression.ts +38 -0
  304. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/BlockStatement.ts +27 -0
  305. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/CallExpression.ts +45 -0
  306. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDeclaration.ts +27 -0
  307. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassDefinition.ts +73 -0
  308. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ClassProperty.ts +51 -0
  309. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSFunctionType.ts +42 -0
  310. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSImportDeclaration.ts +39 -0
  311. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ETSParameterExpression.ts +43 -0
  312. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ExpressionStatement.ts +28 -0
  313. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionDeclaration.ts +37 -0
  314. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/FunctionExpression.ts +28 -0
  315. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/IfStatement.ts +37 -0
  316. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MemberExpression.ts +42 -0
  317. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/MethodDefinition.ts +46 -0
  318. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/NumberLiteral.ts +30 -0
  319. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ObjectExpression.ts +37 -0
  320. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/Property.ts +27 -0
  321. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/ScriptFunction.ts +46 -0
  322. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/StructDeclaration.ts +28 -0
  323. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSInterfaceDeclaration.ts +47 -0
  324. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeAliasDeclaration.ts +40 -0
  325. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TSTypeParameter.ts +36 -0
  326. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/TryStatement.ts +41 -0
  327. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclaration.ts +42 -0
  328. package/build/libarkts-copy/src/wrapper-compat/arkts-api/node-utilities/VariableDeclarator.ts +39 -0
  329. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ArktsObject.ts +45 -0
  330. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/AstNode.ts +26 -0
  331. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Config.ts +53 -0
  332. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Context.ts +60 -0
  333. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Diagnostic.ts +39 -0
  334. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticInfo.ts +33 -0
  335. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/DiagnosticKind.ts +33 -0
  336. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/ImportPathManager.ts +34 -0
  337. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/Program.ts +105 -0
  338. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourcePosition.ts +38 -0
  339. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SourceRange.ts +38 -0
  340. package/build/libarkts-copy/src/wrapper-compat/arkts-api/peers/SuggestionInfo.ts +33 -0
  341. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/global.ts +16 -0
  342. package/build/libarkts-copy/src/wrapper-compat/arkts-api/static/globalUtils.ts +27 -0
  343. package/build/libarkts-copy/src/wrapper-compat/arkts-api/to-be-generated/MemberExpression.ts +108 -0
  344. package/build/libarkts-copy/src/wrapper-compat/arkts-api/types.ts +907 -0
  345. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/nativePtrDecoder.ts +69 -0
  346. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/performance.ts +190 -0
  347. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/private.ts +198 -0
  348. package/build/libarkts-copy/src/wrapper-compat/arkts-api/utilities/public.ts +325 -0
  349. package/build/libarkts-copy/src/wrapper-compat/arkts-api/visitor.ts +421 -0
  350. package/build/libarkts-copy/src/wrapper-compat/index.ts +20 -0
  351. package/build/libarkts-copy/tsconfig.json +2 -1
  352. package/lib/index.js +1704 -273
  353. package/package.json +2 -2
  354. package/templates/Es2pandaEnums.ts +4 -0
  355. package/templates/Es2pandaNativeModule.ts +5 -1
  356. package/templates/factory.ts +5 -1
  357. package/templates/index.ts +5 -1
  358. package/templates/node-map.ts +5 -1
  359. package/templates/peer.ts +5 -1
  360. package/build/libarkts-copy/README.md +0 -36
@@ -14,19 +14,70 @@
14
14
  */
15
15
 
16
16
  #include <common.h>
17
+ #include <utility>
17
18
 
18
19
  using std::string, std::cout, std::endl, std::vector;
19
20
 
20
- static es2panda_Impl *impl = nullptr;
21
+ es2panda_Impl *es2pandaImplementation = nullptr;
22
+ static thread_local StageArena currentArena;
23
+
24
+ StageArena* StageArena::instance()
25
+ {
26
+ return &currentArena;
27
+ }
28
+
29
+ void StageArena::add(void* pointer)
30
+ {
31
+ if (pointer)
32
+ allocated.push_back(pointer);
33
+ }
34
+
35
+ void StageArena::cleanup()
36
+ {
37
+ if (totalSize > 0 && false)
38
+ printf("cleanup %d objects %d bytes\n", (int)allocated.size(), (int)totalSize);
39
+ for (auto it : allocated) {
40
+ free(it);
41
+ }
42
+ totalSize = 0;
43
+ allocated.clear();
44
+ }
45
+
46
+ StageArena::StageArena()
47
+ {
48
+ totalSize = 0;
49
+ }
50
+
51
+ StageArena::~StageArena()
52
+ {
53
+ cleanup();
54
+ }
55
+
56
+ char* StageArena::strdup(const char* string)
57
+ {
58
+ auto* arena = StageArena::instance();
59
+ auto size = strlen(string) + 1;
60
+ char* memory = (char*)arena->alloc(size);
61
+ memcpy(memory, string, size);
62
+ return memory;
63
+ }
64
+
65
+ void* StageArena::alloc(size_t size)
66
+ {
67
+ void* result = malloc(size);
68
+ totalSize += size;
69
+ add(result);
70
+ return result;
71
+ }
21
72
 
22
73
  #ifdef KOALA_WINDOWS
23
74
  #include <windows.h>
24
75
  #define PLUGIN_DIR "windows_host_tools"
25
- #define LIB_PREFIX ""
76
+ #define LIB_PREFIX "lib"
26
77
  #define LIB_SUFFIX ".dll"
27
78
  #endif
28
79
 
29
- #ifdef KOALA_LINUX
80
+ #if defined(KOALA_LINUX) || defined(KOALA_MACOS)
30
81
  #include <dlfcn.h>
31
82
 
32
83
  #ifdef __x86_64__
@@ -42,30 +93,98 @@ static es2panda_Impl *impl = nullptr;
42
93
  const char* DEFAULT_SDK_PATH = "../../../incremental/tools/panda/node_modules/@panda/sdk" ;
43
94
  const char* NAME = LIB_PREFIX "es2panda-public" LIB_SUFFIX;
44
95
 
96
+ const char* LIB_ES2PANDA_PUBLIC = LIB_PREFIX "es2panda_public" LIB_SUFFIX;
97
+ const char* IS_UI_FLAG = "IS_UI_FLAG";
98
+ const char* NOT_UI_FLAG = "NOT_UI_FLAG";
99
+ const string MODULE_SUFFIX = ".d.ets";
100
+ const string ARKUI = "arkui";
101
+
102
+ #ifdef KOALA_WINDOWS
103
+ const char *SEPARATOR = "\\";
104
+ #else
105
+ const char *SEPARATOR = "/";
106
+ #endif
107
+ const char *LIB_DIR = "lib";
108
+
109
+ static std::string ES2PANDA_LIB_PATH = "";
110
+
111
+ std::string joinPath(vector<string> &paths)
112
+ {
113
+ std::string res;
114
+ for (std::size_t i = 0; i < paths.size(); ++i) {
115
+ if (i == 0) {
116
+ res = paths[i];
117
+ } else {
118
+ res += SEPARATOR + paths[i];
119
+ }
120
+ }
121
+ return res;
122
+ }
123
+
124
+ void impl_SetUpSoPath(KStringPtr &soPath)
125
+ {
126
+ ES2PANDA_LIB_PATH = std::string(soPath.c_str());
127
+ }
128
+ KOALA_INTEROP_V1(SetUpSoPath, KStringPtr);
129
+
130
+ // todo: simplify this
45
131
  void* FindLibrary() {
132
+ void *res = NULL;
133
+ std::vector<std::string> pathArray;
134
+
135
+ // find by SetUpSoPath
136
+ if (!ES2PANDA_LIB_PATH.empty()) {
137
+ pathArray = {ES2PANDA_LIB_PATH, LIB_DIR, LIB_ES2PANDA_PUBLIC};
138
+ res = loadLibrary(joinPath(pathArray));
139
+ if (res) {
140
+ return res;
141
+ }
142
+ }
143
+
144
+ // find by set PANDA_SDK_PATH
46
145
  char* envValue = getenv("PANDA_SDK_PATH");
47
- if (!envValue) {
48
- std::cout << "PANDA_SDK_PATH not specified, assuming " << DEFAULT_SDK_PATH << std::endl;
146
+ if (envValue) {
147
+ pathArray = {envValue, PLUGIN_DIR, LIB_DIR, NAME};
148
+ res = loadLibrary(joinPath(pathArray));
149
+ if (res) {
150
+ return res;
151
+ }
152
+ }
153
+
154
+ // find by set LD_LIBRARY_PATH
155
+ pathArray = {LIB_ES2PANDA_PUBLIC};
156
+ res = loadLibrary(joinPath(pathArray));
157
+ if (res) {
158
+ return res;
159
+ }
160
+
161
+ // find by DEFAULT_SDK_PATH
162
+ pathArray = {DEFAULT_SDK_PATH, PLUGIN_DIR, LIB_DIR, NAME};
163
+ res = loadLibrary(joinPath(pathArray));
164
+ if (res) {
165
+ return res;
49
166
  }
50
- std::string prefix = envValue ? std::string(envValue) : DEFAULT_SDK_PATH;
51
- std::string libraryName = prefix + ("/" PLUGIN_DIR "/lib/") + NAME;
52
- return loadLibrary(libraryName);
167
+
168
+ return NULL;
53
169
  }
54
170
 
55
- es2panda_Impl *GetImpl() {
56
- if (impl) {
57
- return impl;
171
+ es2panda_Impl *GetImplSlow()
172
+ {
173
+ if (es2pandaImplementation) {
174
+ return es2pandaImplementation;
58
175
  }
59
176
  auto library = FindLibrary();
60
177
  if (!library) {
61
- throw std::runtime_error("No library (es2panda_lib.cc)");
178
+ printf("No library (es2panda_lib.cc)");
179
+ abort();
62
180
  }
63
181
  auto symbol = findSymbol(library, "es2panda_GetImpl");
64
182
  if (!symbol) {
65
- throw std::runtime_error("No entry point");
183
+ printf("no entry point");
184
+ abort();
66
185
  }
67
- impl = reinterpret_cast<es2panda_Impl *(*)(int)>(symbol)(ES2PANDA_LIB_VERSION);
68
- return impl;
186
+ es2pandaImplementation = reinterpret_cast<es2panda_Impl *(*)(int)>(symbol)(ES2PANDA_LIB_VERSION);
187
+ return es2pandaImplementation;
69
188
  }
70
189
 
71
190
  es2panda_ContextState intToState(KInt state)
@@ -73,41 +192,26 @@ es2panda_ContextState intToState(KInt state)
73
192
  return es2panda_ContextState(state);
74
193
  }
75
194
 
76
- string getString(KStringPtr ptr) {
195
+ string getString(KStringPtr ptr)
196
+ {
77
197
  return ptr.data();
78
198
  }
79
199
 
80
- char* getStringCopy(KStringPtr& ptr) {
81
- return strdup(ptr.c_str());
82
- }
83
-
84
- inline KUInt unpackUInt(const KByte* bytes) {
85
- const KUInt BYTE_0 = 0;
86
- const KUInt BYTE_1 = 1;
87
- const KUInt BYTE_2 = 2;
88
- const KUInt BYTE_3 = 3;
89
-
90
- const KUInt BYTE_1_SHIFT = 8;
91
- const KUInt BYTE_2_SHIFT = 16;
92
- const KUInt BYTE_3_SHIFT = 24;
93
- return (
94
- bytes[BYTE_0]
95
- | (bytes[BYTE_1] << BYTE_1_SHIFT)
96
- | (bytes[BYTE_2] << BYTE_2_SHIFT)
97
- | (bytes[BYTE_3] << BYTE_3_SHIFT)
98
- );
200
+ char* getStringCopy(KStringPtr& ptr)
201
+ {
202
+ return StageArena::strdup(ptr.c_str() ? ptr.c_str() : "");
99
203
  }
100
204
 
101
205
  KNativePointer impl_CreateConfig(KInt argc, KStringArray argvPtr) {
102
206
  const std::size_t headerLen = 4;
103
207
 
104
- const char** argv = new const char*[argc];
208
+ const char** argv = StageArena::allocArray<const char*>(argc);
105
209
  std::size_t position = headerLen;
106
210
  std::size_t strLen;
107
211
  for (std::size_t i = 0; i < static_cast<std::size_t>(argc); ++i) {
108
212
  strLen = unpackUInt(argvPtr + position);
109
213
  position += headerLen;
110
- argv[i] = strdup(std::string(reinterpret_cast<const char*>(argvPtr + position), strLen).c_str());
214
+ argv[i] = StageArena::strdup(std::string(reinterpret_cast<const char*>(argvPtr + position), strLen).c_str());
111
215
  position += strLen;
112
216
  }
113
217
  return GetImpl()->CreateConfig(argc, argv);
@@ -121,12 +225,12 @@ KNativePointer impl_DestroyConfig(KNativePointer configPtr) {
121
225
  }
122
226
  KOALA_INTEROP_1(DestroyConfig, KNativePointer, KNativePointer)
123
227
 
124
- KNativePointer impl_DestroyContext(KNativePointer contextPtr) {
228
+ void impl_DestroyContext(KNativePointer contextPtr) {
125
229
  auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
126
230
  GetImpl()->DestroyContext(context);
127
- return nullptr;
231
+ StageArena::instance()->cleanup();
128
232
  }
129
- KOALA_INTEROP_1(DestroyContext, KNativePointer, KNativePointer)
233
+ KOALA_INTEROP_V1(DestroyContext, KNativePointer)
130
234
 
131
235
  KNativePointer impl_UpdateCallExpression(
132
236
  KNativePointer contextPtr,
@@ -148,7 +252,7 @@ KNativePointer impl_UpdateCallExpression(
148
252
 
149
253
  auto nn = GetImpl()->CreateCallExpression(
150
254
  context, callee, arguments, argumentsLen, typeParams, optional, trailingComma
151
- );
255
+ );
152
256
  GetImpl()->AstNodeSetOriginalNode(context, nn, node);
153
257
  return nn;
154
258
  }
@@ -208,7 +312,8 @@ KOALA_INTEROP_2(AstNodeUpdateChildren, KNativePointer, KNativePointer, KNativePo
208
312
 
209
313
  std::vector<void*> cachedChildren;
210
314
 
211
- static void visitChild(es2panda_AstNode *node) {
315
+ static void visitChild(es2panda_AstNode *node)
316
+ {
212
317
  cachedChildren.emplace_back(node);
213
318
  }
214
319
 
@@ -222,10 +327,74 @@ KNativePointer impl_AstNodeChildren(
222
327
  cachedChildren.clear();
223
328
 
224
329
  GetImpl()->AstNodeIterateConst(context, node, visitChild);
225
- return new std::vector(cachedChildren);
330
+ return StageArena::clone(cachedChildren);
226
331
  }
227
332
  KOALA_INTEROP_2(AstNodeChildren, KNativePointer, KNativePointer, KNativePointer)
228
333
 
229
334
  /*
230
335
  -----------------------------------------------------------------------------------------------------------------------------
231
336
  */
337
+
338
+ // From koala-wrapper
339
+ // TODO check if some code should be generated
340
+
341
+ void impl_MemInitialize()
342
+ {
343
+ GetImpl()->MemInitialize();
344
+ }
345
+ KOALA_INTEROP_V0(MemInitialize)
346
+
347
+ void impl_MemFinalize()
348
+ {
349
+ GetImpl()->MemFinalize();
350
+ }
351
+ KOALA_INTEROP_V0(MemFinalize)
352
+
353
+ static bool isUIHeaderFile(es2panda_Context* context, es2panda_Program* program)
354
+ {
355
+ auto result = GetImpl()->ProgramFileNameWithExtensionConst(context, program);
356
+ string fileNameWithExtension(result);
357
+ result = GetImpl()->ProgramModuleNameConst(context, program);
358
+ string moduleName(result);
359
+
360
+ return fileNameWithExtension.length() >= MODULE_SUFFIX.length()
361
+ && fileNameWithExtension.substr(fileNameWithExtension.length() - MODULE_SUFFIX.length()) == MODULE_SUFFIX
362
+ && moduleName.find(ARKUI) != std::string::npos;
363
+ }
364
+
365
+ KBoolean impl_ProgramCanSkipPhases(KNativePointer context, KNativePointer program)
366
+ {
367
+ KStringPtr isUiFlag(IS_UI_FLAG);
368
+ KStringPtr notUiFlag(NOT_UI_FLAG);
369
+ const auto _context = reinterpret_cast<es2panda_Context*>(context);
370
+ const auto _program = reinterpret_cast<es2panda_Program*>(program);
371
+ if (isUIHeaderFile(_context, _program)) {
372
+ return false;
373
+ }
374
+ std::size_t sourceLen;
375
+ const auto externalSources = reinterpret_cast<es2panda_ExternalSource **>
376
+ (GetImpl()->ProgramExternalSources(_context, _program, &sourceLen));
377
+ for (std::size_t i = 0; i < sourceLen; ++i) {
378
+ std::size_t programLen;
379
+ auto programs = GetImpl()->ExternalSourcePrograms(externalSources[i], &programLen);
380
+ for (std::size_t j = 0; j < programLen; ++j) {
381
+ if (isUIHeaderFile(_context, programs[j])) {
382
+ return false;
383
+ }
384
+ }
385
+ }
386
+ return true;
387
+ }
388
+ KOALA_INTEROP_2(ProgramCanSkipPhases, KBoolean, KNativePointer, KNativePointer)
389
+
390
+ KNativePointer impl_AstNodeProgram(KNativePointer contextPtr, KNativePointer instancePtr)
391
+ {
392
+ auto _context = reinterpret_cast<es2panda_Context*>(contextPtr);
393
+ auto _receiver = reinterpret_cast<es2panda_AstNode*>(instancePtr);
394
+
395
+ if (GetImpl()->AstNodeIsProgramConst(_context, _receiver)) {
396
+ return GetImpl()->ETSModuleProgram(_context, _receiver);
397
+ }
398
+ return impl_AstNodeProgram(_context, GetImpl()->AstNodeParent(_context, _receiver));
399
+ }
400
+ KOALA_INTEROP_2(AstNodeProgram, KNativePointer, KNativePointer, KNativePointer)
@@ -1,3 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2025 Huawei Device Co., Ltd.
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+
1
16
  #ifndef COMMON_H
2
17
  #define COMMON_H
3
18
 
@@ -26,14 +41,92 @@
26
41
 
27
42
  using std::string, std::cout, std::endl, std::vector;
28
43
 
29
- es2panda_Impl *GetImpl();
44
+ extern es2panda_Impl *es2pandaImplementation;
45
+
46
+ es2panda_Impl *GetImplSlow();
47
+ inline es2panda_Impl *GetImpl() {
48
+ if (es2pandaImplementation) {
49
+ return es2pandaImplementation;
50
+ }
51
+ return GetImplSlow();
52
+ }
30
53
 
31
54
  string getString(KStringPtr ptr);
32
55
 
33
56
  char* getStringCopy(KStringPtr& ptr);
34
57
 
35
- inline KUInt unpackUInt(const KByte* bytes);
58
+ inline KUInt unpackUInt(const KByte* bytes)
59
+ {
60
+ const KUInt BYTE_0 = 0;
61
+ const KUInt BYTE_1 = 1;
62
+ const KUInt BYTE_2 = 2;
63
+ const KUInt BYTE_3 = 3;
64
+
65
+ const KUInt BYTE_1_SHIFT = 8;
66
+ const KUInt BYTE_2_SHIFT = 16;
67
+ const KUInt BYTE_3_SHIFT = 24;
68
+ return (
69
+ bytes[BYTE_0]
70
+ | (bytes[BYTE_1] << BYTE_1_SHIFT)
71
+ | (bytes[BYTE_2] << BYTE_2_SHIFT)
72
+ | (bytes[BYTE_3] << BYTE_3_SHIFT)
73
+ );
74
+ }
36
75
 
37
76
  es2panda_ContextState intToState(KInt state);
38
77
 
78
+ class StageArena {
79
+ std::vector<void*> allocated;
80
+ size_t totalSize;
81
+ public:
82
+ StageArena();
83
+ ~StageArena();
84
+ static StageArena* instance();
85
+ template <typename T>
86
+ static T* alloc()
87
+ {
88
+ auto* arena = StageArena::instance();
89
+ void* memory = arena->alloc(sizeof(T));
90
+ return new (memory) T();
91
+ }
92
+ template <class T, class T1>
93
+ static T* alloc(T1 arg1)
94
+ {
95
+ auto* arena = StageArena::instance();
96
+ void* memory = arena->alloc(sizeof(T));
97
+ return new (memory) T(std::forward(arg1));
98
+ }
99
+ template <class T, class T1, class T2>
100
+ static T* alloc(T1 arg1, T2 arg2)
101
+ {
102
+ auto* arena = StageArena::instance();
103
+ void* memory = arena->alloc(sizeof(T));
104
+ return new (memory) T(arg1, arg2);
105
+ }
106
+ template <typename T>
107
+ static T* allocArray(size_t count)
108
+ {
109
+ auto* arena = StageArena::instance();
110
+ // align?
111
+ void* memory = arena->alloc(sizeof(T) * count);
112
+ return new (memory) T();
113
+ }
114
+ template <class T>
115
+ static T* clone(const T& arg)
116
+ {
117
+ auto* arena = StageArena::instance();
118
+ void* memory = arena->alloc(sizeof(T));
119
+ return new (memory) T(arg);
120
+ }
121
+ template <class T>
122
+ static std::vector<const void*>* cloneVector(const T* arg, size_t count)
123
+ {
124
+ return alloc<std::vector<const void*>, const T*, const T*>(arg, arg + count);
125
+ }
126
+ void* alloc(size_t size);
127
+ static char* strdup(const char* original);
128
+ void add(void* pointer);
129
+ void cleanup();
130
+ };
131
+
39
132
  #endif // COMMON_H