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
16 #include "convertors-napi.h"
17 #include "lsp/include/api.h"
18 #include "lsp/include/completions.h"
19 #include "common.h"
20 #include "panda_types.h"
21 #include "public/es2panda_lib.h"
22 #include "lsp/include/refactors/refactor_types.h"
23 #include <cstddef>
24 #include <cstdint>
25 #include <string>
26 #include <variant>
27
28 namespace {
29 using ark::es2panda::lsp::ClassHierarchy;
30 using ark::es2panda::lsp::ClassHierarchyInfo;
31 using ark::es2panda::lsp::ClassHierarchyItem;
32 using ark::es2panda::lsp::ClassMethodItem;
33 using ark::es2panda::lsp::ClassPropertyItem;
34 } // namespace
35
GetStringCopy(KStringPtr & ptr)36 char *GetStringCopy(KStringPtr &ptr)
37 {
38 return strdup(ptr.c_str());
39 }
40
impl_getCurrentTokenValue(KNativePointer context,KInt position)41 KNativePointer impl_getCurrentTokenValue(KNativePointer context, KInt position)
42 {
43 LSPAPI const *ctx = GetImpl();
44 return new std::string(
45 ctx->getCurrentTokenValue(reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position)));
46 }
TS_INTEROP_2(getCurrentTokenValue,KNativePointer,KNativePointer,KInt)47 TS_INTEROP_2(getCurrentTokenValue, KNativePointer, KNativePointer, KInt)
48
49 // diagnostics related
50 KNativePointer impl_getSemanticDiagnostics(KNativePointer context)
51 {
52 LSPAPI const *ctx = GetImpl();
53 auto *ptrDiag =
54 new DiagnosticReferences(ctx->getSemanticDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
55 return ptrDiag;
56 }
TS_INTEROP_1(getSemanticDiagnostics,KNativePointer,KNativePointer)57 TS_INTEROP_1(getSemanticDiagnostics, KNativePointer, KNativePointer)
58
59 KNativePointer impl_getClassPropertyInfo(KNativePointer context, KInt position, KBoolean shouldCollectInherited)
60 {
61 LSPAPI const *ctx = GetImpl();
62 auto info = ctx->getClassPropertyInfo(reinterpret_cast<es2panda_Context *>(context),
63 static_cast<std::size_t>(position), shouldCollectInherited != 0);
64 return new std::vector<FieldsInfo>(info);
65 }
TS_INTEROP_3(getClassPropertyInfo,KNativePointer,KNativePointer,KInt,KBoolean)66 TS_INTEROP_3(getClassPropertyInfo, KNativePointer, KNativePointer, KInt, KBoolean)
67
68 KNativePointer impl_getFieldsInfoFromPropertyInfo(KNativePointer infoPtr)
69 {
70 auto info = reinterpret_cast<std::vector<FieldsInfo> *>(infoPtr);
71 std::vector<void *> ptrs;
72 for (auto &el : *info) {
73 ptrs.push_back(new FieldsInfo(el));
74 }
75 return new std::vector<void *>(ptrs);
76 }
TS_INTEROP_1(getFieldsInfoFromPropertyInfo,KNativePointer,KNativePointer)77 TS_INTEROP_1(getFieldsInfoFromPropertyInfo, KNativePointer, KNativePointer)
78
79 KNativePointer impl_getNameFromPropertyInfo(KNativePointer infoPtr)
80 {
81 auto info = reinterpret_cast<FieldsInfo *>(infoPtr);
82 return new std::string(info->name);
83 }
TS_INTEROP_1(getNameFromPropertyInfo,KNativePointer,KNativePointer)84 TS_INTEROP_1(getNameFromPropertyInfo, KNativePointer, KNativePointer)
85
86 KNativePointer impl_getFieldListPropertyFromPropertyInfo(KNativePointer infoPtr)
87 {
88 auto info = reinterpret_cast<FieldsInfo *>(infoPtr);
89 std::vector<void *> ptrs;
90 for (auto &el : info->properties) {
91 ptrs.push_back(new FieldListProperty(el));
92 }
93 return new std::vector<void *>(ptrs);
94 }
TS_INTEROP_1(getFieldListPropertyFromPropertyInfo,KNativePointer,KNativePointer)95 TS_INTEROP_1(getFieldListPropertyFromPropertyInfo, KNativePointer, KNativePointer)
96
97 KNativePointer impl_getKindFromPropertyInfo(KNativePointer infoPtr)
98 {
99 auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
100 return new std::string(info->kind);
101 }
TS_INTEROP_1(getKindFromPropertyInfo,KNativePointer,KNativePointer)102 TS_INTEROP_1(getKindFromPropertyInfo, KNativePointer, KNativePointer)
103
104 KNativePointer impl_getModifierKindsFromPropertyInfo(KNativePointer infoPtr)
105 {
106 auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
107 std::vector<void *> ptrs;
108 for (auto &el : info->modifierKinds.value()) {
109 ptrs.push_back(new std::string(el));
110 }
111 return new std::vector<void *>(ptrs);
112 }
TS_INTEROP_1(getModifierKindsFromPropertyInfo,KNativePointer,KNativePointer)113 TS_INTEROP_1(getModifierKindsFromPropertyInfo, KNativePointer, KNativePointer)
114
115 KNativePointer impl_getDisplayNameFromPropertyInfo(KNativePointer infoPtr)
116 {
117 auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
118 return new std::string(info->displayName);
119 }
TS_INTEROP_1(getDisplayNameFromPropertyInfo,KNativePointer,KNativePointer)120 TS_INTEROP_1(getDisplayNameFromPropertyInfo, KNativePointer, KNativePointer)
121
122 KNativePointer impl_getStartFromPropertyInfo(KNativePointer infoPtr)
123 {
124 auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
125 return new std::size_t(info->start);
126 }
TS_INTEROP_1(getStartFromPropertyInfo,KNativePointer,KNativePointer)127 TS_INTEROP_1(getStartFromPropertyInfo, KNativePointer, KNativePointer)
128
129 KNativePointer impl_getEndFromPropertyInfo(KNativePointer infoPtr)
130 {
131 auto info = reinterpret_cast<FieldListProperty *>(infoPtr);
132 return new std::size_t(info->end);
133 }
TS_INTEROP_1(getEndFromPropertyInfo,KNativePointer,KNativePointer)134 TS_INTEROP_1(getEndFromPropertyInfo, KNativePointer, KNativePointer)
135
136 KNativePointer impl_getSyntacticDiagnostics(KNativePointer context)
137 {
138 LSPAPI const *ctx = GetImpl();
139 auto *ptrDiag =
140 new DiagnosticReferences(ctx->getSyntacticDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
141 return ptrDiag;
142 }
TS_INTEROP_1(getSyntacticDiagnostics,KNativePointer,KNativePointer)143 TS_INTEROP_1(getSyntacticDiagnostics, KNativePointer, KNativePointer)
144
145 KNativePointer impl_getDiags(KNativePointer diagRefsPtr)
146 {
147 auto *diagRefs = reinterpret_cast<DiagnosticReferences *>(diagRefsPtr);
148 std::vector<void *> ptrs;
149 for (auto &el : diagRefs->diagnostic) {
150 ptrs.push_back(new Diagnostic(el));
151 }
152 return new std::vector<void *>(ptrs);
153 }
TS_INTEROP_1(getDiags,KNativePointer,KNativePointer)154 TS_INTEROP_1(getDiags, KNativePointer, KNativePointer)
155
156 KNativePointer impl_getDiagMsg(KNativePointer diagRefPtr)
157 {
158 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
159 return new std::string(diagRef->message_);
160 }
TS_INTEROP_1(getDiagMsg,KNativePointer,KNativePointer)161 TS_INTEROP_1(getDiagMsg, KNativePointer, KNativePointer)
162
163 KNativePointer impl_getDiagRange(KNativePointer diagRefPtr)
164 {
165 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
166 return &diagRef->range_;
167 }
TS_INTEROP_1(getDiagRange,KNativePointer,KNativePointer)168 TS_INTEROP_1(getDiagRange, KNativePointer, KNativePointer)
169
170 KNativePointer impl_getRangeEnd(KNativePointer rangePtr)
171 {
172 auto *range = reinterpret_cast<Range *>(rangePtr);
173 return &range->end;
174 }
TS_INTEROP_1(getRangeEnd,KNativePointer,KNativePointer)175 TS_INTEROP_1(getRangeEnd, KNativePointer, KNativePointer)
176
177 KNativePointer impl_getRangeStart(KNativePointer rangePtr)
178 {
179 auto *range = reinterpret_cast<Range *>(rangePtr);
180 return &range->start;
181 }
TS_INTEROP_1(getRangeStart,KNativePointer,KNativePointer)182 TS_INTEROP_1(getRangeStart, KNativePointer, KNativePointer)
183
184 KInt impl_getPosLine(KNativePointer posPtr)
185 {
186 auto *pos = reinterpret_cast<Position *>(posPtr);
187 return pos->line_;
188 }
TS_INTEROP_1(getPosLine,KInt,KNativePointer)189 TS_INTEROP_1(getPosLine, KInt, KNativePointer)
190
191 KInt impl_getPosChar(KNativePointer posPtr)
192 {
193 auto *pos = reinterpret_cast<Position *>(posPtr);
194 return pos->character_;
195 }
TS_INTEROP_1(getPosChar,KInt,KNativePointer)196 TS_INTEROP_1(getPosChar, KInt, KNativePointer)
197
198 KInt impl_getDiagSeverity(KNativePointer diagRefPtr)
199 {
200 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
201 return static_cast<size_t>(diagRef->severity_);
202 }
TS_INTEROP_1(getDiagSeverity,KInt,KNativePointer)203 TS_INTEROP_1(getDiagSeverity, KInt, KNativePointer)
204
205 KNativePointer impl_getDiagCode(KNativePointer diagRefPtr)
206 {
207 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
208 return &diagRef->code_;
209 }
TS_INTEROP_1(getDiagCode,KNativePointer,KNativePointer)210 TS_INTEROP_1(getDiagCode, KNativePointer, KNativePointer)
211
212 KNativePointer impl_getDiagCodeDescription(KNativePointer diagRefPtr)
213 {
214 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
215 return &diagRef->codeDescription_;
216 }
TS_INTEROP_1(getDiagCodeDescription,KNativePointer,KNativePointer)217 TS_INTEROP_1(getDiagCodeDescription, KNativePointer, KNativePointer)
218
219 KNativePointer impl_getCodeDescriptionHref(KNativePointer codeDescrRefPtr)
220 {
221 auto *codeDescrRef = reinterpret_cast<CodeDescription *>(codeDescrRefPtr);
222 return new std::string(codeDescrRef->href_);
223 }
TS_INTEROP_1(getCodeDescriptionHref,KNativePointer,KNativePointer)224 TS_INTEROP_1(getCodeDescriptionHref, KNativePointer, KNativePointer)
225
226 KNativePointer impl_getDiagTags(KNativePointer diagRefPtr)
227 {
228 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
229 std::vector<void *> ptrs;
230 for (auto el : diagRef->tags_) {
231 auto castedEl = static_cast<size_t>(el);
232 ptrs.push_back(&castedEl);
233 }
234 return new std::vector<void *>(ptrs);
235 }
TS_INTEROP_1(getDiagTags,KNativePointer,KNativePointer)236 TS_INTEROP_1(getDiagTags, KNativePointer, KNativePointer)
237
238 KNativePointer impl_getDiagData(KNativePointer diagRefPtr)
239 {
240 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
241 return &diagRef->data_;
242 }
TS_INTEROP_1(getDiagData,KNativePointer,KNativePointer)243 TS_INTEROP_1(getDiagData, KNativePointer, KNativePointer)
244
245 KNativePointer impl_getDiagRelatedInfo(KNativePointer diagRefPtr)
246 {
247 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
248 std::vector<void *> ptrs;
249 for (auto el : diagRef->relatedInformation_) {
250 ptrs.push_back(&el);
251 }
252 return new std::vector<void *>(ptrs);
253 }
TS_INTEROP_1(getDiagRelatedInfo,KNativePointer,KNativePointer)254 TS_INTEROP_1(getDiagRelatedInfo, KNativePointer, KNativePointer)
255
256 KNativePointer impl_getRelatedInfoMsg(KNativePointer relatedInfoPtr)
257 {
258 auto *relatedInfoRef = reinterpret_cast<DiagnosticRelatedInformation *>(relatedInfoPtr);
259 return &relatedInfoRef->message_;
260 }
TS_INTEROP_1(getRelatedInfoMsg,KNativePointer,KNativePointer)261 TS_INTEROP_1(getRelatedInfoMsg, KNativePointer, KNativePointer)
262
263 KNativePointer impl_getRelatedInfoLoc(KNativePointer relatedInfoPtr)
264 {
265 auto *relatedInfoRef = reinterpret_cast<DiagnosticRelatedInformation *>(relatedInfoPtr);
266 return &relatedInfoRef->location_;
267 }
TS_INTEROP_1(getRelatedInfoLoc,KNativePointer,KNativePointer)268 TS_INTEROP_1(getRelatedInfoLoc, KNativePointer, KNativePointer)
269
270 KNativePointer impl_getLocUri(KNativePointer locPtr)
271 {
272 auto *locRef = reinterpret_cast<Location *>(locPtr);
273 return &locRef->uri_;
274 }
TS_INTEROP_1(getLocUri,KNativePointer,KNativePointer)275 TS_INTEROP_1(getLocUri, KNativePointer, KNativePointer)
276
277 KNativePointer impl_getLocRange(KNativePointer locPtr)
278 {
279 auto *locRef = reinterpret_cast<Location *>(locPtr);
280 return &locRef->range_;
281 }
TS_INTEROP_1(getLocRange,KNativePointer,KNativePointer)282 TS_INTEROP_1(getLocRange, KNativePointer, KNativePointer)
283
284 KNativePointer impl_getDiagSource(KNativePointer diagRefPtr)
285 {
286 auto *diagRef = reinterpret_cast<Diagnostic *>(diagRefPtr);
287 return new std::string(diagRef->source_);
288 }
TS_INTEROP_1(getDiagSource,KNativePointer,KNativePointer)289 TS_INTEROP_1(getDiagSource, KNativePointer, KNativePointer)
290
291 KBoolean impl_isPackageModule(KNativePointer context)
292 {
293 LSPAPI const *ctx = GetImpl();
294 return static_cast<KBoolean>(ctx->isPackageModule(reinterpret_cast<es2panda_Context *>(context)));
295 }
TS_INTEROP_1(isPackageModule,KBoolean,KNativePointer)296 TS_INTEROP_1(isPackageModule, KBoolean, KNativePointer)
297
298 KNativePointer impl_getFileReferences(KStringPtr &filenamePtr, KNativePointer context, KBoolean isPackageModule)
299 {
300 LSPAPI const *ctx = GetImpl();
301 auto *ref = new References(ctx->getFileReferences(
302 GetStringCopy(filenamePtr), reinterpret_cast<es2panda_Context *>(context), isPackageModule != 0));
303 return ref;
304 }
TS_INTEROP_3(getFileReferences,KNativePointer,KStringPtr,KNativePointer,KBoolean)305 TS_INTEROP_3(getFileReferences, KNativePointer, KStringPtr, KNativePointer, KBoolean)
306
307 KNativePointer impl_getDeclInfo(KNativePointer context, KInt position)
308 {
309 LSPAPI const *ctx = GetImpl();
310 auto *declInfo = new DeclInfo(
311 ctx->getDeclInfo(reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position)));
312 return declInfo;
313 }
TS_INTEROP_2(getDeclInfo,KNativePointer,KNativePointer,KInt)314 TS_INTEROP_2(getDeclInfo, KNativePointer, KNativePointer, KInt)
315
316 KNativePointer impl_getClassConstructorInfo(KNativePointer context, KInt position, KStringArray strArrayPtr)
317 {
318 std::vector<std::string> properties;
319 for (const auto &el : MakeStringVector(strArrayPtr)) {
320 properties.emplace_back(GetStringCopy(const_cast<KStringPtr &>(el)));
321 }
322 LSPAPI const *ctx = GetImpl();
323 auto *info = new ark::es2panda::lsp::RefactorEditInfo(ctx->getClassConstructorInfo(
324 reinterpret_cast<es2panda_Context *>(context), static_cast<std::size_t>(position), properties));
325 return info;
326 }
TS_INTEROP_3(getClassConstructorInfo,KNativePointer,KNativePointer,KInt,KStringArray)327 TS_INTEROP_3(getClassConstructorInfo, KNativePointer, KNativePointer, KInt, KStringArray)
328
329 KNativePointer impl_getFileTextChangesFromConstructorInfo(KNativePointer infoPtr)
330 {
331 auto *info = reinterpret_cast<ark::es2panda::lsp::RefactorEditInfo *>(infoPtr);
332 std::vector<void *> ptrs;
333 for (auto &el : info->GetFileTextChanges()) {
334 ptrs.push_back(new FileTextChanges(el));
335 }
336 return new std::vector<void *>(ptrs);
337 }
TS_INTEROP_1(getFileTextChangesFromConstructorInfo,KNativePointer,KNativePointer)338 TS_INTEROP_1(getFileTextChangesFromConstructorInfo, KNativePointer, KNativePointer)
339
340 KNativePointer impl_getFileNameFromConstructorInfo(KNativePointer infoPtr)
341 {
342 auto *info = reinterpret_cast<FileTextChanges *>(infoPtr);
343 return new std::string(info->fileName);
344 }
TS_INTEROP_1(getFileNameFromConstructorInfo,KNativePointer,KNativePointer)345 TS_INTEROP_1(getFileNameFromConstructorInfo, KNativePointer, KNativePointer)
346
347 KNativePointer impl_getTextChangeFromConstructorInfo(KNativePointer infoPtr)
348 {
349 auto *info = reinterpret_cast<FileTextChanges *>(infoPtr);
350 std::vector<void *> ptrs;
351 for (auto &el : info->textChanges) {
352 ptrs.push_back(new TextChange(el));
353 }
354 return new std::vector<void *>(ptrs);
355 }
TS_INTEROP_1(getTextChangeFromConstructorInfo,KNativePointer,KNativePointer)356 TS_INTEROP_1(getTextChangeFromConstructorInfo, KNativePointer, KNativePointer)
357
358 KNativePointer impl_getNewTextFromConstructorInfo(KNativePointer infoPtr)
359 {
360 auto *info = reinterpret_cast<TextChange *>(infoPtr);
361 return new std::string(info->newText);
362 }
TS_INTEROP_1(getNewTextFromConstructorInfo,KNativePointer,KNativePointer)363 TS_INTEROP_1(getNewTextFromConstructorInfo, KNativePointer, KNativePointer)
364
365 KNativePointer impl_getTextSpanFromConstructorInfo(KNativePointer infoPtr)
366 {
367 auto *info = reinterpret_cast<TextChange *>(infoPtr);
368 return new TextSpan(info->span);
369 }
TS_INTEROP_1(getTextSpanFromConstructorInfo,KNativePointer,KNativePointer)370 TS_INTEROP_1(getTextSpanFromConstructorInfo, KNativePointer, KNativePointer)
371
372 KNativePointer impl_getCompletionEntryDetailsSymbolDisplayPart(KNativePointer completionEntryDetailsPtr)
373 {
374 auto *completionEntryDetails = reinterpret_cast<CompletionEntryDetails *>(completionEntryDetailsPtr);
375 std::vector<void *> ptrs;
376 for (auto &el : completionEntryDetails->GetDisplayParts()) {
377 ptrs.push_back(new SymbolDisplayPart(el));
378 }
379 return new std::vector<void *>(ptrs);
380 }
TS_INTEROP_1(getCompletionEntryDetailsSymbolDisplayPart,KNativePointer,KNativePointer)381 TS_INTEROP_1(getCompletionEntryDetailsSymbolDisplayPart, KNativePointer, KNativePointer)
382
383 KNativePointer impl_getCompletionEntryDetailsKind(KNativePointer completionEntryDetailsPtr)
384 {
385 auto *completionEntryDetails = reinterpret_cast<CompletionEntryDetails *>(completionEntryDetailsPtr);
386 return new std::string(completionEntryDetails->GetKind());
387 }
TS_INTEROP_1(getCompletionEntryDetailsKind,KNativePointer,KNativePointer)388 TS_INTEROP_1(getCompletionEntryDetailsKind, KNativePointer, KNativePointer)
389
390 KNativePointer impl_getCompletionEntryDetailsKindModifier(KNativePointer ref)
391 {
392 auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
393 return new std::string(refPtr->GetKindModifiers());
394 }
TS_INTEROP_1(getCompletionEntryDetailsKindModifier,KNativePointer,KNativePointer)395 TS_INTEROP_1(getCompletionEntryDetailsKindModifier, KNativePointer, KNativePointer)
396
397 KNativePointer impl_getCompletionEntryDetailsFileName(KNativePointer ref)
398 {
399 auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
400 return new std::string(refPtr->GetFileName());
401 }
TS_INTEROP_1(getCompletionEntryDetailsFileName,KNativePointer,KNativePointer)402 TS_INTEROP_1(getCompletionEntryDetailsFileName, KNativePointer, KNativePointer)
403
404 KNativePointer impl_getCompletionEntryDetailsEntryName(KNativePointer ref)
405 {
406 auto *refPtr = reinterpret_cast<CompletionEntryDetails *>(ref);
407 return new std::string(refPtr->GetName());
408 }
TS_INTEROP_1(getCompletionEntryDetailsEntryName,KNativePointer,KNativePointer)409 TS_INTEROP_1(getCompletionEntryDetailsEntryName, KNativePointer, KNativePointer)
410
411 KNativePointer impl_findSafeDeleteLocation(KNativePointer context, KNativePointer declInfo)
412 {
413 LSPAPI const *ctx = GetImpl();
414 auto *result = new std::vector<SafeDeleteLocation>(
415 ctx->FindSafeDeleteLocation(reinterpret_cast<es2panda_Context *>(context),
416 reinterpret_cast<std::tuple<std::string, std::string> *>(declInfo)));
417 return result;
418 }
TS_INTEROP_2(findSafeDeleteLocation,KNativePointer,KNativePointer,KNativePointer)419 TS_INTEROP_2(findSafeDeleteLocation, KNativePointer, KNativePointer, KNativePointer)
420
421 KNativePointer impl_getSafeDeleteLocations(KNativePointer safeDeleteLocationsPtr)
422 {
423 auto *locations = reinterpret_cast<std::vector<SafeDeleteLocation> *>(safeDeleteLocationsPtr);
424 std::vector<void *> ptrs;
425 for (auto &loc : *locations) {
426 ptrs.push_back(new SafeDeleteLocation(loc));
427 }
428 return new std::vector<void *>(ptrs);
429 }
TS_INTEROP_1(getSafeDeleteLocations,KNativePointer,KNativePointer)430 TS_INTEROP_1(getSafeDeleteLocations, KNativePointer, KNativePointer)
431
432 KNativePointer impl_getSafeDeleteLocationUri(KNativePointer locationPtr)
433 {
434 auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
435 return new std::string(location->uri);
436 }
TS_INTEROP_1(getSafeDeleteLocationUri,KNativePointer,KNativePointer)437 TS_INTEROP_1(getSafeDeleteLocationUri, KNativePointer, KNativePointer)
438
439 KInt impl_getSafeDeleteLocationStart(KNativePointer locationPtr)
440 {
441 auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
442 return static_cast<KInt>(location->start);
443 }
TS_INTEROP_1(getSafeDeleteLocationStart,KInt,KNativePointer)444 TS_INTEROP_1(getSafeDeleteLocationStart, KInt, KNativePointer)
445
446 KInt impl_getSafeDeleteLocationLength(KNativePointer locationPtr)
447 {
448 auto *location = reinterpret_cast<SafeDeleteLocation *>(locationPtr);
449 return static_cast<KInt>(location->length);
450 }
TS_INTEROP_1(getSafeDeleteLocationLength,KInt,KNativePointer)451 TS_INTEROP_1(getSafeDeleteLocationLength, KInt, KNativePointer)
452
453 KNativePointer impl_getReferencesAtPosition(KNativePointer context, KNativePointer declInfo)
454 {
455 LSPAPI const *ctx = GetImpl();
456 auto *ref = new References(ctx->getReferencesAtPosition(reinterpret_cast<es2panda_Context *>(context),
457 reinterpret_cast<DeclInfo *>(declInfo)));
458 return ref;
459 }
TS_INTEROP_2(getReferencesAtPosition,KNativePointer,KNativePointer,KNativePointer)460 TS_INTEROP_2(getReferencesAtPosition, KNativePointer, KNativePointer, KNativePointer)
461
462 KNativePointer impl_getReferenceInfos(KNativePointer refs)
463 {
464 auto *refsPtr = reinterpret_cast<References *>(refs);
465 std::vector<void *> ptrs;
466 for (auto &el : refsPtr->referenceInfos) {
467 ptrs.push_back(new ReferenceInfo(el));
468 }
469 return new std::vector<void *>(ptrs);
470 }
TS_INTEROP_1(getReferenceInfos,KNativePointer,KNativePointer)471 TS_INTEROP_1(getReferenceInfos, KNativePointer, KNativePointer)
472
473 KInt impl_getReferenceStart(KNativePointer ref)
474 {
475 auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
476 return refPtr->start;
477 }
TS_INTEROP_1(getReferenceStart,KInt,KNativePointer)478 TS_INTEROP_1(getReferenceStart, KInt, KNativePointer)
479
480 KInt impl_getReferenceLength(KNativePointer ref)
481 {
482 auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
483 return refPtr->length;
484 }
TS_INTEROP_1(getReferenceLength,KInt,KNativePointer)485 TS_INTEROP_1(getReferenceLength, KInt, KNativePointer)
486
487 KNativePointer impl_getReferenceFileName(KNativePointer ref)
488 {
489 auto *refPtr = reinterpret_cast<ReferenceInfo *>(ref);
490 return new std::string(refPtr->fileName);
491 }
TS_INTEROP_1(getReferenceFileName,KNativePointer,KNativePointer)492 TS_INTEROP_1(getReferenceFileName, KNativePointer, KNativePointer)
493
494 KNativePointer impl_getDeclInfoFileName(KNativePointer declInfo)
495 {
496 auto *declInfoPtr = reinterpret_cast<DeclInfo *>(declInfo);
497 return new std::string(declInfoPtr->fileName);
498 }
TS_INTEROP_1(getDeclInfoFileName,KNativePointer,KNativePointer)499 TS_INTEROP_1(getDeclInfoFileName, KNativePointer, KNativePointer)
500
501 KNativePointer impl_getDeclInfoFileText(KNativePointer declInfo)
502 {
503 auto *declInfoPtr = reinterpret_cast<DeclInfo *>(declInfo);
504 return new std::string(declInfoPtr->fileText);
505 }
TS_INTEROP_1(getDeclInfoFileText,KNativePointer,KNativePointer)506 TS_INTEROP_1(getDeclInfoFileText, KNativePointer, KNativePointer)
507
508 KNativePointer impl_getQuickInfoAtPosition(KStringPtr &filenamePtr, KNativePointer context, KInt position)
509 {
510 LSPAPI const *ctx = GetImpl();
511 auto *qi = new QuickInfo(ctx->getQuickInfoAtPosition(GetStringCopy(filenamePtr),
512 reinterpret_cast<es2panda_Context *>(context), position));
513 return qi;
514 }
TS_INTEROP_3(getQuickInfoAtPosition,KNativePointer,KStringPtr,KNativePointer,KInt)515 TS_INTEROP_3(getQuickInfoAtPosition, KNativePointer, KStringPtr, KNativePointer, KInt)
516
517 KNativePointer impl_getCompletionAtPosition(KNativePointer context, KInt position)
518 {
519 LSPAPI const *ctx = GetImpl();
520 auto *ci = new ark::es2panda::lsp::CompletionInfo(
521 ctx->getCompletionsAtPosition(reinterpret_cast<es2panda_Context *>(context), position));
522 return ci;
523 }
TS_INTEROP_2(getCompletionAtPosition,KNativePointer,KNativePointer,KInt)524 TS_INTEROP_2(getCompletionAtPosition, KNativePointer, KNativePointer, KInt)
525
526 KNativePointer impl_organizeImports(KNativePointer context, KStringPtr &filenamePtr)
527 {
528 LSPAPI const *ctx = GetImpl();
529 auto result = ctx->OrganizeImportsImpl(reinterpret_cast<es2panda_Context *>(context), GetStringCopy(filenamePtr));
530 return new std::vector<FileTextChanges>(result);
531 }
TS_INTEROP_2(organizeImports,KNativePointer,KNativePointer,KStringPtr)532 TS_INTEROP_2(organizeImports, KNativePointer, KNativePointer, KStringPtr)
533
534 KNativePointer impl_getFileTextChanges(KNativePointer fileTextChangesVecPtr)
535 {
536 auto *vec = reinterpret_cast<std::vector<FileTextChanges> *>(fileTextChangesVecPtr);
537 std::vector<void *> ptrs;
538 for (auto &el : *vec) {
539 ptrs.push_back(new FileTextChanges(el));
540 }
541 return new std::vector<void *>(ptrs);
542 }
TS_INTEROP_1(getFileTextChanges,KNativePointer,KNativePointer)543 TS_INTEROP_1(getFileTextChanges, KNativePointer, KNativePointer)
544
545 KNativePointer impl_getFileNameFromFileTextChanges(KNativePointer fileTextChangesPtr)
546 {
547 auto *ftc = reinterpret_cast<FileTextChanges *>(fileTextChangesPtr);
548 return new std::string(ftc->fileName);
549 }
TS_INTEROP_1(getFileNameFromFileTextChanges,KNativePointer,KNativePointer)550 TS_INTEROP_1(getFileNameFromFileTextChanges, KNativePointer, KNativePointer)
551
552 KNativePointer impl_getTextChangesFromFileTextChanges(KNativePointer fileTextChangesPtr)
553 {
554 auto *ftc = reinterpret_cast<FileTextChanges *>(fileTextChangesPtr);
555 std::vector<void *> ptrs;
556 for (auto &el : ftc->textChanges) {
557 ptrs.push_back(new TextChange(el));
558 }
559 return new std::vector<void *>(ptrs);
560 }
TS_INTEROP_1(getTextChangesFromFileTextChanges,KNativePointer,KNativePointer)561 TS_INTEROP_1(getTextChangesFromFileTextChanges, KNativePointer, KNativePointer)
562
563 KNativePointer impl_getTextSpanFromTextChange(KNativePointer textChangePtr)
564 {
565 auto *tc = reinterpret_cast<TextChange *>(textChangePtr);
566 return new TextSpan(tc->span);
567 }
TS_INTEROP_1(getTextSpanFromTextChange,KNativePointer,KNativePointer)568 TS_INTEROP_1(getTextSpanFromTextChange, KNativePointer, KNativePointer)
569
570 KNativePointer impl_getNewTextFromTextChange(KNativePointer textChangePtr)
571 {
572 auto *tc = reinterpret_cast<TextChange *>(textChangePtr);
573 return new std::string(tc->newText);
574 }
TS_INTEROP_1(getNewTextFromTextChange,KNativePointer,KNativePointer)575 TS_INTEROP_1(getNewTextFromTextChange, KNativePointer, KNativePointer)
576
577 KNativePointer impl_getCompletionEntryDetails(KStringPtr &entrynamePtr, KStringPtr &filenamePtr, KNativePointer context,
578 KInt position)
579 {
580 LSPAPI const *ctx = GetImpl();
581 auto *ci = new CompletionEntryDetails(
582 ctx->getCompletionEntryDetails(GetStringCopy(entrynamePtr), GetStringCopy(filenamePtr),
583 reinterpret_cast<es2panda_Context *>(context), position));
584 return ci;
585 }
TS_INTEROP_4(getCompletionEntryDetails,KNativePointer,KStringPtr,KStringPtr,KNativePointer,KInt)586 TS_INTEROP_4(getCompletionEntryDetails, KNativePointer, KStringPtr, KStringPtr, KNativePointer, KInt)
587
588 KNativePointer impl_getImplementationAtPosition(KNativePointer context, KInt position)
589 {
590 LSPAPI const *ctx = GetImpl();
591 auto *defInfo = new DefinitionInfo(ctx->getImplementationAtPosition(reinterpret_cast<es2panda_Context *>(context),
592 static_cast<std::size_t>(position)));
593 return defInfo;
594 }
TS_INTEROP_2(getImplementationAtPosition,KNativePointer,KNativePointer,KInt)595 TS_INTEROP_2(getImplementationAtPosition, KNativePointer, KNativePointer, KInt)
596
597 KNativePointer impl_getDefinitionAtPosition(KNativePointer context, KInt position)
598 {
599 LSPAPI const *ctx = GetImpl();
600 auto *defInfo = new DefinitionInfo(ctx->getDefinitionAtPosition(reinterpret_cast<es2panda_Context *>(context),
601 static_cast<std::size_t>(position)));
602 return defInfo;
603 }
TS_INTEROP_2(getDefinitionAtPosition,KNativePointer,KNativePointer,KInt)604 TS_INTEROP_2(getDefinitionAtPosition, KNativePointer, KNativePointer, KInt)
605
606 KNativePointer impl_getFileNameFromDef(KNativePointer defPtr)
607 {
608 auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
609 return new std::string(defInfo->fileName);
610 }
TS_INTEROP_1(getFileNameFromDef,KNativePointer,KNativePointer)611 TS_INTEROP_1(getFileNameFromDef, KNativePointer, KNativePointer)
612
613 KInt impl_getStartFromDef(KNativePointer defPtr)
614 {
615 auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
616 return defInfo->start;
617 }
TS_INTEROP_1(getStartFromDef,KInt,KNativePointer)618 TS_INTEROP_1(getStartFromDef, KInt, KNativePointer)
619
620 KInt impl_getLengthFromDef(KNativePointer defPtr)
621 {
622 auto *defInfo = reinterpret_cast<DefinitionInfo *>(defPtr);
623 return defInfo->length;
624 }
TS_INTEROP_1(getLengthFromDef,KInt,KNativePointer)625 TS_INTEROP_1(getLengthFromDef, KInt, KNativePointer)
626
627 KNativePointer impl_getDocumentHighlights(KNativePointer context, KInt pos)
628 {
629 LSPAPI const *ctx = GetImpl();
630 auto *docs = new DocumentHighlightsReferences(
631 ctx->getDocumentHighlights(reinterpret_cast<es2panda_Context *>(context), pos));
632 return docs;
633 }
TS_INTEROP_2(getDocumentHighlights,KNativePointer,KNativePointer,KInt)634 TS_INTEROP_2(getDocumentHighlights, KNativePointer, KNativePointer, KInt)
635
636 KNativePointer impl_getDocumentHighs(KNativePointer doc)
637 {
638 auto *dhr = reinterpret_cast<DocumentHighlightsReferences *>(doc);
639 std::vector<void *> ptrs;
640 for (auto &el : dhr->documentHighlights_) {
641 ptrs.push_back(new DocumentHighlights(el));
642 }
643 return new std::vector<void *>(ptrs);
644 }
TS_INTEROP_1(getDocumentHighs,KNativePointer,KNativePointer)645 TS_INTEROP_1(getDocumentHighs, KNativePointer, KNativePointer)
646
647 KNativePointer impl_getSuggestionDiagnostics(KNativePointer context)
648 {
649 LSPAPI const *ctx = GetImpl();
650 auto *ptrDiag =
651 new DiagnosticReferences(ctx->getSuggestionDiagnostics(reinterpret_cast<es2panda_Context *>(context)));
652 return ptrDiag;
653 }
TS_INTEROP_1(getSuggestionDiagnostics,KNativePointer,KNativePointer)654 TS_INTEROP_1(getSuggestionDiagnostics, KNativePointer, KNativePointer)
655
656 KNativePointer impl_getDisplayPartsText(KNativePointer ref)
657 {
658 auto *refPtr = reinterpret_cast<SymbolDisplayPart *>(ref);
659 return new std::string(refPtr->GetText());
660 }
TS_INTEROP_1(getDisplayPartsText,KNativePointer,KNativePointer)661 TS_INTEROP_1(getDisplayPartsText, KNativePointer, KNativePointer)
662
663 KNativePointer impl_getDisplayPartsKind(KNativePointer ref)
664 {
665 auto *refPtr = reinterpret_cast<SymbolDisplayPart *>(ref);
666 return new std::string(refPtr->GetKind());
667 }
TS_INTEROP_1(getDisplayPartsKind,KNativePointer,KNativePointer)668 TS_INTEROP_1(getDisplayPartsKind, KNativePointer, KNativePointer)
669
670 KNativePointer impl_getQuickInfoKind(KNativePointer quickInfoPtr)
671 {
672 auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
673 return new std::string(quickInfo->GetKind());
674 }
TS_INTEROP_1(getQuickInfoKind,KNativePointer,KNativePointer)675 TS_INTEROP_1(getQuickInfoKind, KNativePointer, KNativePointer)
676
677 KNativePointer impl_getQuickInfoKindModifier(KNativePointer ref)
678 {
679 auto *refPtr = reinterpret_cast<QuickInfo *>(ref);
680 return new std::string(refPtr->GetKindModifiers());
681 }
TS_INTEROP_1(getQuickInfoKindModifier,KNativePointer,KNativePointer)682 TS_INTEROP_1(getQuickInfoKindModifier, KNativePointer, KNativePointer)
683
684 KNativePointer impl_getQuickInfoFileName(KNativePointer ref)
685 {
686 auto *refPtr = reinterpret_cast<QuickInfo *>(ref);
687 return new std::string(refPtr->GetFileName());
688 }
TS_INTEROP_1(getQuickInfoFileName,KNativePointer,KNativePointer)689 TS_INTEROP_1(getQuickInfoFileName, KNativePointer, KNativePointer)
690
691 KNativePointer impl_getClassHierarchyInfo(KNativePointer context, KInt position)
692 {
693 LSPAPI const *ctx = GetImpl();
694 if (ctx == nullptr) {
695 return nullptr;
696 }
697 auto *classHierarchyPtr =
698 new ClassHierarchy(ctx->getClassHierarchyInfo(reinterpret_cast<es2panda_Context *>(context), position));
699 return classHierarchyPtr;
700 }
TS_INTEROP_2(getClassHierarchyInfo,KNativePointer,KNativePointer,KInt)701 TS_INTEROP_2(getClassHierarchyInfo, KNativePointer, KNativePointer, KInt)
702
703 KNativePointer impl_castToClassHierarchyInfos(KNativePointer infos)
704 {
705 auto *infosPtr = reinterpret_cast<ClassHierarchy *>(infos);
706 if (infosPtr == nullptr) {
707 return nullptr;
708 }
709 std::vector<void *> ptrs;
710 for (const auto &element : *infosPtr) {
711 ptrs.push_back(new ClassHierarchyInfo(element));
712 }
713 return new std::vector<void *>(ptrs);
714 }
TS_INTEROP_1(castToClassHierarchyInfos,KNativePointer,KNativePointer)715 TS_INTEROP_1(castToClassHierarchyInfos, KNativePointer, KNativePointer)
716
717 KNativePointer impl_getClassNameFromClassHierarchyInfo(KNativePointer info)
718 {
719 auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
720 if (infoPtr == nullptr) {
721 return nullptr;
722 }
723 return new std::string(infoPtr->GetClassName());
724 }
TS_INTEROP_1(getClassNameFromClassHierarchyInfo,KNativePointer,KNativePointer)725 TS_INTEROP_1(getClassNameFromClassHierarchyInfo, KNativePointer, KNativePointer)
726
727 KNativePointer impl_getMethodItemsFromClassHierarchyInfo(KNativePointer info)
728 {
729 auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
730 if (infoPtr == nullptr) {
731 return nullptr;
732 }
733 std::vector<void *> ptrs;
734 for (const auto &element : infoPtr->GetMethodItemList()) {
735 if (element.second == nullptr) {
736 continue;
737 }
738 ptrs.push_back(new ClassMethodItem(*(element.second)));
739 }
740 return new std::vector<void *>(ptrs);
741 }
TS_INTEROP_1(getMethodItemsFromClassHierarchyInfo,KNativePointer,KNativePointer)742 TS_INTEROP_1(getMethodItemsFromClassHierarchyInfo, KNativePointer, KNativePointer)
743
744 KNativePointer impl_getPropertyItemsFromClassHierarchyInfo(KNativePointer info)
745 {
746 auto *infoPtr = reinterpret_cast<ClassHierarchyInfo *>(info);
747 if (infoPtr == nullptr) {
748 return nullptr;
749 }
750 std::vector<void *> ptrs;
751 for (const auto &element : infoPtr->GetPropertyItemList()) {
752 if (element.second == nullptr) {
753 continue;
754 }
755 ptrs.push_back(new ClassPropertyItem(*(element.second)));
756 }
757 return new std::vector<void *>(ptrs);
758 }
TS_INTEROP_1(getPropertyItemsFromClassHierarchyInfo,KNativePointer,KNativePointer)759 TS_INTEROP_1(getPropertyItemsFromClassHierarchyInfo, KNativePointer, KNativePointer)
760
761 KNativePointer impl_getDetailFromClassHierarchyItem(KNativePointer item)
762 {
763 auto *itemPtr = reinterpret_cast<ClassHierarchyItem *>(item);
764 if (itemPtr == nullptr) {
765 return nullptr;
766 }
767 return new std::string(itemPtr->GetDetail());
768 }
TS_INTEROP_1(getDetailFromClassHierarchyItem,KNativePointer,KNativePointer)769 TS_INTEROP_1(getDetailFromClassHierarchyItem, KNativePointer, KNativePointer)
770
771 KInt impl_getSetterStyleFromClassMethodItem(KNativePointer item)
772 {
773 auto *itemPtr = reinterpret_cast<ClassMethodItem *>(item);
774 if (itemPtr == nullptr) {
775 return 0;
776 }
777 return static_cast<size_t>(itemPtr->GetSetterStyle());
778 }
TS_INTEROP_1(getSetterStyleFromClassMethodItem,KInt,KNativePointer)779 TS_INTEROP_1(getSetterStyleFromClassMethodItem, KInt, KNativePointer)
780
781 KInt impl_getAccessModifierStyleFromClassHierarchyItem(KNativePointer item)
782 {
783 auto *itemPtr = reinterpret_cast<ClassHierarchyItem *>(item);
784 if (itemPtr == nullptr) {
785 return 0;
786 }
787 return static_cast<size_t>(itemPtr->GetAccessModifierStyle());
788 }
TS_INTEROP_1(getAccessModifierStyleFromClassHierarchyItem,KInt,KNativePointer)789 TS_INTEROP_1(getAccessModifierStyleFromClassHierarchyItem, KInt, KNativePointer)
790
791 KInt impl_getAliasScriptElementKind(KNativePointer context, KInt position)
792 {
793 LSPAPI const *ctx = GetImpl();
794 if (ctx == nullptr) {
795 return 1;
796 }
797 auto kind =
798 static_cast<KInt>(ctx->getAliasScriptElementKind(reinterpret_cast<es2panda_Context *>(context), position));
799 return kind;
800 }
TS_INTEROP_2(getAliasScriptElementKind,KInt,KNativePointer,KInt)801 TS_INTEROP_2(getAliasScriptElementKind, KInt, KNativePointer, KInt)
802
803 KNativePointer impl_getClassHierarchies(KNativePointer context, KStringPtr &fileNamePtr, KInt pos)
804 {
805 LSPAPI const *ctx = GetImpl();
806 if (ctx == nullptr) {
807 return nullptr;
808 }
809 auto infos =
810 ctx->getClassHierarchiesImpl(reinterpret_cast<es2panda_Context *>(context), GetStringCopy(fileNamePtr), pos);
811 std::vector<void *> ptrs;
812 ptrs.reserve(infos.size());
813 for (auto &info : infos) {
814 ptrs.push_back(new ark::es2panda::lsp::ClassHierarchyItemInfo(info));
815 }
816 return new std::vector<void *>(std::move(ptrs));
817 }
TS_INTEROP_3(getClassHierarchies,KNativePointer,KNativePointer,KStringPtr,KInt)818 TS_INTEROP_3(getClassHierarchies, KNativePointer, KNativePointer, KStringPtr, KInt)
819
820 KNativePointer impl_getApplicableRefactors(KNativePointer context, KStringPtr &kindPtr, KInt position)
821 {
822 LSPAPI const *ctx = GetImpl();
823 auto *result = new std::vector<ark::es2panda::lsp::ApplicableRefactorInfo>(ctx->getApplicableRefactors(
824 reinterpret_cast<es2panda_Context *>(context), GetStringCopy(kindPtr), static_cast<std::size_t>(position)));
825 return result;
826 }
TS_INTEROP_3(getApplicableRefactors,KNativePointer,KNativePointer,KStringPtr,KInt)827 TS_INTEROP_3(getApplicableRefactors, KNativePointer, KNativePointer, KStringPtr, KInt)
828
829 KNativePointer impl_getApplicableRefactorInfoList(KNativePointer infosPtr)
830 {
831 auto *infos = reinterpret_cast<std::vector<ark::es2panda::lsp::ApplicableRefactorInfo> *>(infosPtr);
832 std::vector<void *> ptrs;
833 for (auto &info : *infos) {
834 ptrs.push_back(new ark::es2panda::lsp::ApplicableRefactorInfo(info));
835 }
836 return new std::vector<void *>(ptrs);
837 }
TS_INTEROP_1(getApplicableRefactorInfoList,KNativePointer,KNativePointer)838 TS_INTEROP_1(getApplicableRefactorInfoList, KNativePointer, KNativePointer)
839
840 KNativePointer impl_getRefactorActionName(KNativePointer refactorActionPtr)
841 {
842 auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
843 return new std::string(refactorAction->name);
844 }
TS_INTEROP_1(getRefactorActionName,KNativePointer,KNativePointer)845 TS_INTEROP_1(getRefactorActionName, KNativePointer, KNativePointer)
846
847 KNativePointer impl_getRefactorActionDescription(KNativePointer refactorActionPtr)
848 {
849 auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
850 return new std::string(refactorAction->description);
851 }
TS_INTEROP_1(getRefactorActionDescription,KNativePointer,KNativePointer)852 TS_INTEROP_1(getRefactorActionDescription, KNativePointer, KNativePointer)
853
854 KNativePointer impl_getRefactorActionKind(KNativePointer refactorActionPtr)
855 {
856 auto *refactorAction = reinterpret_cast<ark::es2panda::lsp::RefactorAction *>(refactorActionPtr);
857 return new std::string(refactorAction->kind);
858 }
TS_INTEROP_1(getRefactorActionKind,KNativePointer,KNativePointer)859 TS_INTEROP_1(getRefactorActionKind, KNativePointer, KNativePointer)
860
861 KNativePointer impl_getApplicableRefactorName(KNativePointer applRefsPtr)
862 {
863 auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
864 return new std::string(applRefsInfo->name);
865 }
TS_INTEROP_1(getApplicableRefactorName,KNativePointer,KNativePointer)866 TS_INTEROP_1(getApplicableRefactorName, KNativePointer, KNativePointer)
867
868 KNativePointer impl_getApplicableRefactorDescription(KNativePointer applRefsPtr)
869 {
870 auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
871 return new std::string(applRefsInfo->description);
872 }
TS_INTEROP_1(getApplicableRefactorDescription,KNativePointer,KNativePointer)873 TS_INTEROP_1(getApplicableRefactorDescription, KNativePointer, KNativePointer)
874
875 KNativePointer impl_getApplicableRefactorAction(KNativePointer applRefsPtr)
876 {
877 auto *applRefsInfo = reinterpret_cast<ark::es2panda::lsp::ApplicableRefactorInfo *>(applRefsPtr);
878 return new ark::es2panda::lsp::RefactorAction(applRefsInfo->action);
879 }
TS_INTEROP_1(getApplicableRefactorAction,KNativePointer,KNativePointer)880 TS_INTEROP_1(getApplicableRefactorAction, KNativePointer, KNativePointer)
881
882 KNativePointer impl_getClassHierarchyList(KNativePointer infosPtr)
883 {
884 auto *infos = reinterpret_cast<std::vector<ark::es2panda::lsp::ClassHierarchyItemInfo> *>(infosPtr);
885 std::vector<void *> infoPtrList;
886 for (auto &info : *infos) {
887 infoPtrList.push_back(new ark::es2panda::lsp::ClassHierarchyItemInfo(info));
888 }
889 return new std::vector<void *>(infoPtrList);
890 }
TS_INTEROP_1(getClassHierarchyList,KNativePointer,KNativePointer)891 TS_INTEROP_1(getClassHierarchyList, KNativePointer, KNativePointer)
892
893 KInt impl_getPosFromClassHierarchyItemInfo(KNativePointer infoPtr)
894 {
895 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
896 return static_cast<KInt>(info->pos);
897 }
TS_INTEROP_1(getPosFromClassHierarchyItemInfo,KInt,KNativePointer)898 TS_INTEROP_1(getPosFromClassHierarchyItemInfo, KInt, KNativePointer)
899
900 KInt impl_getKindFromClassHierarchyItemInfo(KNativePointer infoPtr)
901 {
902 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
903 return static_cast<KInt>(info->kind);
904 }
TS_INTEROP_1(getKindFromClassHierarchyItemInfo,KInt,KNativePointer)905 TS_INTEROP_1(getKindFromClassHierarchyItemInfo, KInt, KNativePointer)
906
907 KNativePointer impl_getDescriptionFromClassHierarchyItemInfo(KNativePointer infoPtr)
908 {
909 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
910 auto description = info->description;
911 return new std::string(description);
912 }
TS_INTEROP_1(getDescriptionFromClassHierarchyItemInfo,KNativePointer,KNativePointer)913 TS_INTEROP_1(getDescriptionFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
914
915 KNativePointer impl_getOverriddenFromClassHierarchyItemInfo(KNativePointer infoPtr)
916 {
917 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
918 auto &overridden = info->overridden;
919 std::vector<void *> overriddenPtrList;
920 overriddenPtrList.reserve(overridden.size());
921 size_t idx = 0;
922 for (auto &details : overridden) {
923 overriddenPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
924 }
925 return new std::vector<void *>(std::move(overriddenPtrList));
926 }
TS_INTEROP_1(getOverriddenFromClassHierarchyItemInfo,KNativePointer,KNativePointer)927 TS_INTEROP_1(getOverriddenFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
928
929 KNativePointer impl_getOverridingFromClassHierarchyItemInfo(KNativePointer infoPtr)
930 {
931 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
932 auto &overriding = info->overriding;
933 std::vector<void *> overridingPtrList;
934 overridingPtrList.reserve(overriding.size());
935 size_t idx = 0;
936 for (auto &details : overriding) {
937 overridingPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
938 }
939 return new std::vector<void *>(std::move(overridingPtrList));
940 }
TS_INTEROP_1(getOverridingFromClassHierarchyItemInfo,KNativePointer,KNativePointer)941 TS_INTEROP_1(getOverridingFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
942
943 KNativePointer impl_getImplementedFromClassHierarchyItemInfo(KNativePointer infoPtr)
944 {
945 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
946 auto implemented = info->implemented;
947 std::vector<void *> implementedPtrList;
948 implementedPtrList.reserve(implemented.size());
949 size_t idx = 0;
950 for (auto &details : implemented) {
951 implementedPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
952 }
953 return new std::vector<void *>(std::move(implementedPtrList));
954 }
TS_INTEROP_1(getImplementedFromClassHierarchyItemInfo,KNativePointer,KNativePointer)955 TS_INTEROP_1(getImplementedFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
956
957 KNativePointer impl_getImplementingFromClassHierarchyItemInfo(KNativePointer infoPtr)
958 {
959 auto *info = reinterpret_cast<ark::es2panda::lsp::ClassHierarchyItemInfo *>(infoPtr);
960 auto implementing = info->implementing;
961 std::vector<void *> implementingPtrList;
962 implementingPtrList.reserve(implementing.size());
963 size_t idx = 0;
964 for (auto &details : implementing) {
965 implementingPtrList[idx++] = new ark::es2panda::lsp::ClassRelationDetails(details);
966 }
967 return new std::vector<void *>(std::move(implementingPtrList));
968 }
TS_INTEROP_1(getImplementingFromClassHierarchyItemInfo,KNativePointer,KNativePointer)969 TS_INTEROP_1(getImplementingFromClassHierarchyItemInfo, KNativePointer, KNativePointer)
970
971 KNativePointer impl_getFileNameFromClassRelationDetails(KNativePointer detailsPtr)
972 {
973 auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
974 return new std::string(details->fileName);
975 }
TS_INTEROP_1(getFileNameFromClassRelationDetails,KNativePointer,KNativePointer)976 TS_INTEROP_1(getFileNameFromClassRelationDetails, KNativePointer, KNativePointer)
977
978 KInt impl_getPosFromClassRelationDetails(KNativePointer detailsPtr)
979 {
980 auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
981 return static_cast<KInt>(details->pos);
982 }
TS_INTEROP_1(getPosFromClassRelationDetails,KInt,KNativePointer)983 TS_INTEROP_1(getPosFromClassRelationDetails, KInt, KNativePointer)
984
985 KInt impl_getKindFromClassRelationDetails(KNativePointer detailsPtr)
986 {
987 auto *details = reinterpret_cast<ark::es2panda::lsp::ClassRelationDetails *>(detailsPtr);
988 return static_cast<KInt>(details->kind);
989 }
TS_INTEROP_1(getKindFromClassRelationDetails,KInt,KNativePointer)990 TS_INTEROP_1(getKindFromClassRelationDetails, KInt, KNativePointer)
991
992 KNativePointer impl_getSymbolDisplayPart(KNativePointer quickInfoPtr)
993 {
994 auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
995 std::vector<void *> ptrs;
996 for (auto &el : quickInfo->GetDisplayParts()) {
997 ptrs.push_back(new SymbolDisplayPart(el));
998 }
999 return new std::vector<void *>(ptrs);
1000 }
TS_INTEROP_1(getSymbolDisplayPart,KNativePointer,KNativePointer)1001 TS_INTEROP_1(getSymbolDisplayPart, KNativePointer, KNativePointer)
1002
1003 KInt impl_getTextSpanStart(KNativePointer textSpanPtr)
1004 {
1005 auto *textSpan = reinterpret_cast<TextSpan *>(textSpanPtr);
1006 return textSpan->start;
1007 }
TS_INTEROP_1(getTextSpanStart,KInt,KNativePointer)1008 TS_INTEROP_1(getTextSpanStart, KInt, KNativePointer)
1009
1010 KInt impl_getTextSpanLength(KNativePointer textSpanPtr)
1011 {
1012 auto *textSpan = reinterpret_cast<TextSpan *>(textSpanPtr);
1013 return textSpan->length;
1014 }
TS_INTEROP_1(getTextSpanLength,KInt,KNativePointer)1015 TS_INTEROP_1(getTextSpanLength, KInt, KNativePointer)
1016
1017 KNativePointer impl_getTextSpan(KNativePointer quickInfoPtr)
1018 {
1019 auto *quickInfo = reinterpret_cast<QuickInfo *>(quickInfoPtr);
1020 return new TextSpan(quickInfo->GetTextSpan());
1021 }
TS_INTEROP_1(getTextSpan,KNativePointer,KNativePointer)1022 TS_INTEROP_1(getTextSpan, KNativePointer, KNativePointer)
1023
1024 KNativePointer impl_createTextSpan(KInt start, KInt length)
1025 {
1026 return new TextSpan(start, length);
1027 }
TS_INTEROP_2(createTextSpan,KNativePointer,KInt,KInt)1028 TS_INTEROP_2(createTextSpan, KNativePointer, KInt, KInt)
1029
1030 KNativePointer impl_getHighlightTextSpan(KNativePointer highlightPtr)
1031 {
1032 auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1033 return new TextSpan(highlight->textSpan_);
1034 }
TS_INTEROP_1(getHighlightTextSpan,KNativePointer,KNativePointer)1035 TS_INTEROP_1(getHighlightTextSpan, KNativePointer, KNativePointer)
1036
1037 KNativePointer impl_getHighlightContextSpan(KNativePointer highlightPtr)
1038 {
1039 auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1040 return new TextSpan(highlight->contextSpan_);
1041 }
TS_INTEROP_1(getHighlightContextSpan,KNativePointer,KNativePointer)1042 TS_INTEROP_1(getHighlightContextSpan, KNativePointer, KNativePointer)
1043
1044 KNativePointer impl_getHighlightFileName(KNativePointer highlightPtr)
1045 {
1046 auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1047 return new std::string(highlight->fileName_);
1048 }
TS_INTEROP_1(getHighlightFileName,KNativePointer,KNativePointer)1049 TS_INTEROP_1(getHighlightFileName, KNativePointer, KNativePointer)
1050
1051 KInt impl_getHighlightIsInString(KNativePointer highlightPtr)
1052 {
1053 auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1054 return static_cast<int>(highlight->isInString_);
1055 }
TS_INTEROP_1(getHighlightIsInString,KInt,KNativePointer)1056 TS_INTEROP_1(getHighlightIsInString, KInt, KNativePointer)
1057
1058 KInt impl_getHighlightKind(KNativePointer highlightPtr)
1059 {
1060 auto *highlight = reinterpret_cast<HighlightSpan *>(highlightPtr);
1061 return static_cast<size_t>(highlight->kind_);
1062 }
TS_INTEROP_1(getHighlightKind,KInt,KNativePointer)1063 TS_INTEROP_1(getHighlightKind, KInt, KNativePointer)
1064
1065 KNativePointer impl_getHighlightSpanFromHighlights(KNativePointer documentHighlightsPtr)
1066 {
1067 auto *documentHighlights = reinterpret_cast<DocumentHighlights *>(documentHighlightsPtr);
1068 std::vector<void *> ptrs;
1069 for (auto &el : documentHighlights->highlightSpans_) {
1070 ptrs.push_back(new HighlightSpan(el));
1071 }
1072 return new std::vector<void *>(ptrs);
1073 }
TS_INTEROP_1(getHighlightSpanFromHighlights,KNativePointer,KNativePointer)1074 TS_INTEROP_1(getHighlightSpanFromHighlights, KNativePointer, KNativePointer)
1075
1076 KNativePointer impl_getDocumentHighlightsFromRef(KNativePointer documentHighlightsReferencesPtr)
1077 {
1078 auto *documentHighlightsReferences =
1079 reinterpret_cast<DocumentHighlightsReferences *>(documentHighlightsReferencesPtr);
1080 std::vector<void *> ptrs;
1081 for (auto &el : documentHighlightsReferences->documentHighlights_) {
1082 ptrs.push_back(new DocumentHighlights(el));
1083 }
1084 return new std::vector<void *>(ptrs);
1085 }
TS_INTEROP_1(getDocumentHighlightsFromRef,KNativePointer,KNativePointer)1086 TS_INTEROP_1(getDocumentHighlightsFromRef, KNativePointer, KNativePointer)
1087
1088 KNativePointer impl_getFileNameFromEntryData(KNativePointer entryDataPtr)
1089 {
1090 auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1091 return new std::string(entryData->GetFileName());
1092 }
TS_INTEROP_1(getFileNameFromEntryData,KNativePointer,KNativePointer)1093 TS_INTEROP_1(getFileNameFromEntryData, KNativePointer, KNativePointer)
1094
1095 KNativePointer impl_getNamedExportFromEntryData(KNativePointer entryDataPtr)
1096 {
1097 auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1098 return new std::string(entryData->GetNamedExport());
1099 }
TS_INTEROP_1(getNamedExportFromEntryData,KNativePointer,KNativePointer)1100 TS_INTEROP_1(getNamedExportFromEntryData, KNativePointer, KNativePointer)
1101
1102 KNativePointer impl_getImportDeclarationFromEntryData(KNativePointer entryDataPtr)
1103 {
1104 auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1105 return new std::string(entryData->GetImportDeclaration());
1106 }
TS_INTEROP_1(getImportDeclarationFromEntryData,KNativePointer,KNativePointer)1107 TS_INTEROP_1(getImportDeclarationFromEntryData, KNativePointer, KNativePointer)
1108
1109 KInt impl_getStatusFromEntryData(KNativePointer entryDataPtr)
1110 {
1111 auto *entryData = reinterpret_cast<ark::es2panda::lsp::CompletionEntryData *>(entryDataPtr);
1112 return static_cast<size_t>(entryData->GetStatus());
1113 }
TS_INTEROP_1(getStatusFromEntryData,KInt,KNativePointer)1114 TS_INTEROP_1(getStatusFromEntryData, KInt, KNativePointer)
1115
1116 KNativePointer impl_getNameFromEntry(KNativePointer entryPtr)
1117 {
1118 auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1119 return new std::string(entry->GetName());
1120 }
TS_INTEROP_1(getNameFromEntry,KNativePointer,KNativePointer)1121 TS_INTEROP_1(getNameFromEntry, KNativePointer, KNativePointer)
1122
1123 KNativePointer impl_getSortTextFromEntry(KNativePointer entryPtr)
1124 {
1125 auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1126 return new std::string(entry->GetSortText());
1127 }
TS_INTEROP_1(getSortTextFromEntry,KNativePointer,KNativePointer)1128 TS_INTEROP_1(getSortTextFromEntry, KNativePointer, KNativePointer)
1129
1130 KNativePointer impl_getInsertTextFromEntry(KNativePointer entryPtr)
1131 {
1132 auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1133 return new std::string(entry->GetInsertText());
1134 }
TS_INTEROP_1(getInsertTextFromEntry,KNativePointer,KNativePointer)1135 TS_INTEROP_1(getInsertTextFromEntry, KNativePointer, KNativePointer)
1136
1137 KInt impl_getKindFromEntry(KNativePointer entryPtr)
1138 {
1139 auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1140 return static_cast<size_t>(entry->GetCompletionKind());
1141 }
TS_INTEROP_1(getKindFromEntry,KInt,KNativePointer)1142 TS_INTEROP_1(getKindFromEntry, KInt, KNativePointer)
1143
1144 KNativePointer impl_getDataFromEntry(KNativePointer entryPtr)
1145 {
1146 auto *entry = reinterpret_cast<ark::es2panda::lsp::CompletionEntry *>(entryPtr);
1147 auto data = entry->GetCompletionEntryData();
1148
1149 if (data.has_value()) {
1150 return new ark::es2panda::lsp::CompletionEntryData(data.value());
1151 }
1152 return nullptr;
1153 }
TS_INTEROP_1(getDataFromEntry,KNativePointer,KNativePointer)1154 TS_INTEROP_1(getDataFromEntry, KNativePointer, KNativePointer)
1155
1156 KNativePointer impl_getEntriesFromCompletionInfo(KNativePointer completionInfoPtr)
1157 {
1158 auto *completionInfo = reinterpret_cast<ark::es2panda::lsp::CompletionInfo *>(completionInfoPtr);
1159 std::vector<void *> ptrs;
1160 for (auto &el : completionInfo->GetEntries()) {
1161 ptrs.push_back(new ark::es2panda::lsp::CompletionEntry(el));
1162 }
1163 return new std::vector<void *>(ptrs);
1164 }
TS_INTEROP_1(getEntriesFromCompletionInfo,KNativePointer,KNativePointer)1165 TS_INTEROP_1(getEntriesFromCompletionInfo, KNativePointer, KNativePointer)
1166
1167 KNativePointer impl_getUriFromLocation(KNativePointer locPtr)
1168 {
1169 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1170 return new std::string(loc->uri);
1171 }
TS_INTEROP_1(getUriFromLocation,KNativePointer,KNativePointer)1172 TS_INTEROP_1(getUriFromLocation, KNativePointer, KNativePointer)
1173
1174 KInt impl_getStartFromLocation(KNativePointer locPtr)
1175 {
1176 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1177 return loc->start;
1178 }
TS_INTEROP_1(getStartFromLocation,KInt,KNativePointer)1179 TS_INTEROP_1(getStartFromLocation, KInt, KNativePointer)
1180
1181 KInt impl_getEndFromLocation(KNativePointer locPtr)
1182 {
1183 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1184 return loc->end;
1185 }
TS_INTEROP_1(getEndFromLocation,KInt,KNativePointer)1186 TS_INTEROP_1(getEndFromLocation, KInt, KNativePointer)
1187
1188 KBoolean impl_getIsDefinitionFromLocation(KNativePointer locPtr)
1189 {
1190 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1191 return static_cast<KBoolean>(loc->isDefinition);
1192 }
TS_INTEROP_1(getIsDefinitionFromLocation,KBoolean,KNativePointer)1193 TS_INTEROP_1(getIsDefinitionFromLocation, KBoolean, KNativePointer)
1194
1195 KBoolean impl_getIsImportFromLocation(KNativePointer locPtr)
1196 {
1197 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1198 return static_cast<KBoolean>(loc->isImport);
1199 }
TS_INTEROP_1(getIsImportFromLocation,KBoolean,KNativePointer)1200 TS_INTEROP_1(getIsImportFromLocation, KBoolean, KNativePointer)
1201
1202 KInt impl_getAccessKindFromLocation(KNativePointer locPtr)
1203 {
1204 auto *loc = reinterpret_cast<ReferenceLocation *>(locPtr);
1205 return static_cast<size_t>(loc->accessKind);
1206 }
TS_INTEROP_1(getAccessKindFromLocation,KInt,KNativePointer)1207 TS_INTEROP_1(getAccessKindFromLocation, KInt, KNativePointer)
1208
1209 KNativePointer impl_getLocationFromList(KNativePointer listPtr)
1210 {
1211 auto *list = reinterpret_cast<ReferenceLocationList *>(listPtr);
1212 std::vector<void *> ptrs;
1213 for (auto &el : list->referenceLocation) {
1214 ptrs.push_back(new ReferenceLocation(el));
1215 }
1216 return new std::vector<void *>(ptrs);
1217 }
TS_INTEROP_1(getLocationFromList,KNativePointer,KNativePointer)1218 TS_INTEROP_1(getLocationFromList, KNativePointer, KNativePointer)
1219
1220 KBoolean impl_getSafeDeleteInfo(KNativePointer context, KInt position)
1221 {
1222 LSPAPI const *ctx = GetImpl();
1223 return static_cast<KBoolean>(ctx->getSafeDeleteInfo(reinterpret_cast<es2panda_Context *>(context), position));
1224 }
TS_INTEROP_2(getSafeDeleteInfo,KBoolean,KNativePointer,KInt)1225 TS_INTEROP_2(getSafeDeleteInfo, KBoolean, KNativePointer, KInt)
1226
1227 KNativePointer impl_toLineColumnOffset(KNativePointer context, KInt position)
1228 {
1229 LSPAPI const *ctx = GetImpl();
1230 auto *ptrDiag = new ark::es2panda::lsp::LineAndCharacter(
1231 ctx->toLineColumnOffset(reinterpret_cast<es2panda_Context *>(context), position));
1232 return ptrDiag;
1233 }
TS_INTEROP_2(toLineColumnOffset,KNativePointer,KNativePointer,KInt)1234 TS_INTEROP_2(toLineColumnOffset, KNativePointer, KNativePointer, KInt)
1235
1236 KInt impl_getLine(KNativePointer locPtr)
1237 {
1238 auto *loc = reinterpret_cast<ark::es2panda::lsp::LineAndCharacter *>(locPtr);
1239 return loc->GetLine();
1240 }
TS_INTEROP_1(getLine,KInt,KNativePointer)1241 TS_INTEROP_1(getLine, KInt, KNativePointer)
1242
1243 KInt impl_getChar(KNativePointer locPtr)
1244 {
1245 auto *loc = reinterpret_cast<ark::es2panda::lsp::LineAndCharacter *>(locPtr);
1246 return loc->GetCharacter();
1247 }
TS_INTEROP_1(getChar,KInt,KNativePointer)1248 TS_INTEROP_1(getChar, KInt, KNativePointer)
1249
1250 KNativePointer impl_getTypeHierarchies(KNativePointer searchContext, KNativePointer context, KInt position)
1251 {
1252 LSPAPI const *ctx = GetImpl();
1253 auto *info = new TypeHierarchiesInfo(ctx->getTypeHierarchies(reinterpret_cast<es2panda_Context *>(searchContext),
1254 reinterpret_cast<es2panda_Context *>(context),
1255 static_cast<std::size_t>(position)));
1256 return info;
1257 }
TS_INTEROP_3(getTypeHierarchies,KNativePointer,KNativePointer,KNativePointer,KInt)1258 TS_INTEROP_3(getTypeHierarchies, KNativePointer, KNativePointer, KNativePointer, KInt)
1259
1260 KNativePointer impl_getFileNameFromTypeHierarchiesInfo(KNativePointer infoPtr)
1261 {
1262 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1263 return new std::string(info->fileName);
1264 }
TS_INTEROP_1(getFileNameFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1265 TS_INTEROP_1(getFileNameFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1266
1267 KNativePointer impl_getNameFromTypeHierarchiesInfo(KNativePointer infoPtr)
1268 {
1269 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1270 return new std::string(info->name);
1271 }
TS_INTEROP_1(getNameFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1272 TS_INTEROP_1(getNameFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1273
1274 KInt impl_getTypeFromTypeHierarchiesInfo(KNativePointer infoPtr)
1275 {
1276 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1277 return static_cast<size_t>(info->type);
1278 }
TS_INTEROP_1(getTypeFromTypeHierarchiesInfo,KInt,KNativePointer)1279 TS_INTEROP_1(getTypeFromTypeHierarchiesInfo, KInt, KNativePointer)
1280
1281 KInt impl_getPositionFromTypeHierarchiesInfo(KNativePointer infoPtr)
1282 {
1283 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1284 return static_cast<size_t>(info->pos);
1285 }
TS_INTEROP_1(getPositionFromTypeHierarchiesInfo,KInt,KNativePointer)1286 TS_INTEROP_1(getPositionFromTypeHierarchiesInfo, KInt, KNativePointer)
1287
1288 KNativePointer impl_getSuperFromTypeHierarchiesInfo(KNativePointer infoPtr)
1289 {
1290 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1291 return new TypeHierarchies(info->superHierarchies);
1292 }
TS_INTEROP_1(getSuperFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1293 TS_INTEROP_1(getSuperFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1294
1295 KNativePointer impl_getSubFromTypeHierarchiesInfo(KNativePointer infoPtr)
1296 {
1297 auto *info = reinterpret_cast<TypeHierarchiesInfo *>(infoPtr);
1298 return new TypeHierarchies(info->subHierarchies);
1299 }
TS_INTEROP_1(getSubFromTypeHierarchiesInfo,KNativePointer,KNativePointer)1300 TS_INTEROP_1(getSubFromTypeHierarchiesInfo, KNativePointer, KNativePointer)
1301
1302 KNativePointer impl_getFileNameFromTypeHierarchies(KNativePointer infoPtr)
1303 {
1304 auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1305 return new std::string(info->fileName);
1306 }
TS_INTEROP_1(getFileNameFromTypeHierarchies,KNativePointer,KNativePointer)1307 TS_INTEROP_1(getFileNameFromTypeHierarchies, KNativePointer, KNativePointer)
1308
1309 KNativePointer impl_getNameFromTypeHierarchies(KNativePointer infoPtr)
1310 {
1311 auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1312 return new std::string(info->name);
1313 }
TS_INTEROP_1(getNameFromTypeHierarchies,KNativePointer,KNativePointer)1314 TS_INTEROP_1(getNameFromTypeHierarchies, KNativePointer, KNativePointer)
1315
1316 KInt impl_getPosFromTypeHierarchies(KNativePointer infoPtr)
1317 {
1318 auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1319 return static_cast<size_t>(info->pos);
1320 }
TS_INTEROP_1(getPosFromTypeHierarchies,KInt,KNativePointer)1321 TS_INTEROP_1(getPosFromTypeHierarchies, KInt, KNativePointer)
1322
1323 KNativePointer impl_getSubOrSuper(KNativePointer infoPtr)
1324 {
1325 auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1326 std::vector<void *> ptrs;
1327 for (auto &el : info->subOrSuper) {
1328 ptrs.push_back(new TypeHierarchies(el));
1329 }
1330 return new std::vector<void *>(ptrs);
1331 }
TS_INTEROP_1(getSubOrSuper,KNativePointer,KNativePointer)1332 TS_INTEROP_1(getSubOrSuper, KNativePointer, KNativePointer)
1333
1334 KInt impl_getTypeFromTypeHierarchies(KNativePointer infoPtr)
1335 {
1336 auto *info = reinterpret_cast<TypeHierarchies *>(infoPtr);
1337 return static_cast<size_t>(info->type);
1338 }
TS_INTEROP_1(getTypeFromTypeHierarchies,KInt,KNativePointer)1339 TS_INTEROP_1(getTypeFromTypeHierarchies, KInt, KNativePointer)
1340
1341 KNativePointer impl_getCodeFixesAtPosition(KNativePointer context, KInt startPosition, KInt endPosition,
1342 KInt *errorCodesPtr, KInt codeLength)
1343 {
1344 CodeFixOptions emptyOptions;
1345 std::vector<int> errorCodesInt;
1346 if (errorCodesPtr != nullptr && codeLength > 0) {
1347 // NOLINTBEGIN(cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors)
1348 errorCodesInt = std::vector<int>(reinterpret_cast<int *>(errorCodesPtr),
1349 reinterpret_cast<int *>(errorCodesPtr) + codeLength);
1350 // NOLINTEND(cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors)
1351 }
1352 LSPAPI const *ctx = GetImpl();
1353 auto autofix = ctx->getCodeFixesAtPosition(reinterpret_cast<es2panda_Context *>(context), startPosition,
1354 endPosition, errorCodesInt, emptyOptions);
1355 return new std::vector<CodeFixActionInfo>(autofix);
1356 }
TS_INTEROP_5(getCodeFixesAtPosition,KNativePointer,KNativePointer,KInt,KInt,KInt *,KInt)1357 TS_INTEROP_5(getCodeFixesAtPosition, KNativePointer, KNativePointer, KInt, KInt, KInt *, KInt)
1358
1359 KNativePointer impl_getCodeFixActionInfos(KNativePointer codeFixActionInfoListPtr)
1360 {
1361 auto *getCodeFixActionInfoList = reinterpret_cast<CodeFixActionInfoList *>(codeFixActionInfoListPtr);
1362 std::vector<void *> ptrs;
1363 for (auto &el : getCodeFixActionInfoList->infos_) {
1364 ptrs.push_back(new CodeFixActionInfo(el));
1365 }
1366 return new std::vector<void *>(ptrs);
1367 }
TS_INTEROP_1(getCodeFixActionInfos,KNativePointer,KNativePointer)1368 TS_INTEROP_1(getCodeFixActionInfos, KNativePointer, KNativePointer)
1369
1370 KNativePointer impl_getFileTextChangesFromCodeActionInfo(KNativePointer infoPtr)
1371 {
1372 auto *info = reinterpret_cast<CodeActionInfo *>(infoPtr);
1373 std::vector<void *> ptrs;
1374 for (auto &el : info->changes_) {
1375 ptrs.push_back(new FileTextChanges(el));
1376 }
1377 return new std::vector<void *>(ptrs);
1378 }
TS_INTEROP_1(getFileTextChangesFromCodeActionInfo,KNativePointer,KNativePointer)1379 TS_INTEROP_1(getFileTextChangesFromCodeActionInfo, KNativePointer, KNativePointer)
1380
1381 KNativePointer impl_getDescriptionFromCodeActionInfo(KNativePointer infoPtr)
1382 {
1383 auto *info = reinterpret_cast<CodeActionInfo *>(infoPtr);
1384 return new std::string(info->description_);
1385 }
TS_INTEROP_1(getDescriptionFromCodeActionInfo,KNativePointer,KNativePointer)1386 TS_INTEROP_1(getDescriptionFromCodeActionInfo, KNativePointer, KNativePointer)
1387
1388 KNativePointer impl_getFixNameFromCodeFixActionInfo(KNativePointer infoPtr)
1389 {
1390 auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1391 return new std::string(info->fixName_);
1392 }
TS_INTEROP_1(getFixNameFromCodeFixActionInfo,KNativePointer,KNativePointer)1393 TS_INTEROP_1(getFixNameFromCodeFixActionInfo, KNativePointer, KNativePointer)
1394
1395 KNativePointer impl_getFixIdFromCodeFixActionInfo(KNativePointer infoPtr)
1396 {
1397 auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1398 return new std::string(info->fixId_);
1399 }
TS_INTEROP_1(getFixIdFromCodeFixActionInfo,KNativePointer,KNativePointer)1400 TS_INTEROP_1(getFixIdFromCodeFixActionInfo, KNativePointer, KNativePointer)
1401
1402 KNativePointer impl_getFixAllDescriptionFromCodeFixActionInfo(KNativePointer infoPtr)
1403 {
1404 auto *info = reinterpret_cast<CodeFixActionInfo *>(infoPtr);
1405 return new std::string(info->fixAllDescription_);
1406 }
TS_INTEROP_1(getFixAllDescriptionFromCodeFixActionInfo,KNativePointer,KNativePointer)1407 TS_INTEROP_1(getFixAllDescriptionFromCodeFixActionInfo, KNativePointer, KNativePointer)
1408
1409 KNativePointer impl_getSpanOfEnclosingComment(KNativePointer context, KInt position, KBoolean onlyMultiLine)
1410 {
1411 LSPAPI const *ctx = GetImpl();
1412 auto *textSpan = new TextSpan(
1413 ctx->getSpanOfEnclosingComment(reinterpret_cast<es2panda_Context *>(context), position, onlyMultiLine != 0));
1414 return textSpan;
1415 }
TS_INTEROP_3(getSpanOfEnclosingComment,KNativePointer,KNativePointer,KInt,KBoolean)1416 TS_INTEROP_3(getSpanOfEnclosingComment, KNativePointer, KNativePointer, KInt, KBoolean)
1417
1418 KNativePointer impl_getInlayHintText(KNativePointer hintPtr)
1419 {
1420 auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1421 return &hint->text;
1422 }
TS_INTEROP_1(getInlayHintText,KNativePointer,KNativePointer)1423 TS_INTEROP_1(getInlayHintText, KNativePointer, KNativePointer)
1424
1425 KInt impl_getInlayHintNumber(KNativePointer hintPtr)
1426 {
1427 auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1428 return hint->number;
1429 }
TS_INTEROP_1(getInlayHintNumber,KInt,KNativePointer)1430 TS_INTEROP_1(getInlayHintNumber, KInt, KNativePointer)
1431
1432 KInt impl_getInlayHintKind(KNativePointer hintPtr)
1433 {
1434 auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1435 return static_cast<size_t>(hint->kind);
1436 }
TS_INTEROP_1(getInlayHintKind,KInt,KNativePointer)1437 TS_INTEROP_1(getInlayHintKind, KInt, KNativePointer)
1438
1439 KBoolean impl_getInlayHintWhitespaceBefore(KNativePointer hintPtr)
1440 {
1441 auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1442 return hint->whitespaceBefore ? 1 : 0;
1443 }
TS_INTEROP_1(getInlayHintWhitespaceBefore,KBoolean,KNativePointer)1444 TS_INTEROP_1(getInlayHintWhitespaceBefore, KBoolean, KNativePointer)
1445
1446 KBoolean impl_getInlayHintWhitespaceAfter(KNativePointer hintPtr)
1447 {
1448 auto *hint = reinterpret_cast<InlayHint *>(hintPtr);
1449 return hint->whitespaceAfter ? 1 : 0;
1450 }
TS_INTEROP_1(getInlayHintWhitespaceAfter,KBoolean,KNativePointer)1451 TS_INTEROP_1(getInlayHintWhitespaceAfter, KBoolean, KNativePointer)
1452
1453 KNativePointer impl_getInlayHints(KNativePointer inlayHintListPtr)
1454 {
1455 auto *inlayHintList = reinterpret_cast<InlayHintList *>(inlayHintListPtr);
1456 std::vector<void *> ptrs;
1457 for (auto &el : inlayHintList->hints) {
1458 ptrs.push_back(new InlayHint(el));
1459 }
1460 return new std::vector<void *>(ptrs);
1461 }
TS_INTEROP_1(getInlayHints,KNativePointer,KNativePointer)1462 TS_INTEROP_1(getInlayHints, KNativePointer, KNativePointer)
1463
1464 KNativePointer impl_getInlayHintList(KNativePointer context, KNativePointer span)
1465 {
1466 LSPAPI const *ctx = GetImpl();
1467 auto *inlayHints = new InlayHintList(
1468 ctx->provideInlayHints(reinterpret_cast<es2panda_Context *>(context), reinterpret_cast<TextSpan *>(span)));
1469 return inlayHints;
1470 }
TS_INTEROP_2(getInlayHintList,KNativePointer,KNativePointer,KNativePointer)1471 TS_INTEROP_2(getInlayHintList, KNativePointer, KNativePointer, KNativePointer)
1472
1473 KNativePointer impl_getSignatureHelpParameterName(KNativePointer parameterPtr)
1474 {
1475 auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1476 return ¶meterRef->GetName();
1477 }
TS_INTEROP_1(getSignatureHelpParameterName,KNativePointer,KNativePointer)1478 TS_INTEROP_1(getSignatureHelpParameterName, KNativePointer, KNativePointer)
1479
1480 KNativePointer impl_getSignatureHelpParameterDocumentation(KNativePointer parameterPtr)
1481 {
1482 auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1483 std::vector<void *> ptrs;
1484 for (auto &el : parameterRef->GetDocumentation()) {
1485 ptrs.push_back(new SymbolDisplayPart(el));
1486 }
1487 return new std::vector<void *>(ptrs);
1488 }
TS_INTEROP_1(getSignatureHelpParameterDocumentation,KNativePointer,KNativePointer)1489 TS_INTEROP_1(getSignatureHelpParameterDocumentation, KNativePointer, KNativePointer)
1490
1491 KNativePointer impl_getSignatureHelpParameterDisplayParts(KNativePointer parameterPtr)
1492 {
1493 auto *parameterRef = reinterpret_cast<SignatureHelpParameter *>(parameterPtr);
1494 std::vector<void *> ptrs;
1495 for (auto &el : parameterRef->GetDisplayParts()) {
1496 ptrs.push_back(new SymbolDisplayPart(el));
1497 }
1498 return new std::vector<void *>(ptrs);
1499 }
TS_INTEROP_1(getSignatureHelpParameterDisplayParts,KNativePointer,KNativePointer)1500 TS_INTEROP_1(getSignatureHelpParameterDisplayParts, KNativePointer, KNativePointer)
1501
1502 KNativePointer impl_getSignatureHelpItemPrefix(KNativePointer itemPtr)
1503 {
1504 auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1505 std::vector<void *> ptrs;
1506 for (auto &el : itemRef->GetPrefixDisplayParts()) {
1507 ptrs.push_back(new SymbolDisplayPart(el));
1508 }
1509 return new std::vector<void *>(ptrs);
1510 }
TS_INTEROP_1(getSignatureHelpItemPrefix,KNativePointer,KNativePointer)1511 TS_INTEROP_1(getSignatureHelpItemPrefix, KNativePointer, KNativePointer)
1512
1513 KNativePointer impl_getSignatureHelpItemSuffix(KNativePointer itemPtr)
1514 {
1515 auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1516 std::vector<void *> ptrs;
1517 for (auto &el : itemRef->GetSuffixDisplayParts()) {
1518 ptrs.push_back(new SymbolDisplayPart(el));
1519 }
1520 return new std::vector<void *>(ptrs);
1521 }
TS_INTEROP_1(getSignatureHelpItemSuffix,KNativePointer,KNativePointer)1522 TS_INTEROP_1(getSignatureHelpItemSuffix, KNativePointer, KNativePointer)
1523
1524 KNativePointer impl_getSignatureHelpItemSeparator(KNativePointer itemPtr)
1525 {
1526 auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1527 std::vector<void *> ptrs;
1528 for (auto &el : itemRef->GetSeparatorDisplayParts()) {
1529 ptrs.push_back(new SymbolDisplayPart(el));
1530 }
1531 return new std::vector<void *>(ptrs);
1532 }
TS_INTEROP_1(getSignatureHelpItemSeparator,KNativePointer,KNativePointer)1533 TS_INTEROP_1(getSignatureHelpItemSeparator, KNativePointer, KNativePointer)
1534
1535 KNativePointer impl_getSignatureHelpItemParameter(KNativePointer itemPtr)
1536 {
1537 auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1538 std::vector<void *> ptrs;
1539 for (auto &el : itemRef->GetParameters()) {
1540 ptrs.push_back(new SignatureHelpParameter(el));
1541 }
1542 return new std::vector<void *>(ptrs);
1543 }
TS_INTEROP_1(getSignatureHelpItemParameter,KNativePointer,KNativePointer)1544 TS_INTEROP_1(getSignatureHelpItemParameter, KNativePointer, KNativePointer)
1545
1546 KNativePointer impl_getSignatureHelpItemDocumentation(KNativePointer itemPtr)
1547 {
1548 auto *itemRef = reinterpret_cast<SignatureHelpItem *>(itemPtr);
1549 std::vector<void *> ptrs;
1550 for (auto &el : itemRef->GetDocumentation()) {
1551 ptrs.push_back(new SymbolDisplayPart(el));
1552 }
1553 return new std::vector<void *>(ptrs);
1554 }
TS_INTEROP_1(getSignatureHelpItemDocumentation,KNativePointer,KNativePointer)1555 TS_INTEROP_1(getSignatureHelpItemDocumentation, KNativePointer, KNativePointer)
1556
1557 KNativePointer impl_getSignatureHelpItem(KNativePointer itemsPtr)
1558 {
1559 auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1560 std::vector<void *> ptrs;
1561 for (auto &el : itemsRef->GetItems()) {
1562 ptrs.push_back(new SignatureHelpItem(el));
1563 }
1564 return new std::vector<void *>(ptrs);
1565 }
TS_INTEROP_1(getSignatureHelpItem,KNativePointer,KNativePointer)1566 TS_INTEROP_1(getSignatureHelpItem, KNativePointer, KNativePointer)
1567
1568 KNativePointer impl_getApplicableSpan(KNativePointer itemsPtr)
1569 {
1570 auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1571 return new TextSpan(itemsRef->GetApplicableSpan());
1572 }
TS_INTEROP_1(getApplicableSpan,KNativePointer,KNativePointer)1573 TS_INTEROP_1(getApplicableSpan, KNativePointer, KNativePointer)
1574
1575 KInt impl_getSelectedItemIndex(KNativePointer itemsPtr)
1576 {
1577 auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1578 return itemsRef->GetSelectedItemIndex();
1579 }
TS_INTEROP_1(getSelectedItemIndex,KInt,KNativePointer)1580 TS_INTEROP_1(getSelectedItemIndex, KInt, KNativePointer)
1581
1582 KInt impl_getArgumentIndex(KNativePointer itemsPtr)
1583 {
1584 auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1585 return itemsRef->GetArgumentIndex();
1586 }
TS_INTEROP_1(getArgumentIndex,KInt,KNativePointer)1587 TS_INTEROP_1(getArgumentIndex, KInt, KNativePointer)
1588
1589 KInt impl_getArgumentCount(KNativePointer itemsPtr)
1590 {
1591 auto *itemsRef = reinterpret_cast<SignatureHelpItems *>(itemsPtr);
1592 return itemsRef->GetArgumentCount();
1593 }
TS_INTEROP_1(getArgumentCount,KInt,KNativePointer)1594 TS_INTEROP_1(getArgumentCount, KInt, KNativePointer)
1595
1596 KNativePointer impl_getSignatureHelpItems(KNativePointer context, KInt position)
1597 {
1598 LSPAPI const *ctx = GetImpl();
1599 auto *textSpan =
1600 new SignatureHelpItems(ctx->getSignatureHelpItems(reinterpret_cast<es2panda_Context *>(context), position));
1601 return textSpan;
1602 }
1603 TS_INTEROP_2(getSignatureHelpItems, KNativePointer, KNativePointer, KInt)