1 /*
2 * Copyright (c) 2022-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
16 #include "common.h"
17
impl_ClassDefinitionIsFromStructConst(KNativePointer contextPtr,KNativePointer instancePtr)18 KBoolean impl_ClassDefinitionIsFromStructConst(KNativePointer contextPtr, KNativePointer instancePtr)
19 {
20 auto context = reinterpret_cast<es2panda_Context *>(contextPtr);
21 auto node = reinterpret_cast<es2panda_AstNode*>(instancePtr);
22 return GetImpl()->ClassDefinitionIsFromStructConst(context, node);
23 }
24 KOALA_INTEROP_2(ClassDefinitionIsFromStructConst, KBoolean, KNativePointer, KNativePointer);
25
impl_ClassDefinitionSetFromStructModifier(KNativePointer contextPtr,KNativePointer instancePtr)26 void impl_ClassDefinitionSetFromStructModifier(KNativePointer contextPtr, KNativePointer instancePtr)
27 {
28 auto context = reinterpret_cast<es2panda_Context *>(contextPtr);
29 auto node = reinterpret_cast<es2panda_AstNode*>(instancePtr);
30 return GetImpl()->ClassDefinitionSetFromStructModifier(context, node);
31 }
32 KOALA_INTEROP_V2(ClassDefinitionSetFromStructModifier, KNativePointer, KNativePointer);
33
impl_ImportSpecifierIsRemovableConst(KNativePointer contextPtr,KNativePointer instancePtr)34 KBoolean impl_ImportSpecifierIsRemovableConst(KNativePointer contextPtr, KNativePointer instancePtr)
35 {
36 auto context = reinterpret_cast<es2panda_Context *>(contextPtr);
37 auto node = reinterpret_cast<es2panda_AstNode*>(instancePtr);
38 return GetImpl()->ImportSpecifierIsRemovableConst(context, node);
39 }
40 KOALA_INTEROP_2(ImportSpecifierIsRemovableConst, KBoolean, KNativePointer, KNativePointer);
41
impl_ImportSpecifierSetRemovable(KNativePointer contextPtr,KNativePointer instancePtr)42 void impl_ImportSpecifierSetRemovable(KNativePointer contextPtr, KNativePointer instancePtr)
43 {
44 auto context = reinterpret_cast<es2panda_Context *>(contextPtr);
45 auto node = reinterpret_cast<es2panda_AstNode*>(instancePtr);
46 return GetImpl()->ImportSpecifierSetRemovable(context, node, true);
47 }
48 KOALA_INTEROP_V2(ImportSpecifierSetRemovable, KNativePointer, KNativePointer);
49
impl_AstNodeRecheck(KNativePointer contextPtr,KNativePointer nodePtr)50 KNativePointer impl_AstNodeRecheck(KNativePointer contextPtr, KNativePointer nodePtr)
51 {
52 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
53 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
54 GetImpl()->AstNodeRecheck(context, node);
55 return nullptr;
56 }
KOALA_INTEROP_2(AstNodeRecheck,KNativePointer,KNativePointer,KNativePointer)57 KOALA_INTEROP_2(AstNodeRecheck, KNativePointer, KNativePointer, KNativePointer)
58
59 KNativePointer impl_AstNodeRebind(KNativePointer contextPtr, KNativePointer nodePtr)
60 {
61 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
62 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
63 GetImpl()->AstNodeRebind(context, node);
64 return nullptr;
65 }
KOALA_INTEROP_2(AstNodeRebind,KNativePointer,KNativePointer,KNativePointer)66 KOALA_INTEROP_2(AstNodeRebind, KNativePointer, KNativePointer, KNativePointer)
67
68 KNativePointer impl_AnnotationAllowedAnnotations(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen)
69 {
70 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
71 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
72 std::size_t params_len = 0;
73 auto annotations = GetImpl()->AnnotationAllowedAnnotations(context, node, ¶ms_len);
74 return new std::vector<void*>(annotations, annotations + params_len);
75 }
KOALA_INTEROP_3(AnnotationAllowedAnnotations,KNativePointer,KNativePointer,KNativePointer,KNativePointer)76 KOALA_INTEROP_3(AnnotationAllowedAnnotations, KNativePointer, KNativePointer, KNativePointer, KNativePointer)
77
78 KNativePointer impl_AnnotationAllowedAnnotationsConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen)
79 {
80 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
81 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
82 std::size_t params_len = 0;
83 auto annotations = GetImpl()->AnnotationAllowedAnnotationsConst(context, node, ¶ms_len);
84 return new std::vector<void*>(annotations, annotations + params_len);
85 }
KOALA_INTEROP_3(AnnotationAllowedAnnotationsConst,KNativePointer,KNativePointer,KNativePointer,KNativePointer)86 KOALA_INTEROP_3(AnnotationAllowedAnnotationsConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer)
87
88 KNativePointer impl_AstNodeVariableConst(KNativePointer contextPtr, KNativePointer nodePtr)
89 {
90 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
91 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
92
93 return GetImpl()->AstNodeVariableConst(context, node);
94 }
KOALA_INTEROP_2(AstNodeVariableConst,KNativePointer,KNativePointer,KNativePointer)95 KOALA_INTEROP_2(AstNodeVariableConst, KNativePointer, KNativePointer, KNativePointer)
96
97 KNativePointer impl_VariableDeclaration(KNativePointer contextPtr, KNativePointer variablePtr)
98 {
99 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
100 auto variable = reinterpret_cast<es2panda_Variable*>(variablePtr);
101
102 return GetImpl()->VariableDeclaration(context, variable);
103 }
KOALA_INTEROP_2(VariableDeclaration,KNativePointer,KNativePointer,KNativePointer)104 KOALA_INTEROP_2(VariableDeclaration, KNativePointer, KNativePointer, KNativePointer)
105
106 KNativePointer impl_DeclNode(KNativePointer contextPtr, KNativePointer declPtr)
107 {
108 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
109 auto decl = reinterpret_cast<es2panda_Declaration*>(declPtr);
110
111 return GetImpl()->DeclNode(context, decl);
112 }
KOALA_INTEROP_2(DeclNode,KNativePointer,KNativePointer,KNativePointer)113 KOALA_INTEROP_2(DeclNode, KNativePointer, KNativePointer, KNativePointer)
114
115 KNativePointer impl_AstNodeScopeConst(KNativePointer contextPtr, KNativePointer nodePtr)
116 {
117 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
118 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
119 return GetImpl()->AstNodeScopeConst(context, node);
120 }
KOALA_INTEROP_2(AstNodeScopeConst,KNativePointer,KNativePointer,KNativePointer)121 KOALA_INTEROP_2(AstNodeScopeConst, KNativePointer, KNativePointer, KNativePointer)
122
123 KNativePointer impl_ScopeSetParent(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer parentPtr)
124 {
125 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
126 auto node = reinterpret_cast<es2panda_Scope*>(nodePtr);
127 auto parent = reinterpret_cast<es2panda_Scope*>(parentPtr);
128 GetImpl()->ScopeSetParent(context, node, parent);
129 return node;
130 }
KOALA_INTEROP_3(ScopeSetParent,KNativePointer,KNativePointer,KNativePointer,KNativePointer)131 KOALA_INTEROP_3(ScopeSetParent, KNativePointer, KNativePointer, KNativePointer, KNativePointer)
132
133 KNativePointer impl_CreateNumberLiteral(KNativePointer contextPtr, KDouble value)
134 {
135 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
136
137 return GetImpl()->CreateNumberLiteral(context, value);
138 }
KOALA_INTEROP_2(CreateNumberLiteral,KNativePointer,KNativePointer,KDouble)139 KOALA_INTEROP_2(CreateNumberLiteral, KNativePointer, KNativePointer, KDouble)
140
141 KNativePointer impl_ETSParserCreateExpression(KNativePointer contextPtr, KStringPtr& sourceCodePtr, KInt flagsT)
142 {
143 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
144 auto flags = static_cast<Es2pandaExpressionParseFlags>(flagsT);
145
146 return GetImpl()->ETSParserCreateExpression(context, getStringCopy(sourceCodePtr), flags);
147 }
KOALA_INTEROP_3(ETSParserCreateExpression,KNativePointer,KNativePointer,KStringPtr,KInt)148 KOALA_INTEROP_3(ETSParserCreateExpression, KNativePointer, KNativePointer, KStringPtr, KInt)
149
150 KBoolean impl_IsProgram(KNativePointer contextPtr, KNativePointer nodePtr)
151 {
152 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
153 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
154 return GetImpl()->AstNodeIsProgramConst(context, node);
155 }
KOALA_INTEROP_2(IsProgram,KBoolean,KNativePointer,KNativePointer)156 KOALA_INTEROP_2(IsProgram, KBoolean, KNativePointer, KNativePointer)
157
158 KBoolean impl_IsBlockStatement(KNativePointer nodePtr)
159 {
160 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
161 return GetImpl()->IsBlockStatement(node);
162 }
KOALA_INTEROP_1(IsBlockStatement,KBoolean,KNativePointer)163 KOALA_INTEROP_1(IsBlockStatement, KBoolean, KNativePointer)
164
165 KNativePointer impl_ProceedToState(KNativePointer contextPtr, KInt state)
166 {
167 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
168 return GetImpl()->ProceedToState(context, intToState(state));
169 }
KOALA_INTEROP_2(ProceedToState,KNativePointer,KNativePointer,KInt)170 KOALA_INTEROP_2(ProceedToState, KNativePointer, KNativePointer, KInt)
171
172 KNativePointer impl_ContextProgram(KNativePointer contextPtr)
173 {
174 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
175 return GetImpl()->ContextProgram(context);
176 }
KOALA_INTEROP_1(ContextProgram,KNativePointer,KNativePointer)177 KOALA_INTEROP_1(ContextProgram, KNativePointer, KNativePointer)
178
179 KNativePointer impl_ProgramAst(KNativePointer contextPtr, KNativePointer programPtr)
180 {
181 auto context = reinterpret_cast<es2panda_Context*>(programPtr);
182 auto program = reinterpret_cast<es2panda_Program*>(programPtr);
183 return GetImpl()->ProgramAst(context, program);
184 }
KOALA_INTEROP_2(ProgramAst,KNativePointer,KNativePointer,KNativePointer)185 KOALA_INTEROP_2(ProgramAst, KNativePointer, KNativePointer, KNativePointer)
186
187 KBoolean impl_IsIdentifier(KNativePointer nodePtr)
188 {
189 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
190 return GetImpl()->IsIdentifier(node);
191 }
KOALA_INTEROP_1(IsIdentifier,KBoolean,KNativePointer)192 KOALA_INTEROP_1(IsIdentifier, KBoolean, KNativePointer)
193
194 KNativePointer impl_CreateContextFromString(KNativePointer configPtr, KStringPtr& sourcePtr, KStringPtr& filenamePtr)
195 {
196 auto config = reinterpret_cast<es2panda_Config*>(configPtr);
197 return GetImpl()->CreateContextFromString(config, sourcePtr.data(), filenamePtr.data());
198 }
KOALA_INTEROP_3(CreateContextFromString,KNativePointer,KNativePointer,KStringPtr,KStringPtr)199 KOALA_INTEROP_3(CreateContextFromString, KNativePointer, KNativePointer, KStringPtr, KStringPtr)
200
201 KNativePointer impl_CreateContextFromFile(KNativePointer configPtr, KStringPtr& filenamePtr)
202 {
203 auto config = reinterpret_cast<es2panda_Config*>(configPtr);
204 return GetImpl()->CreateContextFromFile(config, getStringCopy(filenamePtr));
205 }
KOALA_INTEROP_2(CreateContextFromFile,KNativePointer,KNativePointer,KStringPtr)206 KOALA_INTEROP_2(CreateContextFromFile, KNativePointer, KNativePointer, KStringPtr)
207
208 KInt impl_ContextState(KNativePointer contextPtr)
209 {
210 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
211
212 return static_cast<KInt>(GetImpl()->ContextState(context));
213 }
KOALA_INTEROP_1(ContextState,KInt,KNativePointer)214 KOALA_INTEROP_1(ContextState, KInt, KNativePointer)
215
216 KNativePointer impl_ContextErrorMessage(KNativePointer contextPtr)
217 {
218 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
219
220 return new string(GetImpl()->ContextErrorMessage(context));
221 }
KOALA_INTEROP_1(ContextErrorMessage,KNativePointer,KNativePointer)222 KOALA_INTEROP_1(ContextErrorMessage, KNativePointer, KNativePointer)
223
224 KNativePointer impl_GetAllErrorMessages(KNativePointer contextPtr)
225 {
226 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
227
228 return new string(GetImpl()->GetAllErrorMessages(context));
229 }
KOALA_INTEROP_1(GetAllErrorMessages,KNativePointer,KNativePointer)230 KOALA_INTEROP_1(GetAllErrorMessages, KNativePointer, KNativePointer)
231
232 KNativePointer impl_CallExpressionSignature(KNativePointer context, KNativePointer classInstance)
233 {
234 const auto _context = reinterpret_cast<es2panda_Context*>(context);
235 const auto _classInstance = reinterpret_cast<es2panda_AstNode*>(classInstance);
236 const auto result = GetImpl()->CallExpressionSignature(_context, _classInstance);
237 return result;
238 }
KOALA_INTEROP_2(CallExpressionSignature,KNativePointer,KNativePointer,KNativePointer)239 KOALA_INTEROP_2(CallExpressionSignature, KNativePointer, KNativePointer, KNativePointer)
240
241 KNativePointer impl_SignatureFunction(KNativePointer context, KNativePointer classInstance)
242 {
243 const auto _context = reinterpret_cast<es2panda_Context*>(context);
244 const auto _classInstance = reinterpret_cast<es2panda_Signature*>(classInstance);
245 const auto result = GetImpl()->SignatureFunction(_context, _classInstance);
246 return result;
247 }
KOALA_INTEROP_2(SignatureFunction,KNativePointer,KNativePointer,KNativePointer)248 KOALA_INTEROP_2(SignatureFunction, KNativePointer, KNativePointer, KNativePointer)
249
250 KNativePointer impl_DeclarationFromIdentifier(KNativePointer context, KNativePointer identifier)
251 {
252 const auto _context = reinterpret_cast<es2panda_Context*>(context);
253 const auto _identifier = reinterpret_cast<es2panda_AstNode*>(identifier);
254 const auto result = GetImpl()->DeclarationFromIdentifier(_context, _identifier);
255 return result;
256 }
KOALA_INTEROP_2(DeclarationFromIdentifier,KNativePointer,KNativePointer,KNativePointer)257 KOALA_INTEROP_2(DeclarationFromIdentifier, KNativePointer, KNativePointer, KNativePointer)
258
259 static KNativePointer impl_ProgramExternalSources(KNativePointer contextPtr, KNativePointer instancePtr)
260 {
261 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
262 auto&& instance = reinterpret_cast<es2panda_Program *>(instancePtr);
263 std::size_t source_len = 0;
264 auto external_sources = GetImpl()->ProgramExternalSources(context, instance, &source_len);
265 return new std::vector<void*>(external_sources, external_sources + source_len);
266 }
267 KOALA_INTEROP_2(ProgramExternalSources, KNativePointer, KNativePointer, KNativePointer);
268
impl_ExternalSourceName(KNativePointer instance)269 static KNativePointer impl_ExternalSourceName(KNativePointer instance)
270 {
271 auto&& _instance_ = reinterpret_cast<es2panda_ExternalSource *>(instance);
272 auto&& _result_ = GetImpl()->ExternalSourceName(_instance_);
273 return new std::string(_result_);
274 }
275 KOALA_INTEROP_1(ExternalSourceName, KNativePointer, KNativePointer);
276
impl_ExternalSourcePrograms(KNativePointer instance)277 static KNativePointer impl_ExternalSourcePrograms(KNativePointer instance)
278 {
279 auto&& _instance_ = reinterpret_cast<es2panda_ExternalSource *>(instance);
280 std::size_t program_len = 0;
281 auto programs = GetImpl()->ExternalSourcePrograms(_instance_, &program_len);
282 return new std::vector<void*>(programs, programs + program_len);
283 }
284 KOALA_INTEROP_1(ExternalSourcePrograms, KNativePointer, KNativePointer);
285
impl_CreateContextGenerateAbcForExternalSourceFiles(KNativePointer configPtr,KInt fileNamesCount,KStringArray fileNames)286 KNativePointer impl_CreateContextGenerateAbcForExternalSourceFiles(
287 KNativePointer configPtr, KInt fileNamesCount, KStringArray fileNames)
288 {
289 auto config = reinterpret_cast<es2panda_Config *>(configPtr);
290 const std::size_t headerLen = 4;
291 const char **argv =
292 new const char *[static_cast<unsigned int>(fileNamesCount)];
293 std::size_t position = headerLen;
294 std::size_t strLen;
295 for (std::size_t i = 0; i < static_cast<std::size_t>(fileNamesCount); ++i) {
296 strLen = unpackUInt(fileNames + position);
297 position += headerLen;
298 argv[i] = strdup(std::string(reinterpret_cast<const char *>(fileNames + position),
299 strLen).c_str());
300 position += strLen;
301 }
302 auto context = GetImpl()->CreateContextGenerateAbcForExternalSourceFiles(
303 config, fileNamesCount, argv);
304 delete[] argv;
305 return context;
306 }
KOALA_INTEROP_3(CreateContextGenerateAbcForExternalSourceFiles,KNativePointer,KNativePointer,KInt,KStringArray)307 KOALA_INTEROP_3(CreateContextGenerateAbcForExternalSourceFiles, KNativePointer, KNativePointer, KInt, KStringArray)
308
309 KBoolean impl_IsClassProperty(KNativePointer nodePtr)
310 {
311 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
312 return GetImpl()->IsClassProperty(node);
313 }
KOALA_INTEROP_1(IsClassProperty,KBoolean,KNativePointer)314 KOALA_INTEROP_1(IsClassProperty, KBoolean, KNativePointer)
315
316 KBoolean impl_IsETSUnionType(KNativePointer nodePtr)
317 {
318 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
319 return GetImpl()->IsETSUnionType(node);
320 }
KOALA_INTEROP_1(IsETSUnionType,KBoolean,KNativePointer)321 KOALA_INTEROP_1(IsETSUnionType, KBoolean, KNativePointer)
322
323 KBoolean impl_IsETSFunctionType(KNativePointer nodePtr)
324 {
325 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
326 return GetImpl()->IsETSFunctionType(node);
327 }
KOALA_INTEROP_1(IsETSFunctionType,KBoolean,KNativePointer)328 KOALA_INTEROP_1(IsETSFunctionType, KBoolean, KNativePointer)
329
330 KInt impl_GenerateTsDeclarationsFromContext(KNativePointer contextPtr, KStringPtr &outputDeclEts, KStringPtr &outputEts,
331 KBoolean exportAll, KStringPtr &recordFile)
332 {
333 auto context = reinterpret_cast<es2panda_Context *>(contextPtr);
334 return GetImpl()->GenerateTsDeclarationsFromContext(context, outputDeclEts.data(), outputEts.data(),
335 exportAll, recordFile.data());
336 }
KOALA_INTEROP_5(GenerateTsDeclarationsFromContext,KInt,KNativePointer,KStringPtr,KStringPtr,KBoolean,KStringPtr)337 KOALA_INTEROP_5(GenerateTsDeclarationsFromContext, KInt, KNativePointer, KStringPtr, KStringPtr, KBoolean, KStringPtr)
338
339 void impl_InsertETSImportDeclarationAndParse(KNativePointer context, KNativePointer program,
340 KNativePointer importDeclaration)
341 {
342 const auto _context = reinterpret_cast<es2panda_Context*>(context);
343 const auto _program = reinterpret_cast<es2panda_Program *>(program);
344 const auto _ast = reinterpret_cast<es2panda_AstNode*>(importDeclaration);
345 GetImpl()->InsertETSImportDeclarationAndParse(_context, _program, _ast);
346 return ;
347 }
348 KOALA_INTEROP_V3(InsertETSImportDeclarationAndParse, KNativePointer, KNativePointer, KNativePointer);
349
impl_ETSParserGetImportPathManager(KNativePointer contextPtr)350 KNativePointer impl_ETSParserGetImportPathManager(KNativePointer contextPtr)
351 {
352 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
353 return GetImpl()->ETSParserGetImportPathManager(context);
354 }
355 KOALA_INTEROP_1(ETSParserGetImportPathManager, KNativePointer, KNativePointer);
356
impl_CreateSourcePosition(KNativePointer context,KInt index,KInt line)357 KNativePointer impl_CreateSourcePosition(KNativePointer context, KInt index, KInt line)
358 {
359 auto&& _context_ = reinterpret_cast<es2panda_Context *>(context);
360 return GetImpl()->CreateSourcePosition(_context_, index, line);
361 }
362 KOALA_INTEROP_3(CreateSourcePosition, KNativePointer, KNativePointer, KInt, KInt);
363
impl_SourcePositionIndex(KNativePointer context,KNativePointer instance)364 KInt impl_SourcePositionIndex(KNativePointer context, KNativePointer instance)
365 {
366 auto&& _context_ = reinterpret_cast<es2panda_Context *>(context);
367 auto&& _instance_ = reinterpret_cast<es2panda_SourcePosition *>(instance);
368 return GetImpl()->SourcePositionIndex(_context_, _instance_);
369 }
370 KOALA_INTEROP_2(SourcePositionIndex, KInt, KNativePointer, KNativePointer);
371
impl_SourcePositionLine(KNativePointer context,KNativePointer instance)372 KInt impl_SourcePositionLine(KNativePointer context, KNativePointer instance)
373 {
374 auto&& _context_ = reinterpret_cast<es2panda_Context *>(context);
375 auto&& _instance_ = reinterpret_cast<es2panda_SourcePosition *>(instance);
376 return GetImpl()->SourcePositionLine(_context_, _instance_);
377 }
378 KOALA_INTEROP_2(SourcePositionLine, KInt, KNativePointer, KNativePointer);
379
impl_CreateSourceRange(KNativePointer context,KNativePointer start,KNativePointer end)380 KNativePointer impl_CreateSourceRange(KNativePointer context, KNativePointer start, KNativePointer end)
381 {
382 auto&& _context_ = reinterpret_cast<es2panda_Context *>(context);
383 auto&& _start_ = reinterpret_cast<es2panda_SourcePosition *>(start);
384 auto&& _end_ = reinterpret_cast<es2panda_SourcePosition *>(end);
385 return GetImpl()->CreateSourceRange(_context_, _start_, _end_);
386 }
387 KOALA_INTEROP_3(CreateSourceRange, KNativePointer, KNativePointer, KNativePointer, KNativePointer);
388
impl_CreateETSStringLiteralType(KNativePointer contextPtr,KStringPtr & str)389 KNativePointer impl_CreateETSStringLiteralType(KNativePointer contextPtr, KStringPtr& str)
390 {
391 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
392 const auto _str = getStringCopy(str);
393 return GetImpl()->CreateETSStringLiteralType(context, _str);
394 }
KOALA_INTEROP_2(CreateETSStringLiteralType,KNativePointer,KNativePointer,KStringPtr)395 KOALA_INTEROP_2(CreateETSStringLiteralType, KNativePointer, KNativePointer, KStringPtr)
396
397 KNativePointer impl_ProgramFileNameConst(KNativePointer contextPtr, KNativePointer programPtr)
398 {
399 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
400 auto program = reinterpret_cast<es2panda_Program*>(programPtr);
401 auto result = GetImpl()->ProgramFileNameConst(context, program);
402 return new std::string(result);
403 }
KOALA_INTEROP_2(ProgramFileNameConst,KNativePointer,KNativePointer,KNativePointer)404 KOALA_INTEROP_2(ProgramFileNameConst, KNativePointer, KNativePointer, KNativePointer)
405
406 KNativePointer impl_ProgramFileNameWithExtensionConst(KNativePointer contextPtr, KNativePointer programPtr)
407 {
408 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
409 auto program = reinterpret_cast<es2panda_Program*>(programPtr);
410 auto result = GetImpl()->ProgramFileNameWithExtensionConst(context, program);
411 return new std::string(result);
412 }
KOALA_INTEROP_2(ProgramFileNameWithExtensionConst,KNativePointer,KNativePointer,KNativePointer)413 KOALA_INTEROP_2(ProgramFileNameWithExtensionConst, KNativePointer, KNativePointer, KNativePointer)
414
415 KNativePointer impl_ETSParserGetGlobalProgramAbsName(KNativePointer contextPtr)
416 {
417 auto context = reinterpret_cast<es2panda_Context*>(contextPtr);
418 auto result = GetImpl()->ETSParserGetGlobalProgramAbsName(context);
419 return new std::string(result);
420 }
KOALA_INTEROP_1(ETSParserGetGlobalProgramAbsName,KNativePointer,KNativePointer)421 KOALA_INTEROP_1(ETSParserGetGlobalProgramAbsName, KNativePointer, KNativePointer)
422
423 KNativePointer impl_ClassVariableDeclaration(KNativePointer context, KNativePointer classInstance)
424 {
425 const auto _context = reinterpret_cast<es2panda_Context*>(context);
426 const auto _classInstance = reinterpret_cast<es2panda_AstNode*>(classInstance);
427 auto _typedTsType = GetImpl()->TypedTsType(_context, _classInstance);
428 if (_typedTsType == nullptr) {
429 return nullptr;
430 }
431 const auto _instanceType = reinterpret_cast<es2panda_Type*>(_typedTsType);
432 auto _typeVar = GetImpl()->TypeVariable(_context, _instanceType);
433 if (_typeVar == nullptr) {
434 return nullptr;
435 }
436 const auto result = reinterpret_cast<es2panda_Declaration*>(GetImpl()->VariableDeclaration(_context, _typeVar));
437 const auto declNode = GetImpl()->DeclNode(_context, result);
438 return declNode;
439 }
KOALA_INTEROP_2(ClassVariableDeclaration,KNativePointer,KNativePointer,KNativePointer)440 KOALA_INTEROP_2(ClassVariableDeclaration, KNativePointer, KNativePointer, KNativePointer)
441
442 KBoolean impl_IsMethodDefinition(KNativePointer nodePtr)
443 {
444 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
445 return GetImpl()->IsMethodDefinition(node);
446 }
KOALA_INTEROP_1(IsMethodDefinition,KBoolean,KNativePointer)447 KOALA_INTEROP_1(IsMethodDefinition, KBoolean, KNativePointer)
448
449 KNativePointer impl_CreateETSImportDeclaration(KNativePointer context, KNativePointer source,
450 KNativePointerArray specifiers, KUInt specifiersSequenceLength,
451 KInt importKind, KNativePointer programPtr, KInt flags)
452 {
453 const auto _context = reinterpret_cast<es2panda_Context*>(context);
454 const auto _source = reinterpret_cast<es2panda_AstNode*>(source);
455 const auto _specifiers = reinterpret_cast<es2panda_AstNode**>(specifiers);
456 const auto _specifiersSequenceLength = static_cast<KUInt>(specifiersSequenceLength);
457 const auto _importKind = static_cast<Es2pandaImportKinds>(importKind);
458 const auto _program = reinterpret_cast<es2panda_Program*>(programPtr);
459 const auto _flags = static_cast<Es2pandaImportFlags>(flags);
460 auto result = GetImpl()->ETSParserBuildImportDeclaration(_context, _importKind, _specifiers,
461 _specifiersSequenceLength, _source, _program, _flags);
462 return result;
463 }
KOALA_INTEROP_7(CreateETSImportDeclaration,KNativePointer,KNativePointer,KNativePointer,KNativePointerArray,KUInt,KInt,KNativePointer,KInt)464 KOALA_INTEROP_7(CreateETSImportDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray,
465 KUInt, KInt, KNativePointer, KInt)
466
467 KNativePointer impl_AstNodeRangeConst(KNativePointer context, KNativePointer node)
468 {
469 const auto _context = reinterpret_cast<es2panda_Context*>(context);
470 const auto _node = reinterpret_cast<es2panda_AstNode*>(node);
471 auto result = GetImpl()->AstNodeRangeConst(_context, _node);
472 return (void*)result;
473 }
KOALA_INTEROP_2(AstNodeRangeConst,KNativePointer,KNativePointer,KNativePointer)474 KOALA_INTEROP_2(AstNodeRangeConst, KNativePointer, KNativePointer, KNativePointer)
475
476 KNativePointer impl_SourceRangeStart(KNativePointer context, KNativePointer range)
477 {
478 const auto _context = reinterpret_cast<es2panda_Context*>(context);
479 const auto _range = reinterpret_cast<es2panda_SourceRange*>(range);
480 auto result = GetImpl()->SourceRangeStart(_context, _range);
481 return result;
482 }
KOALA_INTEROP_2(SourceRangeStart,KNativePointer,KNativePointer,KNativePointer)483 KOALA_INTEROP_2(SourceRangeStart, KNativePointer, KNativePointer, KNativePointer)
484
485 KNativePointer impl_SourceRangeEnd(KNativePointer context, KNativePointer range)
486 {
487 const auto _context = reinterpret_cast<es2panda_Context*>(context);
488 const auto _range = reinterpret_cast<es2panda_SourceRange*>(range);
489 auto result = GetImpl()->SourceRangeEnd(_context, _range);
490 return result;
491 }
KOALA_INTEROP_2(SourceRangeEnd,KNativePointer,KNativePointer,KNativePointer)492 KOALA_INTEROP_2(SourceRangeEnd, KNativePointer, KNativePointer, KNativePointer)
493 bool impl_ClassPropertyIsDefaultAccessModifierConst(KNativePointer context, KNativePointer receiver)
494 {
495 const auto _context = reinterpret_cast<es2panda_Context*>(context);
496 const auto _receiver = reinterpret_cast<es2panda_AstNode*>(receiver);
497 return GetImpl()->ClassPropertyIsDefaultAccessModifierConst(_context, _receiver);
498 }
499 KOALA_INTEROP_2(ClassPropertyIsDefaultAccessModifierConst, KBoolean, KNativePointer, KNativePointer);
500
impl_AstNodeStartConst(KNativePointer context,KNativePointer receiver)501 KNativePointer impl_AstNodeStartConst(KNativePointer context, KNativePointer receiver)
502 {
503 const auto _context = reinterpret_cast<es2panda_Context*>(context);
504 const auto _receiver = reinterpret_cast<es2panda_AstNode*>(receiver);
505 return const_cast<es2panda_SourcePosition *>(GetImpl()->AstNodeStartConst(_context, _receiver));
506 }
507 KOALA_INTEROP_2(AstNodeStartConst, KNativePointer, KNativePointer, KNativePointer);
508
impl_AstNodeEndConst(KNativePointer context,KNativePointer receiver)509 KNativePointer impl_AstNodeEndConst(KNativePointer context, KNativePointer receiver)
510 {
511 const auto _context = reinterpret_cast<es2panda_Context*>(context);
512 const auto _receiver = reinterpret_cast<es2panda_AstNode*>(receiver);
513 return const_cast<es2panda_SourcePosition *>(GetImpl()->AstNodeEndConst(_context, _receiver));
514 }
515 KOALA_INTEROP_2(AstNodeEndConst, KNativePointer, KNativePointer, KNativePointer);
516
impl_IsArrayExpression(KNativePointer nodePtr)517 KBoolean impl_IsArrayExpression(KNativePointer nodePtr)
518 {
519 auto node = reinterpret_cast<es2panda_AstNode*>(nodePtr);
520 return GetImpl()->IsArrayExpression(node);
521 }
KOALA_INTEROP_1(IsArrayExpression,KBoolean,KNativePointer)522 KOALA_INTEROP_1(IsArrayExpression, KBoolean, KNativePointer)
523
524 inline KUInt unpackUInt(const KByte* bytes)
525 {
526 const KUInt BYTE_0 = 0;
527 const KUInt BYTE_1 = 1;
528 const KUInt BYTE_2 = 2;
529 const KUInt BYTE_3 = 3;
530
531 const KUInt BYTE_1_SHIFT = 8;
532 const KUInt BYTE_2_SHIFT = 16;
533 const KUInt BYTE_3_SHIFT = 24;
534 return (bytes[BYTE_0] | (bytes[BYTE_1] << BYTE_1_SHIFT)
535 | (bytes[BYTE_2] << BYTE_2_SHIFT) | (bytes[BYTE_3] << BYTE_3_SHIFT)
536 );
537 }
538