• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, &params_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, &params_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