diff --git a/arkoala-arkts/libarkts/native/meson.build b/arkoala-arkts/libarkts/native/meson.build index d03a81ab8b37dd4e6e7664789eb34041502ce415..824cac37414637d4398b8f6362a64c36bb67e413 100644 --- a/arkoala-arkts/libarkts/native/meson.build +++ b/arkoala-arkts/libarkts/native/meson.build @@ -9,7 +9,8 @@ project( ) sources = [ - './src/es2panda_lib.cc', + './src/common.cc', + './src/bridges.cc', get_option('interop_src_dir') / 'common-interop.cc', get_option('interop_src_dir') / 'interop-logging.cc', get_option('interop_src_dir') / 'napi/convertors-napi.cc', @@ -44,6 +45,7 @@ shared_library( name_prefix: '', name_suffix: 'node', include_directories: [ + './src/', get_option('panda_sdk_dir') / 'ohos_arm64/include/tools/es2panda/public', get_option('panda_sdk_dir') / 'ohos_arm64/include/tools/es2panda', get_option('interop_src_dir'), diff --git a/arkoala-arkts/libarkts/native/src/es2panda_lib.cc b/arkoala-arkts/libarkts/native/src/bridges.cc similarity index 79% rename from arkoala-arkts/libarkts/native/src/es2panda_lib.cc rename to arkoala-arkts/libarkts/native/src/bridges.cc index 14e4af82b800d141fa5023f0062ae43c2abc7f63..93a0a1c2796a403870d5aed261a69ef74bc406c8 100644 --- a/arkoala-arkts/libarkts/native/src/es2panda_lib.cc +++ b/arkoala-arkts/libarkts/native/src/bridges.cc @@ -1,1600 +1,1275 @@ -/* - * Copyright (c) 2022-2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "dynamic-loader.h" -#include "es2panda_lib.h" -#include "common-interop.h" -#include "stdexcept" - -using std::string, std::cout, std::endl, std::vector; - -static es2panda_Impl *impl = nullptr; - -#ifdef KOALA_WINDOWS - #include - #define PLUGIN_DIR "windows_host_tools" - #define LIB_PREFIX "" - #define LIB_SUFFIX ".dll" -#endif - -#ifdef KOALA_LINUX - #include - - #ifdef __x86_64__ - #define PLUGIN_DIR "linux_host_tools" - #else - #define PLUGIN_DIR "linux_arm64_host_tools" - #endif - - #define LIB_PREFIX "lib" - #define LIB_SUFFIX ".so" -#endif - -const char* libpath = "../node_modules/@panda/sdk/" PLUGIN_DIR "/lib/" LIB_PREFIX "es2panda-public" LIB_SUFFIX; - -es2panda_Impl *GetImpl() { - if (impl) { - return impl; - } - auto library = loadLibrary(libpath); - if (!library) { - throw std::runtime_error("No library (es2panda_lib.cc)"); - } - auto symbol = findSymbol(library, "es2panda_GetImpl"); - if (!symbol) { - throw std::runtime_error("No entry point"); - } - impl = reinterpret_cast(symbol)(ES2PANDA_LIB_VERSION); - return impl; -} - -es2panda_ContextState intToState(KInt state) { - return es2panda_ContextState(state); -} - -string getString(KStringPtr ptr) { - return ptr.data(); -} - -char* getStringCopy(KStringPtr& ptr) { - return strdup(ptr.c_str()); -} - -inline KUInt unpackUInt(const KByte* bytes) { - return (bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24)); -} - -KInt impl_ContextState(KNativePointer contextPtr) { - auto context = reinterpret_cast(contextPtr); - - return static_cast(GetImpl()->ContextState(context)); -} -KOALA_INTEROP_1(ContextState, KInt, KNativePointer) - -KNativePointer impl_ContextErrorMessage(KNativePointer contextPtr) { - auto context = reinterpret_cast(contextPtr); - - return new string(GetImpl()->ContextErrorMessage(context)); -} -KOALA_INTEROP_1(ContextErrorMessage, KNativePointer, KNativePointer) - -KNativePointer impl_CreateConfig(KInt argc, KStringArray argvPtr) { - const std::size_t HEADER_LEN = 4; - - const char** argv = new const char*[argc]; - std::size_t position = HEADER_LEN; - std::size_t str_len; - for (std::size_t i = 0; i < static_cast(argc); ++i) { - str_len = unpackUInt(argvPtr + position); - position += HEADER_LEN; - argv[i] = strdup(std::string(reinterpret_cast(argvPtr + position), str_len).c_str()); - position += str_len; - } - return GetImpl()->CreateConfig(argc, argv); -} -KOALA_INTEROP_2(CreateConfig, KNativePointer, KInt, KStringArray) - -KNativePointer impl_DestroyConfig(KNativePointer configPtr) { - auto config = reinterpret_cast(configPtr); - GetImpl()->DestroyConfig(config); - return nullptr; -} -KOALA_INTEROP_1(DestroyConfig, KNativePointer, KNativePointer) - -KNativePointer impl_CreateContextFromString(KNativePointer configPtr, KStringPtr& sourcePtr, KStringPtr& filenamePtr) { - auto config = reinterpret_cast(configPtr); - return GetImpl()->CreateContextFromString(config, sourcePtr.data(), filenamePtr.data()); -} -KOALA_INTEROP_3(CreateContextFromString, KNativePointer, KNativePointer, KStringPtr, KStringPtr) - -KNativePointer impl_CreateContextFromFile(KNativePointer configPtr, KStringPtr& filenamePtr) { - auto config = reinterpret_cast(configPtr); - return GetImpl()->CreateContextFromFile(config, getStringCopy(filenamePtr)); -} -KOALA_INTEROP_2(CreateContextFromFile, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_DestroyContext(KNativePointer contextPtr) { - auto context = reinterpret_cast(contextPtr); - GetImpl()->DestroyContext(context); - return nullptr; -} -KOALA_INTEROP_1(DestroyContext, KNativePointer, KNativePointer) - -KNativePointer impl_ProceedToState(KNativePointer contextPtr, KInt state) { - auto context = reinterpret_cast(contextPtr); - return GetImpl()->ProceedToState(context, intToState(state)); -} -KOALA_INTEROP_2(ProceedToState, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_ContextProgram(KNativePointer contextPtr) { - auto context = reinterpret_cast(contextPtr); - return GetImpl()->ContextProgram(context); -} -KOALA_INTEROP_1(ContextProgram, KNativePointer, KNativePointer) - -KNativePointer impl_ProgramAst(KNativePointer programPtr) { - auto program = reinterpret_cast(programPtr); - return GetImpl()->ProgramAst(program); -} -KOALA_INTEROP_1(ProgramAst, KNativePointer, KNativePointer) - -KBoolean impl_IsIdentifier(KNativePointer nodePtr) { - auto node = reinterpret_cast(nodePtr); - return GetImpl()->IsIdentifier(node); -} -KOALA_INTEROP_1(IsIdentifier, KBoolean, KNativePointer) - -KNativePointer impl_IdentifierName(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return new string(GetImpl()->IdentifierName(context, node)); -} -KOALA_INTEROP_2(IdentifierName, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateIdentifier1(KNativePointer contextPtr, KStringPtr& namePtr) { - auto context = reinterpret_cast(contextPtr); - return GetImpl()->CreateIdentifier1(context, getStringCopy(namePtr)); -} -KOALA_INTEROP_2(CreateIdentifier1, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_IdentifierSetName(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - GetImpl()->IdentifierSetName(context, node, getStringCopy(namePtr)); - return node; -} -KOALA_INTEROP_3(IdentifierSetName, KNativePointer, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_CreateIdentifier2(KNativePointer contextPtr, KStringPtr& namePtr, KNativePointer typeAnnotationPtr) { - auto context = reinterpret_cast(contextPtr); - auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); - return GetImpl()->CreateIdentifier2(context, getStringCopy(namePtr), typeAnnotation); -} -KOALA_INTEROP_3(CreateIdentifier2, KNativePointer, KNativePointer, KStringPtr, KNativePointer) - -KNativePointer impl_CreateETSPrimitiveType(KNativePointer contextPtr, KInt type) { - auto context = reinterpret_cast(contextPtr); - return GetImpl()->CreateETSPrimitiveType(context, static_cast(type)); -} -KOALA_INTEROP_2(CreateETSPrimitiveType, KNativePointer, KNativePointer, KInt) - -KInt impl_ETSPrimitiveTypeGetPrimitiveTypeConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ETSPrimitiveTypeGetPrimitiveTypeConst(context, node); -} -KOALA_INTEROP_2(ETSPrimitiveTypeGetPrimitiveTypeConst, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSFunctionTypeIr(KNativePointer contextPtr, KNativePointer signaturePtr, KInt funcFlagsT) { - auto context = reinterpret_cast(contextPtr); - auto signature = reinterpret_cast(signaturePtr); - auto funcFlags = Es2pandaScriptFunctionFlags(funcFlagsT); - - return GetImpl()->CreateETSFunctionTypeIr(context, signature, funcFlags); -} -KOALA_INTEROP_3(CreateETSFunctionTypeIr, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_CreateNumberLiteral(KNativePointer contextPtr, KDouble value) { - auto context = reinterpret_cast(contextPtr); - - return GetImpl()->CreateNumberLiteral(context, value); -} -KOALA_INTEROP_2(CreateNumberLiteral, KNativePointer, KNativePointer, KDouble) - -KNativePointer impl_CreateStringLiteral(KNativePointer contextPtr, KStringPtr& stringPtr) { - auto context = reinterpret_cast(contextPtr); - return GetImpl()->CreateStringLiteral1(context, getStringCopy(stringPtr)); -} -KOALA_INTEROP_2(CreateStringLiteral, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_StringLiteralStrConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return new string(GetImpl()->StringLiteralStrConst(context, node)); -} -KOALA_INTEROP_2(StringLiteralStrConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_NumberLiteralStrConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return new string(GetImpl()->NumberLiteralStrConst(context, node)); -} -KOALA_INTEROP_2(NumberLiteralStrConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateMethodDefinition( - KNativePointer contextPtr, - KInt kindT, - KNativePointer keyPtr, - KNativePointer valuePtr, - KInt modifiersT, - KBoolean isComputedT -) { - auto context = reinterpret_cast(contextPtr); - auto kind = static_cast(kindT); - auto key = reinterpret_cast(keyPtr); - auto value = reinterpret_cast(valuePtr); - auto modifiers = static_cast(modifiersT); - auto isComputed = static_cast(isComputedT); - - return GetImpl()->CreateMethodDefinition(context, kind, key, value, modifiers, isComputed); -} -KOALA_INTEROP_6(CreateMethodDefinition, KNativePointer, KNativePointer, KInt, KNativePointer, KNativePointer, KInt, KBoolean) - -KNativePointer impl_CreateClassProperty( - KNativePointer contextPtr, - KNativePointer keyPtr, - KNativePointer valuePtr, - KNativePointer typeAnnotationPtr, - KInt modifiersT, - KBoolean isComputedT -) { - auto context = reinterpret_cast(contextPtr); - auto key = reinterpret_cast(keyPtr); - auto value = reinterpret_cast(valuePtr); - auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); - auto modifiers = static_cast(modifiersT); - auto isComputed = static_cast(isComputedT); - - return GetImpl()->CreateClassProperty(context, key, value, typeAnnotation, modifiers, isComputed); -} -KOALA_INTEROP_6(CreateClassProperty, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean) - -KNativePointer impl_AstNodeDumpJsonConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return new string(GetImpl()->AstNodeDumpJSONConst(context, node)); -} -KOALA_INTEROP_2(AstNodeDumpJsonConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeDumpEtsSrcConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return new string(GetImpl()->AstNodeDumpEtsSrcConst(context, node)); -} -KOALA_INTEROP_2(AstNodeDumpEtsSrcConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ETSParserCreateExpression(KNativePointer contextPtr, KStringPtr& sourceCodePtr, KInt flagsT) { - auto context = reinterpret_cast(contextPtr); - auto flags = static_cast(flagsT); - - return GetImpl()->ETSParserCreateExpression(context, getStringCopy(sourceCodePtr), flags); -} -KOALA_INTEROP_3(ETSParserCreateExpression, KNativePointer, KNativePointer, KStringPtr, KInt) - -KBoolean impl_IsProgram(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->AstNodeIsProgramConst(context, node); -} -KOALA_INTEROP_2(IsProgram, KBoolean, KNativePointer, KNativePointer) - -KBoolean impl_IsBlockStatement(KNativePointer nodePtr) { - auto node = reinterpret_cast(nodePtr); - return GetImpl()->IsBlockStatement(node); -} -KOALA_INTEROP_1(IsBlockStatement, KBoolean, KNativePointer) - -KNativePointer impl_BlockStatementStatements(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - size_t n; - auto statements = GetImpl()->BlockStatementStatements(context, node, &n); - return new vector(statements, statements + n); -} -KOALA_INTEROP_2(BlockStatementStatements, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_VariableDeclarationDeclaratorsConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - size_t n; - auto declarators = GetImpl()->VariableDeclarationDeclaratorsConst(context, node, &n); - return new vector(declarators, declarators + n); -} -KOALA_INTEROP_2(VariableDeclarationDeclaratorsConst, KNativePointer, KNativePointer, KNativePointer) - -KInt impl_VariableDeclarationKindConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->VariableDeclarationKindConst(context, node); -} -KOALA_INTEROP_2(VariableDeclarationKindConst, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDeclarationDefinition(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->ClassDeclarationDefinition(context, node); -} -KOALA_INTEROP_2(ClassDeclarationDefinition, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDefinitionBody(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - size_t n; - auto body = GetImpl()->ClassDefinitionBody(context, node, &n); - return new std::vector(body, body + n); -} -KOALA_INTEROP_2(ClassDefinitionBody, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDefinitionTypeParamsConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return const_cast(GetImpl()->ClassDefinitionTypeParamsConst(context, node)); -} -KOALA_INTEROP_2(ClassDefinitionTypeParamsConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_FunctionDeclarationFunction(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->FunctionDeclarationFunction(context, node); -} -KOALA_INTEROP_2(FunctionDeclarationFunction, KNativePointer, KNativePointer, KNativePointer) - -KBoolean impl_FunctionDeclarationIsAnonymousConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->FunctionDeclarationIsAnonymousConst(context, node); -} -KOALA_INTEROP_2(FunctionDeclarationIsAnonymousConst, KBoolean, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionAddFlag(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto flags = static_cast(flagsT); - - GetImpl()->ScriptFunctionAddFlag(context, node, flags); - return node; -} -KOALA_INTEROP_3(ScriptFunctionAddFlag, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_ScriptFunctionParams(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->ScriptFunctionParams(context, node, ¶ms_len); - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_2(ScriptFunctionParams, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionTypeParams(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionTypeParams(context, node); -} -KOALA_INTEROP_2(ScriptFunctionTypeParams, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionReturnTypeAnnotation(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionReturnTypeAnnotation(context, node); -} -KOALA_INTEROP_2(ScriptFunctionReturnTypeAnnotation, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionId(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->ScriptFunctionId(context, node); -} -KOALA_INTEROP_2(ScriptFunctionId, KNativePointer, KNativePointer, KNativePointer) - -// KBoolean impl_ScriptFunctionDeclareConst(KNativePointer contextPtr, KNativePointer nodePtr) { -// auto context = reinterpret_cast(contextPtr); -// auto node = reinterpret_cast(nodePtr); -// return GetImpl()->ScriptFunctionDeclareConst(context, node); -// } -// KOALA_INTEROP_2(ScriptFunctionDeclareConst, KBoolean, KNativePointer, KNativePointer) - -KNativePointer impl_CreateFunctionDeclaration( - KNativePointer contextPtr, - KNativePointer funcPtr, - KNativePointerArray annotationsPtr, - KInt annotationsLen, - KBoolean isAnonK -) { - auto context = reinterpret_cast(contextPtr); - auto func = reinterpret_cast(funcPtr); - auto annotations = reinterpret_cast(annotationsPtr); - auto isAnon = static_cast(isAnonK); - - return GetImpl()->CreateFunctionDeclaration(context, func, annotations, annotationsLen, isAnon); -} -KOALA_INTEROP_5(CreateFunctionDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KBoolean) - -KNativePointer impl_UpdateFunctionDeclaration( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointer funcPtr, - KNativePointerArray annotationsPtr, - KInt annotationsLen, - KBoolean isAnonK -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto func = reinterpret_cast(funcPtr); - auto annotations = reinterpret_cast(annotationsPtr); - auto isAnon = static_cast(isAnonK); - - return GetImpl()->UpdateFunctionDeclaration(context, node, func, annotations, annotationsLen, isAnon); -} -KOALA_INTEROP_6(UpdateFunctionDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KBoolean) - -// TODO: add param initializer -KNativePointer impl_CreateETSParameterExpression(KNativePointer contextPtr, KNativePointer identifierPtr, KNativePointer initializerPtr) { - auto context = reinterpret_cast(contextPtr); - auto identifier = reinterpret_cast(identifierPtr); - auto initializer = reinterpret_cast(initializerPtr); - - return GetImpl()->CreateETSParameterExpression(context, identifier, initializer); -} -KOALA_INTEROP_3(CreateETSParameterExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateTSTypeParameterDeclaration( - KNativePointer contextPtr, - KNativePointerArray paramsPtr, - KInt paramsLen, - KInt requiredParams -) { - auto context = reinterpret_cast(contextPtr); - auto params = reinterpret_cast(paramsPtr); - - return GetImpl()->CreateTSTypeParameterDeclaration(context, params, paramsLen, requiredParams); -} -KOALA_INTEROP_4(CreateTSTypeParameterDeclaration, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt) - -KNativePointer impl_TSTypeParameterDeclarationParamsConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->TSTypeParameterDeclarationParamsConst(context, node, ¶ms_len); - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_3(TSTypeParameterDeclarationParamsConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateVariableDeclaration( - KNativePointer contextPtr, - KInt kindT, - KNativePointerArray declaratorsPtr, - KInt declaratorsLen -) { - auto context = reinterpret_cast(contextPtr); - auto kind = static_cast(kindT); - auto declarators = reinterpret_cast(declaratorsPtr); - - return GetImpl()->CreateVariableDeclaration(context, kind, declarators, declaratorsLen); -} -KOALA_INTEROP_4(CreateVariableDeclaration, KNativePointer, KNativePointer, KInt, KNativePointerArray, KInt) - -KNativePointer impl_UpdateVariableDeclaration( - KNativePointer contextPtr, - KNativePointer originalPtr, - KInt kindT, - KNativePointerArray declaratorsPtr, - KInt declaratorsLen -) { - auto context = reinterpret_cast(contextPtr); - auto original = reinterpret_cast(originalPtr); - auto kind = static_cast(kindT); - auto declarators = reinterpret_cast(declaratorsPtr); - - return GetImpl()->UpdateVariableDeclaration(context, original, kind, declarators, declaratorsLen); -} -KOALA_INTEROP_5(UpdateVariableDeclaration, KNativePointer, KNativePointer, KNativePointer, KInt, KNativePointerArray, KInt) - -KNativePointer impl_CreateVariableDeclarator( - KNativePointer contextPtr, - KInt flagT, - KNativePointer identPtr -) { - auto context = reinterpret_cast(contextPtr); - auto flag = static_cast(flagT); - auto ident = reinterpret_cast(identPtr); - - return GetImpl()->CreateVariableDeclarator(context, flag, ident); -} -KOALA_INTEROP_3(CreateVariableDeclarator, KNativePointer, KNativePointer, KInt, KNativePointer) - -KNativePointer impl_VariableDeclaratorSetInit(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer initPtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto init = reinterpret_cast(initPtr); - - GetImpl()->VariableDeclaratorSetInit(context, node, init); - return node; -} -KOALA_INTEROP_3(VariableDeclaratorSetInit, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_VariableDeclaratorId(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->VariableDeclaratorId(context, node); -} -KOALA_INTEROP_2(VariableDeclaratorId, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateTSTypeParameter( - KNativePointer contextPtr, - KNativePointer namePtr, - KNativePointer constraintPtr, - KNativePointer defaultTypePtr -) { - auto context = reinterpret_cast(contextPtr); - auto name = reinterpret_cast(namePtr); - auto constraint = reinterpret_cast(constraintPtr); - auto defaultType = reinterpret_cast(defaultTypePtr); - - return GetImpl()->CreateTSTypeParameter(context, name, constraint, defaultType); -} -KOALA_INTEROP_4(CreateTSTypeParameter, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_TSTypeParameterName(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->TSTypeParameterName(context, node); -} -KOALA_INTEROP_2(TSTypeParameterName, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ETSParameterExpressionIdent(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ETSParameterExpressionIdent(context, node); -} -KOALA_INTEROP_2(ETSParameterExpressionIdent, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSTypeReference(KNativePointer contextPtr, KNativePointer partPtr) { - auto context = reinterpret_cast(contextPtr); - auto part = reinterpret_cast(partPtr); - - return GetImpl()->CreateETSTypeReference(context, part); -} -KOALA_INTEROP_2(CreateETSTypeReference, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSTypeReferencePart1(KNativePointer contextPtr, KNativePointer namePtr) { - auto context = reinterpret_cast(contextPtr); - auto name = reinterpret_cast(namePtr); - - return GetImpl()->CreateETSTypeReferencePart1(context, name); -} -KOALA_INTEROP_2(CreateETSTypeReferencePart1, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSTypeReferencePart(KNativePointer contextPtr, KNativePointer namePtr, KNativePointer typeParamsPtr, KNativePointer prevPtr) { - auto context = reinterpret_cast(contextPtr); - auto name = reinterpret_cast(namePtr); - auto typeParams = reinterpret_cast(typeParamsPtr); - auto prev = reinterpret_cast(prevPtr); - - return GetImpl()->CreateETSTypeReferencePart(context, name, typeParams, prev); -} -KOALA_INTEROP_4(CreateETSTypeReferencePart, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateBlockStatement(KNativePointer contextPtr, KNativePointer originalPtr, KNativePointerArray statementListPtr, KInt statementListLen) { - auto context = reinterpret_cast(contextPtr); - auto statementList = reinterpret_cast(statementListPtr); - auto original = reinterpret_cast(originalPtr); - - // tmp solution while waiting fix for UpdateBlockStatement - GetImpl()->BlockStatementSetStatements(context, original, statementList, static_cast(statementListLen)); - return original; -} -KOALA_INTEROP_4(UpdateBlockStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt) - -KNativePointer impl_CreateReturnStatement1(KNativePointer contextPtr, KNativePointer argumentPtr) { - auto context = reinterpret_cast(contextPtr); - auto argument = reinterpret_cast(argumentPtr); - - return GetImpl()->CreateReturnStatement1(context, argument); -} -KOALA_INTEROP_2(CreateReturnStatement1, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ReturnStatementArgument(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ReturnStatementArgument(context, node); -} -KOALA_INTEROP_2(ReturnStatementArgument, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateIfStatement(KNativePointer contextPtr, KNativePointer testPtr, KNativePointer consequentPtr, KNativePointer alternatePtr) { - auto context = reinterpret_cast(contextPtr); - auto test = reinterpret_cast(testPtr); - auto consequent = reinterpret_cast(consequentPtr); - auto alternate = reinterpret_cast(alternatePtr); - - return GetImpl()->CreateIfStatement(context, test, consequent, alternate); -} -KOALA_INTEROP_4(CreateIfStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateMemberExpression( - KNativePointer contextPtr, - KNativePointer objectPtr, - KNativePointer propertyPtr, - KInt kindT, - KBoolean computedT, - KBoolean optionalT -) { - auto context = reinterpret_cast(contextPtr); - auto object = reinterpret_cast(objectPtr); - auto property = reinterpret_cast(propertyPtr); - auto computed = static_cast(computedT); - auto optional = static_cast(optionalT); - auto kind = static_cast(kindT); - - return GetImpl()->CreateMemberExpression(context, object, property, kind, computed, optional); -} -KOALA_INTEROP_6(CreateMemberExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean, KBoolean) - -KNativePointer impl_UpdateMemberExpression( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointer objectPtr, - KNativePointer propertyPtr, - KInt kindT, - KBoolean computedT, - KBoolean optionalT -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto object = reinterpret_cast(objectPtr); - auto property = reinterpret_cast(propertyPtr); - auto computed = static_cast(computedT); - auto optional = static_cast(optionalT); - auto kind = static_cast(kindT); - - return GetImpl()->UpdateMemberExpression(context, node, object, property, kind, computed, optional); -} -KOALA_INTEROP_7(UpdateMemberExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean, KBoolean) - -KNativePointer impl_UpdateMethodDefinition( - KNativePointer contextPtr, - KNativePointer nodePtr, - KInt kindT, - KNativePointer keyPtr, - KNativePointer valuePtr, - KInt modifiersT, - KBoolean isComputedT -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto kind = static_cast(kindT); - auto key = reinterpret_cast(keyPtr); - auto value = reinterpret_cast(valuePtr); - auto modifiers = static_cast(modifiersT); - auto isComputed = static_cast(isComputedT); - - return GetImpl()->UpdateMethodDefinition(context, node, kind, key, value, modifiers, isComputed); -} -KOALA_INTEROP_7(UpdateMethodDefinition, KNativePointer, KNativePointer, KNativePointer, KInt, KNativePointer, KNativePointer, KInt, KBoolean) - -KNativePointer impl_MemberExpressionObject( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->MemberExpressionObject(context, node); -} -KOALA_INTEROP_2(MemberExpressionObject, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_MemberExpressionProperty( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->MemberExpressionProperty(context, node); -} -KOALA_INTEROP_2(MemberExpressionProperty, KNativePointer, KNativePointer, KNativePointer) - -KInt impl_MemberExpressionKindConst( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->MemberExpressionKindConst(context, node); -} -KOALA_INTEROP_2(MemberExpressionKindConst, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_CreateCallExpression( - KNativePointer contextPtr, - KNativePointer calleePtr, - KNativePointerArray argumentsPtr, - KInt argumentsLen, - KNativePointer typeParamsPtr, - KBoolean optionalT, - KBoolean trailingCommaT -) { - auto context = reinterpret_cast(contextPtr); - auto callee = reinterpret_cast(calleePtr); - auto arguments = reinterpret_cast(argumentsPtr); - auto typeParams = reinterpret_cast(typeParamsPtr); - auto optional = static_cast(optionalT); - auto trailingComma = static_cast(trailingCommaT); - - return GetImpl()->CreateCallExpression(context, callee, arguments, argumentsLen, typeParams, optional, trailingComma); -} -KOALA_INTEROP_7(CreateCallExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean, KBoolean) - -KNativePointer impl_UpdateCallExpression( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointer calleePtr, - KNativePointerArray argumentsPtr, - KInt argumentsLen, - KNativePointer typeParamsPtr, - KBoolean optionalT, - KBoolean trailingCommaT -) { - auto node = reinterpret_cast(nodePtr); - auto context = reinterpret_cast(contextPtr); - auto callee = reinterpret_cast(calleePtr); - auto arguments = reinterpret_cast(argumentsPtr); - auto typeParams = reinterpret_cast(typeParamsPtr); - auto optional = static_cast(optionalT); - auto trailingComma = static_cast(trailingCommaT); - - // auto nn = GetImpl()->UpdateCallExpression(context, node, callee, arguments, argumentsLen, typeParams, optional, trailingComma); - auto nn = GetImpl()->CreateCallExpression(context, callee, arguments, argumentsLen, typeParams, optional, trailingComma); - GetImpl()->AstNodeSetOriginalNode(context, nn, node); - return nn; -} -KOALA_INTEROP_8(UpdateCallExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean, KBoolean) - -KNativePointer impl_CreateExpressionStatement(KNativePointer contextPtr, KNativePointer exprPtr) { - auto context = reinterpret_cast(contextPtr); - auto expr = reinterpret_cast(exprPtr); - - return GetImpl()->CreateExpressionStatement(context, expr); -} -KOALA_INTEROP_2(CreateExpressionStatement, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateExpressionStatement(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer exprPtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto expr = reinterpret_cast(exprPtr); - - return GetImpl()->UpdateExpressionStatement(context, node, expr); -} -KOALA_INTEROP_3(UpdateExpressionStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionBody(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionBody(context, node); -} -KOALA_INTEROP_2(ScriptFunctionBody, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateBinaryExpression(KNativePointer contextPtr, KNativePointer leftPtr, KNativePointer rightPtr, KInt tokenKind) { - auto context = reinterpret_cast(contextPtr); - auto left = reinterpret_cast(leftPtr); - auto right = reinterpret_cast(rightPtr); - - return GetImpl()->CreateBinaryExpression(context, left, right, Es2pandaTokenType(tokenKind)); -} -KOALA_INTEROP_4(CreateBinaryExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_CreateAssignmentExpression(KNativePointer contextPtr, KNativePointer leftPtr, KNativePointer rightPtr, KInt assignmentOperator) { - auto context = reinterpret_cast(contextPtr); - auto left = reinterpret_cast(leftPtr); - auto right = reinterpret_cast(rightPtr); - - return GetImpl()->CreateAssignmentExpression(context, left, right, Es2pandaTokenType(assignmentOperator)); -} -KOALA_INTEROP_4(CreateAssignmentExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_CreateFunctionSignature( - KNativePointer contextPtr, - KNativePointer typeParamsPtr, - KNativePointerArray paramsPtr, - KInt paramsLen, - KNativePointer returnTypeAnnotationPtr, - KBoolean hasReceiver -) { - auto context = reinterpret_cast(contextPtr); - auto typeParams = reinterpret_cast(typeParamsPtr); - auto params = reinterpret_cast(paramsPtr); - auto returnTypeAnnotation = reinterpret_cast(returnTypeAnnotationPtr); - - return GetImpl()->CreateFunctionSignature(context, typeParams, params, paramsLen, returnTypeAnnotation, hasReceiver); -} -KOALA_INTEROP_6(CreateFunctionSignature, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean) - -KNativePointer impl_CreateTSUnionType( - KNativePointer contextPtr, - KNativePointerArray typesPtr, - KInt typesLen -) { - auto context = reinterpret_cast(contextPtr); - auto types = reinterpret_cast(typesPtr); - - return GetImpl()->CreateTSUnionType(context, types, typesLen); -} -KOALA_INTEROP_3(CreateTSUnionType, KNativePointer, KNativePointer, KNativePointerArray, KInt) - -KNativePointer impl_TSUnionTypeTypesConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->TSUnionTypeTypesConst(context, node, ¶ms_len); - - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_3(TSUnionTypeTypesConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSUnionTypeIr( - KNativePointer contextPtr, - KNativePointerArray typesPtr, - KInt typesLen -) { - auto context = reinterpret_cast(contextPtr); - auto types = reinterpret_cast(typesPtr); - - return GetImpl()->CreateETSUnionTypeIr(context, types, typesLen); -} -KOALA_INTEROP_3(CreateETSUnionTypeIr, KNativePointer, KNativePointer, KNativePointerArray, KInt) - -KNativePointer impl_ETSUnionTypeIrTypesConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->ETSUnionTypeIrTypesConst(context, node, ¶ms_len); - - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_3(ETSUnionTypeIrTypesConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateScriptFunction( - KNativePointer contextPtr, - KNativePointer databodyPtr, - KNativePointer datasignaturePtr, - KInt datafuncFlags, - KInt dataFlags -) { - auto context = reinterpret_cast(contextPtr); - auto databody = reinterpret_cast(databodyPtr); - auto datasignature = reinterpret_cast(datasignaturePtr); - - return GetImpl()->CreateScriptFunction(context, databody, datasignature, datafuncFlags, dataFlags); -} -KOALA_INTEROP_5(CreateScriptFunction, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KInt) - -KNativePointer impl_UpdateScriptFunction( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointer databodyPtr, - KNativePointer datasignaturePtr, - KInt datafuncFlags, - KInt dataFlags -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto databody = reinterpret_cast(databodyPtr); - auto datasignature = reinterpret_cast(datasignaturePtr); - - return GetImpl()->UpdateScriptFunction(context, node, databody, datasignature, datafuncFlags, dataFlags); -} -KOALA_INTEROP_6(UpdateScriptFunction, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KInt) - -KNativePointer impl_CreateBlockStatement( - KNativePointer contextPtr, - KNativePointerArray statementListPtr, - KInt statementListLen -) { - auto context = reinterpret_cast(contextPtr); - auto statementList = reinterpret_cast(statementListPtr); - - return GetImpl()->CreateBlockStatement(context, statementList, statementListLen); -} -KOALA_INTEROP_3(CreateBlockStatement, KNativePointer, KNativePointer, KNativePointerArray, KInt) - -KNativePointer impl_CreateAstDumper( - KNativePointer contextPtr, - KNativePointer nodePtr, - KStringPtr& sourcePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->CreateAstDumper(context, node, getStringCopy(sourcePtr)); -} -KOALA_INTEROP_3(CreateAstDumper, KNativePointer, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_AstDumperModifierToString( - KNativePointer contextPtr, - KNativePointer dumperPtr, - KInt flagsT -) { - auto context = reinterpret_cast(contextPtr); - auto dumper = reinterpret_cast(dumperPtr); - auto flags = static_cast(flagsT); - - return new std::string(GetImpl()->AstDumperModifierToString(context, dumper, flags)); -} -KOALA_INTEROP_3(AstDumperModifierToString, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_MethodDefinitionFunction( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->MethodDefinitionFunction(context, node); -} -KOALA_INTEROP_2(MethodDefinitionFunction, KNativePointer, KNativePointer, KNativePointer) - -KInt impl_MethodDefinitionKindConst( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->MethodDefinitionKindConst(context, node); -} -KOALA_INTEROP_2(MethodDefinitionKindConst, KInt, KNativePointer, KNativePointer) - - -KNativePointer impl_AstNodeSetParent( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer parentPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto parent = reinterpret_cast(parentPtr); - - GetImpl()->AstNodeSetParent(context, ast, parent); - return ast; -} -KOALA_INTEROP_3(AstNodeSetParent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeSetOriginalNode( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer originalNodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto originalNode = reinterpret_cast(originalNodePtr); - - GetImpl()->AstNodeSetOriginalNode(context, ast, originalNode); - return ast; -} -KOALA_INTEROP_3(AstNodeSetOriginalNode, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeOriginalNodeConst( - KNativePointer contextPtr, - KNativePointer astPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - - return GetImpl()->AstNodeOriginalNodeConst(context, ast); -} -KOALA_INTEROP_2(AstNodeOriginalNodeConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeClone( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer parentPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto parent = reinterpret_cast(parentPtr); - - return GetImpl()->AstNodeClone(context, ast, parent); -} -KOALA_INTEROP_3(AstNodeClone, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionSetIdent( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer idPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto id = reinterpret_cast(idPtr); - - GetImpl()->ScriptFunctionSetIdent(context, ast, id); - return ast; -} -KOALA_INTEROP_3(ScriptFunctionSetIdent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionSetSignature( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer signaturePtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto signature = reinterpret_cast(signaturePtr); - - GetImpl()->ScriptFunctionSetSignature(context, ast, signature); - return ast; -} -KOALA_INTEROP_3(ScriptFunctionSetSignature, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionSetBody( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer bodyPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto body = reinterpret_cast(bodyPtr); - - GetImpl()->ScriptFunctionSetBody(context, ast, body); - return ast; -} -KOALA_INTEROP_3(ScriptFunctionSetBody, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionSetScope( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer scopePtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto scope = reinterpret_cast(scopePtr); - - GetImpl()->ScriptFunctionSetScope(context, ast, scope); - return ast; -} -KOALA_INTEROP_3(ScriptFunctionSetScope, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionSignature(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionSignature(context, node); -} -KOALA_INTEROP_2(ScriptFunctionSignature, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScriptFunctionIrSignature(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionIrSignature(context, node); -} -KOALA_INTEROP_2(ScriptFunctionIrSignature, KNativePointer, KNativePointer, KNativePointer) - -KInt impl_ScriptFunctionFlagsConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ScriptFunctionFlagsConst(context, node); -} -KOALA_INTEROP_2(ScriptFunctionFlagsConst, KInt, KNativePointer, KNativePointer) - -KInt impl_AstNodeModifiers(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->AstNodeModifiers(context, node); -} -KOALA_INTEROP_2(AstNodeModifiers, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeAddModifier(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto flags = static_cast(flagsT); - - GetImpl()->AstNodeAddModifier(context, node, flags); - return node; -} -KOALA_INTEROP_3(AstNodeAddModifier, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_AstNodeClearModifier(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto flags = static_cast(flagsT); - - GetImpl()->AstNodeClearModifier(context, node, flags); - return node; -} -KOALA_INTEROP_3(AstNodeClearModifier, KNativePointer, KNativePointer, KNativePointer, KInt) - -KNativePointer impl_FunctionSignatureParamsConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnTypeLen) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->FunctionSignatureParamsConst(context, node, ¶ms_len); - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_3(FunctionSignatureParamsConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_FunctionSignatureTypeParams(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->FunctionSignatureTypeParams(context, node); -} -KOALA_INTEROP_2(FunctionSignatureTypeParams, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_FunctionSignatureReturnType(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->FunctionSignatureReturnType(context, node); -} -KOALA_INTEROP_2(FunctionSignatureReturnType, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateIdentifier1(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->UpdateIdentifier1(context, node, getStringCopy(namePtr)); -} -KOALA_INTEROP_3(UpdateIdentifier1, KNativePointer, KNativePointer, KNativePointer, KStringPtr) - -KNativePointer impl_UpdateIdentifier2(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr, KNativePointer typeAnnotationPtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); - - return GetImpl()->UpdateIdentifier2(context, node, getStringCopy(namePtr), typeAnnotation); -} -KOALA_INTEROP_4(UpdateIdentifier2, KNativePointer, KNativePointer, KNativePointer, KStringPtr, KNativePointer) - -KBoolean impl_IdentifierIsPrivateIdentConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->IdentifierIsPrivateIdentConst(context, node); -} -KOALA_INTEROP_2(IdentifierIsPrivateIdentConst, KBoolean, KNativePointer, KNativePointer) - -KInt impl_IdentifierIdentifierFlags(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return - (GetImpl()->IdentifierIsOptionalConst(context, node) ? (1 << 0) : 0) | - (GetImpl()->IdentifierIsReferenceConst(context, node) ? (1 << 1) : 0) | - (GetImpl()->IdentifierIsTdzConst(context, node) ? (1 << 2) : 0); -} -KOALA_INTEROP_2(IdentifierIdentifierFlags, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_CreateFunctionExpression(KNativePointer contextPtr, KNativePointer funcPtr) { - auto context = reinterpret_cast(contextPtr); - auto func = reinterpret_cast(funcPtr); - - return GetImpl()->CreateFunctionExpression(context, func); -} -KOALA_INTEROP_2(CreateFunctionExpression, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateFunctionExpression(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer funcPtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto func = reinterpret_cast(funcPtr); - - return GetImpl()->UpdateFunctionExpression(context, node, func); -} -KOALA_INTEROP_3(UpdateFunctionExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateArrowFunctionExpression(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->CreateArrowFunctionExpression(context, node); -} -KOALA_INTEROP_2(CreateArrowFunctionExpression, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ArrowFunctionExpressionFunction(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ArrowFunctionExpressionFunction(context, node); -} -KOALA_INTEROP_2(ArrowFunctionExpressionFunction, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ArrowFunctionExpressionCreateTypeAnnotation(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ArrowFunctionExpressionCreateTypeAnnotation(context, node); -} -KOALA_INTEROP_2(ArrowFunctionExpressionCreateTypeAnnotation, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_FunctionExpressionFunction(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->FunctionExpressionFunction(context, node); -} -KOALA_INTEROP_2(FunctionExpressionFunction, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ExpressionStatementGetExpression(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ExpressionStatementGetExpression(context, node); -} -KOALA_INTEROP_2(ExpressionStatementGetExpression, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CallExpressionArguments(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - std::size_t params_len = 0; - auto params = GetImpl()->CallExpressionArguments(context, node, ¶ms_len); - return new std::vector(params, params + params_len); -} -KOALA_INTEROP_3(CallExpressionArguments, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CallExpressionCallee(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->CallExpressionCallee(context, node); -} -KOALA_INTEROP_2(CallExpressionCallee, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeParent(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->AstNodeParent(context, node); -} -KOALA_INTEROP_2(AstNodeParent, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeVariableConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->AstNodeVariableConst(context, node); -} -KOALA_INTEROP_2(AstNodeVariableConst, KNativePointer, KNativePointer, KNativePointer) - -KInt impl_AstNodeTypeConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->AstNodeTypeConst(context, node); -} -KOALA_INTEROP_2(AstNodeTypeConst, KInt, KNativePointer, KNativePointer) - -KNativePointer impl_VariableDeclaration(KNativePointer contextPtr, KNativePointer variablePtr) { - auto context = reinterpret_cast(contextPtr); - auto variable = reinterpret_cast(variablePtr); - - return GetImpl()->VariableDeclaration(context, variable); -} -KOALA_INTEROP_2(VariableDeclaration, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_DeclNode(KNativePointer contextPtr, KNativePointer declPtr) { - auto context = reinterpret_cast(contextPtr); - auto decl = reinterpret_cast(declPtr); - - return GetImpl()->DeclNode(context, decl); -} -KOALA_INTEROP_2(DeclNode, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeScopeConst(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - return GetImpl()->AstNodeScopeConst(context, node); -} -KOALA_INTEROP_2(AstNodeScopeConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ScopeSetParent(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer parentPtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto parent = reinterpret_cast(parentPtr); - GetImpl()->ScopeSetParent(context, node, parent); - return node; -} -KOALA_INTEROP_3(ScopeSetParent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_BlockStatementSetStatements( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointerArray statementsPtr, - KInt statementsLen -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto statements = reinterpret_cast(statementsPtr); - - GetImpl()->BlockStatementSetStatements(context, node, statements, statementsLen); - return node; -} -KOALA_INTEROP_4(BlockStatementSetStatements, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt) - -KNativePointer impl_CreateClassDeclaration(KNativePointer contextPtr, KNativePointer defPtr) { - auto context = reinterpret_cast(contextPtr); - auto def = reinterpret_cast(defPtr); - - return GetImpl()->CreateClassDeclaration(context, def); -} -KOALA_INTEROP_2(CreateClassDeclaration, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateClassDeclaration(KNativePointer contextPtr, KNativePointer originalPtr, KNativePointer defPtr) { - auto context = reinterpret_cast(contextPtr); - auto original = reinterpret_cast(originalPtr); - auto def = reinterpret_cast(defPtr); - - return GetImpl()->UpdateClassDeclaration(context, original, def); -} -KOALA_INTEROP_3(UpdateClassDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDefinitionSetTypeParams( - KNativePointer contextPtr, - KNativePointer nodePtr, - KNativePointer typeParamsPtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - auto typeParams = reinterpret_cast(typeParamsPtr); - - GetImpl()->ClassDefinitionSetTypeParams(context, node, typeParams); - return node; -} -KOALA_INTEROP_3(ClassDefinitionSetTypeParams, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDefinitionSetSuper( - KNativePointer contextPtr, - KNativePointer astPtr, - KNativePointer superClassPtr -) { - auto context = reinterpret_cast(contextPtr); - auto ast = reinterpret_cast(astPtr); - auto superClass = reinterpret_cast(superClassPtr); - - GetImpl()->ClassDefinitionSetSuper(context, ast, superClass); - return ast; -} -KOALA_INTEROP_3(ClassDefinitionSetSuper, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ClassDefinitionIdent( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ClassDefinitionIdent(context, node); -} -KOALA_INTEROP_2(ClassDefinitionIdent, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateClassDefinition1( - KNativePointer contextPtr, - KNativePointer identPtr, - KNativePointerArray bodyPtr, - KInt bodyLenT, - KInt modifiersT, - KInt flagsT -) { - auto context = reinterpret_cast(contextPtr); - auto ident = reinterpret_cast(identPtr); - auto body = reinterpret_cast(bodyPtr); - auto bodyLen = static_cast(bodyLenT); - auto modifiers = Es2pandaClassDefinitionModifiers(modifiersT); - auto flags = Es2pandaModifierFlags(flagsT); - - return GetImpl()->CreateClassDefinition1(context, ident, body, bodyLen, modifiers, flags); -} -KOALA_INTEROP_6(CreateClassDefinition1, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt, KInt) - -KNativePointer impl_UpdateClassDefinition1( - KNativePointer contextPtr, - KNativePointer originalPtr, - KNativePointer identPtr, - KNativePointerArray bodyPtr, - KInt bodyLenT, - KInt modifiersT, - KInt flagsT -) { - auto context = reinterpret_cast(contextPtr); - auto original = reinterpret_cast(originalPtr); - auto ident = reinterpret_cast(identPtr); - auto body = reinterpret_cast(bodyPtr); - auto bodyLen = static_cast(bodyLenT); - auto modifiers = Es2pandaClassDefinitionModifiers(modifiersT); - auto flags = Es2pandaModifierFlags(flagsT); - - return GetImpl()->UpdateClassDefinition1(context, original, ident, body, bodyLen, modifiers, flags); -} -KOALA_INTEROP_7(UpdateClassDefinition1, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt, KInt) - -KNativePointer impl_CreateSuperExpression(KNativePointer contextPtr) { - auto context = reinterpret_cast(contextPtr); - - return GetImpl()->CreateSuperExpression(context); -} -KOALA_INTEROP_1(CreateSuperExpression, KNativePointer, KNativePointer) - -KNativePointer impl_UpdateSuperExpression(KNativePointer contextPtr, KNativePointer originalPtr) { - auto context = reinterpret_cast(contextPtr); - auto original = reinterpret_cast(originalPtr); - - return GetImpl()->UpdateSuperExpression(context, original); -} -KOALA_INTEROP_2(UpdateSuperExpression, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_CreateETSImportDeclaration( - KNativePointer contextPtr, - KNativePointer sourcePtr, - KNativePointerArray specifiersPtr, - KInt specifiersLen, - KInt importKindT -) { - auto context = reinterpret_cast(contextPtr); - auto source = reinterpret_cast(sourcePtr); - auto specifiers = reinterpret_cast(specifiersPtr); - auto importKind = static_cast(importKindT); - - return GetImpl()->CreateETSImportDeclaration(context, source, specifiers, specifiersLen, importKind); -} -KOALA_INTEROP_5(CreateETSImportDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt) - -KNativePointer impl_ETSImportDeclarationSourceConst( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ETSImportDeclarationSourceConst(context, node); -} -KOALA_INTEROP_2(ETSImportDeclarationSourceConst, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_ETSImportDeclarationResolvedSource( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ETSImportDeclarationResolvedSource(context, node); -} -KOALA_INTEROP_2(ETSImportDeclarationResolvedSource, KNativePointer, KNativePointer, KNativePointer) - -KBoolean impl_ETSImportDeclarationHasDeclConst( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - - return GetImpl()->ETSImportDeclarationHasDeclConst(context, node); -} -KOALA_INTEROP_2(ETSImportDeclarationHasDeclConst, KBoolean, KNativePointer, KNativePointer) - -KNativePointer impl_CreateImportSource( - KNativePointer contextPtr, - KNativePointer sourcePtr, - KNativePointer resolvedSourcePtr, - KBoolean hasDeclT -) { - auto context = reinterpret_cast(contextPtr); - auto source = reinterpret_cast(sourcePtr); - auto resolvedSource = reinterpret_cast(resolvedSourcePtr); - auto hasDecl = static_cast(hasDeclT); - - return GetImpl()->CreateImportSource(context, source, resolvedSource, hasDecl); -} -KOALA_INTEROP_4(CreateImportSource, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KBoolean) - -KNativePointer impl_CreateImportSpecifier( - KNativePointer contextPtr, - KNativePointer importedPtr, - KNativePointer localPtr -) { - auto context = reinterpret_cast(contextPtr); - auto imported = reinterpret_cast(importedPtr); - auto local = reinterpret_cast(localPtr); - - return GetImpl()->CreateImportSpecifier(context, imported, local); -} -KOALA_INTEROP_3(CreateImportSpecifier, KNativePointer, KNativePointer, KNativePointer, KNativePointer) - - -/* -TODO: NOT FROM API (shouldn't be there) ------------------------------------------------------------------------------------------------------------------------------ -*/ - -es2panda_AstNode * __parentNode; -es2panda_Context * __context; - -static void changeParent(es2panda_AstNode *child) -{ - GetImpl()->AstNodeSetParent(__context, child, __parentNode); -} - -static void SetRightParent(es2panda_AstNode *node, void *arg) -{ - es2panda_Context *ctx = static_cast(arg); - __context = ctx; - __parentNode = node; - - GetImpl()->AstNodeIterateConst(ctx, node, changeParent); -} - -KNativePointer impl_AstNodeUpdateAll(KNativePointer contextPtr, KNativePointer programPtr) { - auto context = reinterpret_cast(contextPtr); - auto program = reinterpret_cast(programPtr); - - GetImpl()->AstNodeForEach(program, SetRightParent, context); - return program; -} -KOALA_INTEROP_2(AstNodeUpdateAll, KNativePointer, KNativePointer, KNativePointer) - -KNativePointer impl_AstNodeUpdateChildren(KNativePointer contextPtr, KNativePointer nodePtr) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - __parentNode = node; - - GetImpl()->AstNodeIterateConst(context, node, changeParent); - return node; -} -KOALA_INTEROP_2(AstNodeUpdateChildren, KNativePointer, KNativePointer, KNativePointer) - -std::vector __children; - -static void visitChild(es2panda_AstNode *node) { - __children.emplace_back(node); -} - -KNativePointer impl_AstNodeChildren( - KNativePointer contextPtr, - KNativePointer nodePtr -) { - auto context = reinterpret_cast(contextPtr); - auto node = reinterpret_cast(nodePtr); - __context = context; - __children.clear(); - - GetImpl()->AstNodeIterateConst(context, node, visitChild); - return new std::vector(__children); -} -KOALA_INTEROP_2(AstNodeChildren, KNativePointer, KNativePointer, KNativePointer) - -/* ------------------------------------------------------------------------------------------------------------------------------ -*/ +#include "common.h" + +KNativePointer impl_CallExpressionCallee(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->CallExpressionCallee(context, node); +} +KOALA_INTEROP_2(CallExpressionCallee, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeParent(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->AstNodeParent(context, node); +} +KOALA_INTEROP_2(AstNodeParent, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeVariableConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->AstNodeVariableConst(context, node); +} +KOALA_INTEROP_2(AstNodeVariableConst, KNativePointer, KNativePointer, KNativePointer) + +KInt impl_AstNodeTypeConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->AstNodeTypeConst(context, node); +} +KOALA_INTEROP_2(AstNodeTypeConst, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_VariableDeclaration(KNativePointer contextPtr, KNativePointer variablePtr) { + auto context = reinterpret_cast(contextPtr); + auto variable = reinterpret_cast(variablePtr); + + return GetImpl()->VariableDeclaration(context, variable); +} +KOALA_INTEROP_2(VariableDeclaration, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_DeclNode(KNativePointer contextPtr, KNativePointer declPtr) { + auto context = reinterpret_cast(contextPtr); + auto decl = reinterpret_cast(declPtr); + + return GetImpl()->DeclNode(context, decl); +} +KOALA_INTEROP_2(DeclNode, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeScopeConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->AstNodeScopeConst(context, node); +} +KOALA_INTEROP_2(AstNodeScopeConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScopeSetParent(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer parentPtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto parent = reinterpret_cast(parentPtr); + GetImpl()->ScopeSetParent(context, node, parent); + return node; +} +KOALA_INTEROP_3(ScopeSetParent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_BlockStatementSetStatements( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointerArray statementsPtr, + KInt statementsLen +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto statements = reinterpret_cast(statementsPtr); + + GetImpl()->BlockStatementSetStatements(context, node, statements, statementsLen); + return node; +} +KOALA_INTEROP_4(BlockStatementSetStatements, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt) + +KNativePointer impl_CreateClassDeclaration(KNativePointer contextPtr, KNativePointer defPtr) { + auto context = reinterpret_cast(contextPtr); + auto def = reinterpret_cast(defPtr); + + return GetImpl()->CreateClassDeclaration(context, def); +} +KOALA_INTEROP_2(CreateClassDeclaration, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateClassDeclaration(KNativePointer contextPtr, KNativePointer originalPtr, KNativePointer defPtr) { + auto context = reinterpret_cast(contextPtr); + auto original = reinterpret_cast(originalPtr); + auto def = reinterpret_cast(defPtr); + + return GetImpl()->UpdateClassDeclaration(context, original, def); +} +KOALA_INTEROP_3(UpdateClassDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ClassDefinitionSetTypeParams( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointer typeParamsPtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto typeParams = reinterpret_cast(typeParamsPtr); + + GetImpl()->ClassDefinitionSetTypeParams(context, node, typeParams); + return node; +} +KOALA_INTEROP_3(ClassDefinitionSetTypeParams, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ClassDefinitionSetSuper( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer superClassPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto superClass = reinterpret_cast(superClassPtr); + + GetImpl()->ClassDefinitionSetSuper(context, ast, superClass); + return ast; +} +KOALA_INTEROP_3(ClassDefinitionSetSuper, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ClassDefinitionIdent( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ClassDefinitionIdent(context, node); +} +KOALA_INTEROP_2(ClassDefinitionIdent, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateClassDefinition1( + KNativePointer contextPtr, + KNativePointer identPtr, + KNativePointerArray bodyPtr, + KInt bodyLenT, + KInt modifiersT, + KInt flagsT +) { + auto context = reinterpret_cast(contextPtr); + auto ident = reinterpret_cast(identPtr); + auto body = reinterpret_cast(bodyPtr); + auto bodyLen = static_cast(bodyLenT); + auto modifiers = Es2pandaClassDefinitionModifiers(modifiersT); + auto flags = Es2pandaModifierFlags(flagsT); + + return GetImpl()->CreateClassDefinition1(context, ident, body, bodyLen, modifiers, flags); +} +KOALA_INTEROP_6(CreateClassDefinition1, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt, KInt) + +KNativePointer impl_UpdateClassDefinition1( + KNativePointer contextPtr, + KNativePointer originalPtr, + KNativePointer identPtr, + KNativePointerArray bodyPtr, + KInt bodyLenT, + KInt modifiersT, + KInt flagsT +) { + auto context = reinterpret_cast(contextPtr); + auto original = reinterpret_cast(originalPtr); + auto ident = reinterpret_cast(identPtr); + auto body = reinterpret_cast(bodyPtr); + auto bodyLen = static_cast(bodyLenT); + auto modifiers = Es2pandaClassDefinitionModifiers(modifiersT); + auto flags = Es2pandaModifierFlags(flagsT); + + return GetImpl()->UpdateClassDefinition1(context, original, ident, body, bodyLen, modifiers, flags); +} +KOALA_INTEROP_7(UpdateClassDefinition1, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt, KInt) + +KNativePointer impl_CreateSuperExpression(KNativePointer contextPtr) { + auto context = reinterpret_cast(contextPtr); + + return GetImpl()->CreateSuperExpression(context); +} +KOALA_INTEROP_1(CreateSuperExpression, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateSuperExpression(KNativePointer contextPtr, KNativePointer originalPtr) { + auto context = reinterpret_cast(contextPtr); + auto original = reinterpret_cast(originalPtr); + + return GetImpl()->UpdateSuperExpression(context, original); +} +KOALA_INTEROP_2(UpdateSuperExpression, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateETSImportDeclaration( + KNativePointer contextPtr, + KNativePointer sourcePtr, + KNativePointerArray specifiersPtr, + KInt specifiersLen, + KInt importKindT +) { + auto context = reinterpret_cast(contextPtr); + auto source = reinterpret_cast(sourcePtr); + auto specifiers = reinterpret_cast(specifiersPtr); + auto importKind = static_cast(importKindT); + + return GetImpl()->CreateETSImportDeclaration(context, source, specifiers, specifiersLen, importKind); +} +KOALA_INTEROP_5(CreateETSImportDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt) + +KNativePointer impl_ETSImportDeclarationSourceConst( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ETSImportDeclarationSourceConst(context, node); +} +KOALA_INTEROP_2(ETSImportDeclarationSourceConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ETSImportDeclarationResolvedSource( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ETSImportDeclarationResolvedSource(context, node); +} +KOALA_INTEROP_2(ETSImportDeclarationResolvedSource, KNativePointer, KNativePointer, KNativePointer) + +KBoolean impl_ETSImportDeclarationHasDeclConst( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ETSImportDeclarationHasDeclConst(context, node); +} +KOALA_INTEROP_2(ETSImportDeclarationHasDeclConst, KBoolean, KNativePointer, KNativePointer) + +KNativePointer impl_CreateImportSource( + KNativePointer contextPtr, + KNativePointer sourcePtr, + KNativePointer resolvedSourcePtr, + KBoolean hasDeclT +) { + auto context = reinterpret_cast(contextPtr); + auto source = reinterpret_cast(sourcePtr); + auto resolvedSource = reinterpret_cast(resolvedSourcePtr); + auto hasDecl = static_cast(hasDeclT); + + return GetImpl()->CreateImportSource(context, source, resolvedSource, hasDecl); +} +KOALA_INTEROP_4(CreateImportSource, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KBoolean) + +KNativePointer impl_CreateImportSpecifier( + KNativePointer contextPtr, + KNativePointer importedPtr, + KNativePointer localPtr +) { + auto context = reinterpret_cast(contextPtr); + auto imported = reinterpret_cast(importedPtr); + auto local = reinterpret_cast(localPtr); + + return GetImpl()->CreateImportSpecifier(context, imported, local); +} +KOALA_INTEROP_3(CreateImportSpecifier, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateFunctionExpression(KNativePointer contextPtr, KNativePointer funcPtr) { + auto context = reinterpret_cast(contextPtr); + auto func = reinterpret_cast(funcPtr); + + return GetImpl()->CreateFunctionExpression(context, func); +} +KOALA_INTEROP_2(CreateFunctionExpression, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateFunctionExpression(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer funcPtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto func = reinterpret_cast(funcPtr); + + return GetImpl()->UpdateFunctionExpression(context, node, func); +} +KOALA_INTEROP_3(UpdateFunctionExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateArrowFunctionExpression(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->CreateArrowFunctionExpression(context, node); +} +KOALA_INTEROP_2(CreateArrowFunctionExpression, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ArrowFunctionExpressionFunction(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ArrowFunctionExpressionFunction(context, node); +} +KOALA_INTEROP_2(ArrowFunctionExpressionFunction, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ArrowFunctionExpressionCreateTypeAnnotation(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ArrowFunctionExpressionCreateTypeAnnotation(context, node); +} +KOALA_INTEROP_2(ArrowFunctionExpressionCreateTypeAnnotation, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_FunctionExpressionFunction(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->FunctionExpressionFunction(context, node); +} +KOALA_INTEROP_2(FunctionExpressionFunction, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ExpressionStatementGetExpression(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ExpressionStatementGetExpression(context, node); +} +KOALA_INTEROP_2(ExpressionStatementGetExpression, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_FunctionSignatureTypeParams(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->FunctionSignatureTypeParams(context, node); +} +KOALA_INTEROP_2(FunctionSignatureTypeParams, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_FunctionSignatureReturnType(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->FunctionSignatureReturnType(context, node); +} +KOALA_INTEROP_2(FunctionSignatureReturnType, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateIdentifier1(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->UpdateIdentifier1(context, node, getStringCopy(namePtr)); +} +KOALA_INTEROP_3(UpdateIdentifier1, KNativePointer, KNativePointer, KNativePointer, KStringPtr) + +KNativePointer impl_UpdateIdentifier2(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr, KNativePointer typeAnnotationPtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); + + return GetImpl()->UpdateIdentifier2(context, node, getStringCopy(namePtr), typeAnnotation); +} +KOALA_INTEROP_4(UpdateIdentifier2, KNativePointer, KNativePointer, KNativePointer, KStringPtr, KNativePointer) + +KBoolean impl_IdentifierIsPrivateIdentConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->IdentifierIsPrivateIdentConst(context, node); +} +KOALA_INTEROP_2(IdentifierIsPrivateIdentConst, KBoolean, KNativePointer, KNativePointer) + +KNativePointer impl_MethodDefinitionFunction( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->MethodDefinitionFunction(context, node); +} +KOALA_INTEROP_2(MethodDefinitionFunction, KNativePointer, KNativePointer, KNativePointer) + +KInt impl_MethodDefinitionKindConst( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->MethodDefinitionKindConst(context, node); +} +KOALA_INTEROP_2(MethodDefinitionKindConst, KInt, KNativePointer, KNativePointer) + + +KNativePointer impl_AstNodeSetParent( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer parentPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto parent = reinterpret_cast(parentPtr); + + GetImpl()->AstNodeSetParent(context, ast, parent); + return ast; +} +KOALA_INTEROP_3(AstNodeSetParent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeSetOriginalNode( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer originalNodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto originalNode = reinterpret_cast(originalNodePtr); + + GetImpl()->AstNodeSetOriginalNode(context, ast, originalNode); + return ast; +} +KOALA_INTEROP_3(AstNodeSetOriginalNode, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeOriginalNodeConst( + KNativePointer contextPtr, + KNativePointer astPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + + return GetImpl()->AstNodeOriginalNodeConst(context, ast); +} +KOALA_INTEROP_2(AstNodeOriginalNodeConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeClone( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer parentPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto parent = reinterpret_cast(parentPtr); + + return GetImpl()->AstNodeClone(context, ast, parent); +} +KOALA_INTEROP_3(AstNodeClone, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionSetIdent( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer idPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto id = reinterpret_cast(idPtr); + + GetImpl()->ScriptFunctionSetIdent(context, ast, id); + return ast; +} +KOALA_INTEROP_3(ScriptFunctionSetIdent, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionSetSignature( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer signaturePtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto signature = reinterpret_cast(signaturePtr); + + GetImpl()->ScriptFunctionSetSignature(context, ast, signature); + return ast; +} +KOALA_INTEROP_3(ScriptFunctionSetSignature, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionSetBody( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer bodyPtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto body = reinterpret_cast(bodyPtr); + + GetImpl()->ScriptFunctionSetBody(context, ast, body); + return ast; +} +KOALA_INTEROP_3(ScriptFunctionSetBody, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionSetScope( + KNativePointer contextPtr, + KNativePointer astPtr, + KNativePointer scopePtr +) { + auto context = reinterpret_cast(contextPtr); + auto ast = reinterpret_cast(astPtr); + auto scope = reinterpret_cast(scopePtr); + + GetImpl()->ScriptFunctionSetScope(context, ast, scope); + return ast; +} +KOALA_INTEROP_3(ScriptFunctionSetScope, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionSignature(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionSignature(context, node); +} +KOALA_INTEROP_2(ScriptFunctionSignature, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionIrSignature(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionIrSignature(context, node); +} +KOALA_INTEROP_2(ScriptFunctionIrSignature, KNativePointer, KNativePointer, KNativePointer) + +KInt impl_ScriptFunctionFlagsConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionFlagsConst(context, node); +} +KOALA_INTEROP_2(ScriptFunctionFlagsConst, KInt, KNativePointer, KNativePointer) + +KInt impl_AstNodeModifiers(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->AstNodeModifiers(context, node); +} +KOALA_INTEROP_2(AstNodeModifiers, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeAddModifier(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto flags = static_cast(flagsT); + + GetImpl()->AstNodeAddModifier(context, node, flags); + return node; +} +KOALA_INTEROP_3(AstNodeAddModifier, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_AstNodeClearModifier(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto flags = static_cast(flagsT); + + GetImpl()->AstNodeClearModifier(context, node, flags); + return node; +} +KOALA_INTEROP_3(AstNodeClearModifier, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_CreateScriptFunction( + KNativePointer contextPtr, + KNativePointer databodyPtr, + KNativePointer datasignaturePtr, + KInt datafuncFlags, + KInt dataFlags +) { + auto context = reinterpret_cast(contextPtr); + auto databody = reinterpret_cast(databodyPtr); + auto datasignature = reinterpret_cast(datasignaturePtr); + + return GetImpl()->CreateScriptFunction(context, databody, datasignature, datafuncFlags, dataFlags); +} +KOALA_INTEROP_5(CreateScriptFunction, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KInt) + +KNativePointer impl_UpdateScriptFunction( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointer databodyPtr, + KNativePointer datasignaturePtr, + KInt datafuncFlags, + KInt dataFlags +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto databody = reinterpret_cast(databodyPtr); + auto datasignature = reinterpret_cast(datasignaturePtr); + + return GetImpl()->UpdateScriptFunction(context, node, databody, datasignature, datafuncFlags, dataFlags); +} +KOALA_INTEROP_6(UpdateScriptFunction, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KInt) + +KNativePointer impl_CreateBlockStatement( + KNativePointer contextPtr, + KNativePointerArray statementListPtr, + KInt statementListLen +) { + auto context = reinterpret_cast(contextPtr); + auto statementList = reinterpret_cast(statementListPtr); + + return GetImpl()->CreateBlockStatement(context, statementList, statementListLen); +} +KOALA_INTEROP_3(CreateBlockStatement, KNativePointer, KNativePointer, KNativePointerArray, KInt) + +KNativePointer impl_CreateAstDumper( + KNativePointer contextPtr, + KNativePointer nodePtr, + KStringPtr& sourcePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->CreateAstDumper(context, node, getStringCopy(sourcePtr)); +} +KOALA_INTEROP_3(CreateAstDumper, KNativePointer, KNativePointer, KNativePointer, KStringPtr) + +KNativePointer impl_CreateETSUnionTypeIr( + KNativePointer contextPtr, + KNativePointerArray typesPtr, + KInt typesLen +) { + auto context = reinterpret_cast(contextPtr); + auto types = reinterpret_cast(typesPtr); + + return GetImpl()->CreateETSUnionTypeIr(context, types, typesLen); +} +KOALA_INTEROP_3(CreateETSUnionTypeIr, KNativePointer, KNativePointer, KNativePointerArray, KInt) + +KNativePointer impl_CreateExpressionStatement(KNativePointer contextPtr, KNativePointer exprPtr) { + auto context = reinterpret_cast(contextPtr); + auto expr = reinterpret_cast(exprPtr); + + return GetImpl()->CreateExpressionStatement(context, expr); +} +KOALA_INTEROP_2(CreateExpressionStatement, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateExpressionStatement(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer exprPtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto expr = reinterpret_cast(exprPtr); + + return GetImpl()->UpdateExpressionStatement(context, node, expr); +} +KOALA_INTEROP_3(UpdateExpressionStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionBody(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionBody(context, node); +} +KOALA_INTEROP_2(ScriptFunctionBody, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateBinaryExpression(KNativePointer contextPtr, KNativePointer leftPtr, KNativePointer rightPtr, KInt tokenKind) { + auto context = reinterpret_cast(contextPtr); + auto left = reinterpret_cast(leftPtr); + auto right = reinterpret_cast(rightPtr); + + return GetImpl()->CreateBinaryExpression(context, left, right, Es2pandaTokenType(tokenKind)); +} +KOALA_INTEROP_4(CreateBinaryExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_CreateAssignmentExpression(KNativePointer contextPtr, KNativePointer leftPtr, KNativePointer rightPtr, KInt assignmentOperator) { + auto context = reinterpret_cast(contextPtr); + auto left = reinterpret_cast(leftPtr); + auto right = reinterpret_cast(rightPtr); + + return GetImpl()->CreateAssignmentExpression(context, left, right, Es2pandaTokenType(assignmentOperator)); +} +KOALA_INTEROP_4(CreateAssignmentExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_CreateFunctionSignature( + KNativePointer contextPtr, + KNativePointer typeParamsPtr, + KNativePointerArray paramsPtr, + KInt paramsLen, + KNativePointer returnTypeAnnotationPtr, + KBoolean hasReceiver +) { + auto context = reinterpret_cast(contextPtr); + auto typeParams = reinterpret_cast(typeParamsPtr); + auto params = reinterpret_cast(paramsPtr); + auto returnTypeAnnotation = reinterpret_cast(returnTypeAnnotationPtr); + + return GetImpl()->CreateFunctionSignature(context, typeParams, params, paramsLen, returnTypeAnnotation, hasReceiver); +} +KOALA_INTEROP_6(CreateFunctionSignature, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean) + +KNativePointer impl_CreateTSUnionType( + KNativePointer contextPtr, + KNativePointerArray typesPtr, + KInt typesLen +) { + auto context = reinterpret_cast(contextPtr); + auto types = reinterpret_cast(typesPtr); + + return GetImpl()->CreateTSUnionType(context, types, typesLen); +} +KOALA_INTEROP_3(CreateTSUnionType, KNativePointer, KNativePointer, KNativePointerArray, KInt) + +KNativePointer impl_CreateReturnStatement1(KNativePointer contextPtr, KNativePointer argumentPtr) { + auto context = reinterpret_cast(contextPtr); + auto argument = reinterpret_cast(argumentPtr); + + return GetImpl()->CreateReturnStatement1(context, argument); +} +KOALA_INTEROP_2(CreateReturnStatement1, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ReturnStatementArgument(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ReturnStatementArgument(context, node); +} +KOALA_INTEROP_2(ReturnStatementArgument, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateIfStatement(KNativePointer contextPtr, KNativePointer testPtr, KNativePointer consequentPtr, KNativePointer alternatePtr) { + auto context = reinterpret_cast(contextPtr); + auto test = reinterpret_cast(testPtr); + auto consequent = reinterpret_cast(consequentPtr); + auto alternate = reinterpret_cast(alternatePtr); + + return GetImpl()->CreateIfStatement(context, test, consequent, alternate); +} +KOALA_INTEROP_4(CreateIfStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateMemberExpression( + KNativePointer contextPtr, + KNativePointer objectPtr, + KNativePointer propertyPtr, + KInt kindT, + KBoolean computedT, + KBoolean optionalT +) { + auto context = reinterpret_cast(contextPtr); + auto object = reinterpret_cast(objectPtr); + auto property = reinterpret_cast(propertyPtr); + auto computed = static_cast(computedT); + auto optional = static_cast(optionalT); + auto kind = static_cast(kindT); + + return GetImpl()->CreateMemberExpression(context, object, property, kind, computed, optional); +} +KOALA_INTEROP_6(CreateMemberExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean, KBoolean) + +KNativePointer impl_UpdateMemberExpression( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointer objectPtr, + KNativePointer propertyPtr, + KInt kindT, + KBoolean computedT, + KBoolean optionalT +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto object = reinterpret_cast(objectPtr); + auto property = reinterpret_cast(propertyPtr); + auto computed = static_cast(computedT); + auto optional = static_cast(optionalT); + auto kind = static_cast(kindT); + + return GetImpl()->UpdateMemberExpression(context, node, object, property, kind, computed, optional); +} +KOALA_INTEROP_7(UpdateMemberExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean, KBoolean) + +KNativePointer impl_UpdateMethodDefinition( + KNativePointer contextPtr, + KNativePointer nodePtr, + KInt kindT, + KNativePointer keyPtr, + KNativePointer valuePtr, + KInt modifiersT, + KBoolean isComputedT +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto kind = static_cast(kindT); + auto key = reinterpret_cast(keyPtr); + auto value = reinterpret_cast(valuePtr); + auto modifiers = static_cast(modifiersT); + auto isComputed = static_cast(isComputedT); + + return GetImpl()->UpdateMethodDefinition(context, node, kind, key, value, modifiers, isComputed); +} +KOALA_INTEROP_7(UpdateMethodDefinition, KNativePointer, KNativePointer, KNativePointer, KInt, KNativePointer, KNativePointer, KInt, KBoolean) + +KNativePointer impl_MemberExpressionObject( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->MemberExpressionObject(context, node); +} +KOALA_INTEROP_2(MemberExpressionObject, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_MemberExpressionProperty( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->MemberExpressionProperty(context, node); +} +KOALA_INTEROP_2(MemberExpressionProperty, KNativePointer, KNativePointer, KNativePointer) + +KInt impl_MemberExpressionKindConst( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->MemberExpressionKindConst(context, node); +} +KOALA_INTEROP_2(MemberExpressionKindConst, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_CreateCallExpression( + KNativePointer contextPtr, + KNativePointer calleePtr, + KNativePointerArray argumentsPtr, + KInt argumentsLen, + KNativePointer typeParamsPtr, + KBoolean optionalT, + KBoolean trailingCommaT +) { + auto context = reinterpret_cast(contextPtr); + auto callee = reinterpret_cast(calleePtr); + auto arguments = reinterpret_cast(argumentsPtr); + auto typeParams = reinterpret_cast(typeParamsPtr); + auto optional = static_cast(optionalT); + auto trailingComma = static_cast(trailingCommaT); + + return GetImpl()->CreateCallExpression(context, callee, arguments, argumentsLen, typeParams, optional, trailingComma); +} +KOALA_INTEROP_7(CreateCallExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean, KBoolean) + +KNativePointer impl_CreateVariableDeclaration( + KNativePointer contextPtr, + KInt kindT, + KNativePointerArray declaratorsPtr, + KInt declaratorsLen +) { + auto context = reinterpret_cast(contextPtr); + auto kind = static_cast(kindT); + auto declarators = reinterpret_cast(declaratorsPtr); + + return GetImpl()->CreateVariableDeclaration(context, kind, declarators, declaratorsLen); +} +KOALA_INTEROP_4(CreateVariableDeclaration, KNativePointer, KNativePointer, KInt, KNativePointerArray, KInt) + +KNativePointer impl_UpdateVariableDeclaration( + KNativePointer contextPtr, + KNativePointer originalPtr, + KInt kindT, + KNativePointerArray declaratorsPtr, + KInt declaratorsLen +) { + auto context = reinterpret_cast(contextPtr); + auto original = reinterpret_cast(originalPtr); + auto kind = static_cast(kindT); + auto declarators = reinterpret_cast(declaratorsPtr); + + return GetImpl()->UpdateVariableDeclaration(context, original, kind, declarators, declaratorsLen); +} +KOALA_INTEROP_5(UpdateVariableDeclaration, KNativePointer, KNativePointer, KNativePointer, KInt, KNativePointerArray, KInt) + +KNativePointer impl_CreateVariableDeclarator( + KNativePointer contextPtr, + KInt flagT, + KNativePointer identPtr +) { + auto context = reinterpret_cast(contextPtr); + auto flag = static_cast(flagT); + auto ident = reinterpret_cast(identPtr); + + return GetImpl()->CreateVariableDeclarator(context, flag, ident); +} +KOALA_INTEROP_3(CreateVariableDeclarator, KNativePointer, KNativePointer, KInt, KNativePointer) + +KNativePointer impl_VariableDeclaratorSetInit(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer initPtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto init = reinterpret_cast(initPtr); + + GetImpl()->VariableDeclaratorSetInit(context, node, init); + return node; +} +KOALA_INTEROP_3(VariableDeclaratorSetInit, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_VariableDeclaratorId(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->VariableDeclaratorId(context, node); +} +KOALA_INTEROP_2(VariableDeclaratorId, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateTSTypeParameter( + KNativePointer contextPtr, + KNativePointer namePtr, + KNativePointer constraintPtr, + KNativePointer defaultTypePtr +) { + auto context = reinterpret_cast(contextPtr); + auto name = reinterpret_cast(namePtr); + auto constraint = reinterpret_cast(constraintPtr); + auto defaultType = reinterpret_cast(defaultTypePtr); + + return GetImpl()->CreateTSTypeParameter(context, name, constraint, defaultType); +} +KOALA_INTEROP_4(CreateTSTypeParameter, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_TSTypeParameterName(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->TSTypeParameterName(context, node); +} +KOALA_INTEROP_2(TSTypeParameterName, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ETSParameterExpressionIdent(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ETSParameterExpressionIdent(context, node); +} +KOALA_INTEROP_2(ETSParameterExpressionIdent, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateETSTypeReference(KNativePointer contextPtr, KNativePointer partPtr) { + auto context = reinterpret_cast(contextPtr); + auto part = reinterpret_cast(partPtr); + + return GetImpl()->CreateETSTypeReference(context, part); +} +KOALA_INTEROP_2(CreateETSTypeReference, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateETSTypeReferencePart1(KNativePointer contextPtr, KNativePointer namePtr) { + auto context = reinterpret_cast(contextPtr); + auto name = reinterpret_cast(namePtr); + + return GetImpl()->CreateETSTypeReferencePart1(context, name); +} +KOALA_INTEROP_2(CreateETSTypeReferencePart1, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateETSTypeReferencePart(KNativePointer contextPtr, KNativePointer namePtr, KNativePointer typeParamsPtr, KNativePointer prevPtr) { + auto context = reinterpret_cast(contextPtr); + auto name = reinterpret_cast(namePtr); + auto typeParams = reinterpret_cast(typeParamsPtr); + auto prev = reinterpret_cast(prevPtr); + + return GetImpl()->CreateETSTypeReferencePart(context, name, typeParams, prev); +} +KOALA_INTEROP_4(CreateETSTypeReferencePart, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + + +KNativePointer impl_ScriptFunctionTypeParams(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionTypeParams(context, node); +} +KOALA_INTEROP_2(ScriptFunctionTypeParams, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionReturnTypeAnnotation(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ScriptFunctionReturnTypeAnnotation(context, node); +} +KOALA_INTEROP_2(ScriptFunctionReturnTypeAnnotation, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionId(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->ScriptFunctionId(context, node); +} +KOALA_INTEROP_2(ScriptFunctionId, KNativePointer, KNativePointer, KNativePointer) + +// KBoolean impl_ScriptFunctionDeclareConst(KNativePointer contextPtr, KNativePointer nodePtr) { +// auto context = reinterpret_cast(contextPtr); +// auto node = reinterpret_cast(nodePtr); +// return GetImpl()->ScriptFunctionDeclareConst(context, node); +// } +// KOALA_INTEROP_2(ScriptFunctionDeclareConst, KBoolean, KNativePointer, KNativePointer) + +KNativePointer impl_CreateFunctionDeclaration( + KNativePointer contextPtr, + KNativePointer funcPtr, + KNativePointerArray annotationsPtr, + KInt annotationsLen, + KBoolean isAnonK +) { + auto context = reinterpret_cast(contextPtr); + auto func = reinterpret_cast(funcPtr); + auto annotations = reinterpret_cast(annotationsPtr); + auto isAnon = static_cast(isAnonK); + + return GetImpl()->CreateFunctionDeclaration(context, func, annotations, annotationsLen, isAnon); +} +KOALA_INTEROP_5(CreateFunctionDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KBoolean) + +KNativePointer impl_UpdateFunctionDeclaration( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointer funcPtr, + KNativePointerArray annotationsPtr, + KInt annotationsLen, + KBoolean isAnonK +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto func = reinterpret_cast(funcPtr); + auto annotations = reinterpret_cast(annotationsPtr); + auto isAnon = static_cast(isAnonK); + + return GetImpl()->UpdateFunctionDeclaration(context, node, func, annotations, annotationsLen, isAnon); +} +KOALA_INTEROP_6(UpdateFunctionDeclaration, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KBoolean) + +// TODO: add param initializer +KNativePointer impl_CreateETSParameterExpression(KNativePointer contextPtr, KNativePointer identifierPtr, KNativePointer initializerPtr) { + auto context = reinterpret_cast(contextPtr); + auto identifier = reinterpret_cast(identifierPtr); + auto initializer = reinterpret_cast(initializerPtr); + + return GetImpl()->CreateETSParameterExpression(context, identifier, initializer); +} +KOALA_INTEROP_3(CreateETSParameterExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateTSTypeParameterDeclaration( + KNativePointer contextPtr, + KNativePointerArray paramsPtr, + KInt paramsLen, + KInt requiredParams +) { + auto context = reinterpret_cast(contextPtr); + auto params = reinterpret_cast(paramsPtr); + + return GetImpl()->CreateTSTypeParameterDeclaration(context, params, paramsLen, requiredParams); +} +KOALA_INTEROP_4(CreateTSTypeParameterDeclaration, KNativePointer, KNativePointer, KNativePointerArray, KInt, KInt) + + +KNativePointer impl_ClassDefinitionTypeParamsConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return const_cast(GetImpl()->ClassDefinitionTypeParamsConst(context, node)); +} +KOALA_INTEROP_2(ClassDefinitionTypeParamsConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_FunctionDeclarationFunction(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->FunctionDeclarationFunction(context, node); +} +KOALA_INTEROP_2(FunctionDeclarationFunction, KNativePointer, KNativePointer, KNativePointer) + +KBoolean impl_FunctionDeclarationIsAnonymousConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->FunctionDeclarationIsAnonymousConst(context, node); +} +KOALA_INTEROP_2(FunctionDeclarationIsAnonymousConst, KBoolean, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionAddFlag(KNativePointer contextPtr, KNativePointer nodePtr, KInt flagsT) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + auto flags = static_cast(flagsT); + + GetImpl()->ScriptFunctionAddFlag(context, node, flags); + return node; +} +KOALA_INTEROP_3(ScriptFunctionAddFlag, KNativePointer, KNativePointer, KNativePointer, KInt) + +KInt impl_VariableDeclarationKindConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->VariableDeclarationKindConst(context, node); +} +KOALA_INTEROP_2(VariableDeclarationKindConst, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_ClassDeclarationDefinition(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->ClassDeclarationDefinition(context, node); +} +KOALA_INTEROP_2(ClassDeclarationDefinition, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateIdentifier2(KNativePointer contextPtr, KStringPtr& namePtr, KNativePointer typeAnnotationPtr) { + auto context = reinterpret_cast(contextPtr); + auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); + return GetImpl()->CreateIdentifier2(context, getStringCopy(namePtr), typeAnnotation); +} +KOALA_INTEROP_3(CreateIdentifier2, KNativePointer, KNativePointer, KStringPtr, KNativePointer) + +KNativePointer impl_CreateETSPrimitiveType(KNativePointer contextPtr, KInt type) { + auto context = reinterpret_cast(contextPtr); + return GetImpl()->CreateETSPrimitiveType(context, static_cast(type)); +} +KOALA_INTEROP_2(CreateETSPrimitiveType, KNativePointer, KNativePointer, KInt) + +KInt impl_ETSPrimitiveTypeGetPrimitiveTypeConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return GetImpl()->ETSPrimitiveTypeGetPrimitiveTypeConst(context, node); +} +KOALA_INTEROP_2(ETSPrimitiveTypeGetPrimitiveTypeConst, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_CreateETSFunctionTypeIr(KNativePointer contextPtr, KNativePointer signaturePtr, KInt funcFlagsT) { + auto context = reinterpret_cast(contextPtr); + auto signature = reinterpret_cast(signaturePtr); + auto funcFlags = Es2pandaScriptFunctionFlags(funcFlagsT); + + return GetImpl()->CreateETSFunctionTypeIr(context, signature, funcFlags); +} +KOALA_INTEROP_3(CreateETSFunctionTypeIr, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_CreateNumberLiteral(KNativePointer contextPtr, KDouble value) { + auto context = reinterpret_cast(contextPtr); + + return GetImpl()->CreateNumberLiteral(context, value); +} +KOALA_INTEROP_2(CreateNumberLiteral, KNativePointer, KNativePointer, KDouble) + +KNativePointer impl_CreateStringLiteral(KNativePointer contextPtr, KStringPtr& stringPtr) { + auto context = reinterpret_cast(contextPtr); + return GetImpl()->CreateStringLiteral1(context, getStringCopy(stringPtr)); +} +KOALA_INTEROP_2(CreateStringLiteral, KNativePointer, KNativePointer, KStringPtr) + +KNativePointer impl_StringLiteralStrConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return new string(GetImpl()->StringLiteralStrConst(context, node)); +} +KOALA_INTEROP_2(StringLiteralStrConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_NumberLiteralStrConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return new string(GetImpl()->NumberLiteralStrConst(context, node)); +} +KOALA_INTEROP_2(NumberLiteralStrConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateMethodDefinition( + KNativePointer contextPtr, + KInt kindT, + KNativePointer keyPtr, + KNativePointer valuePtr, + KInt modifiersT, + KBoolean isComputedT +) { + auto context = reinterpret_cast(contextPtr); + auto kind = static_cast(kindT); + auto key = reinterpret_cast(keyPtr); + auto value = reinterpret_cast(valuePtr); + auto modifiers = static_cast(modifiersT); + auto isComputed = static_cast(isComputedT); + + return GetImpl()->CreateMethodDefinition(context, kind, key, value, modifiers, isComputed); +} +KOALA_INTEROP_6(CreateMethodDefinition, KNativePointer, KNativePointer, KInt, KNativePointer, KNativePointer, KInt, KBoolean) + +KNativePointer impl_CreateClassProperty( + KNativePointer contextPtr, + KNativePointer keyPtr, + KNativePointer valuePtr, + KNativePointer typeAnnotationPtr, + KInt modifiersT, + KBoolean isComputedT +) { + auto context = reinterpret_cast(contextPtr); + auto key = reinterpret_cast(keyPtr); + auto value = reinterpret_cast(valuePtr); + auto typeAnnotation = reinterpret_cast(typeAnnotationPtr); + auto modifiers = static_cast(modifiersT); + auto isComputed = static_cast(isComputedT); + + return GetImpl()->CreateClassProperty(context, key, value, typeAnnotation, modifiers, isComputed); +} +KOALA_INTEROP_6(CreateClassProperty, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KInt, KBoolean) + +KNativePointer impl_AstNodeDumpJsonConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return new string(GetImpl()->AstNodeDumpJSONConst(context, node)); +} +KOALA_INTEROP_2(AstNodeDumpJsonConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeDumpEtsSrcConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return new string(GetImpl()->AstNodeDumpEtsSrcConst(context, node)); +} +KOALA_INTEROP_2(AstNodeDumpEtsSrcConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ETSParserCreateExpression(KNativePointer contextPtr, KStringPtr& sourceCodePtr, KInt flagsT) { + auto context = reinterpret_cast(contextPtr); + auto flags = static_cast(flagsT); + + return GetImpl()->ETSParserCreateExpression(context, getStringCopy(sourceCodePtr), flags); +} +KOALA_INTEROP_3(ETSParserCreateExpression, KNativePointer, KNativePointer, KStringPtr, KInt) + +KBoolean impl_IsProgram(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return GetImpl()->AstNodeIsProgramConst(context, node); +} +KOALA_INTEROP_2(IsProgram, KBoolean, KNativePointer, KNativePointer) + +KBoolean impl_IsBlockStatement(KNativePointer nodePtr) { + auto node = reinterpret_cast(nodePtr); + return GetImpl()->IsBlockStatement(node); +} +KOALA_INTEROP_1(IsBlockStatement, KBoolean, KNativePointer) + +KNativePointer impl_ProceedToState(KNativePointer contextPtr, KInt state) { + auto context = reinterpret_cast(contextPtr); + return GetImpl()->ProceedToState(context, intToState(state)); +} +KOALA_INTEROP_2(ProceedToState, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_ContextProgram(KNativePointer contextPtr) { + auto context = reinterpret_cast(contextPtr); + return GetImpl()->ContextProgram(context); +} +KOALA_INTEROP_1(ContextProgram, KNativePointer, KNativePointer) + +KNativePointer impl_ProgramAst(KNativePointer programPtr) { + auto program = reinterpret_cast(programPtr); + return GetImpl()->ProgramAst(program); +} +KOALA_INTEROP_1(ProgramAst, KNativePointer, KNativePointer) + +KBoolean impl_IsIdentifier(KNativePointer nodePtr) { + auto node = reinterpret_cast(nodePtr); + return GetImpl()->IsIdentifier(node); +} +KOALA_INTEROP_1(IsIdentifier, KBoolean, KNativePointer) + +KNativePointer impl_IdentifierName(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + return new string(GetImpl()->IdentifierName(context, node)); +} +KOALA_INTEROP_2(IdentifierName, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_CreateIdentifier1(KNativePointer contextPtr, KStringPtr& namePtr) { + auto context = reinterpret_cast(contextPtr); + return GetImpl()->CreateIdentifier1(context, getStringCopy(namePtr)); +} +KOALA_INTEROP_2(CreateIdentifier1, KNativePointer, KNativePointer, KStringPtr) + +KNativePointer impl_CreateContextFromString(KNativePointer configPtr, KStringPtr& sourcePtr, KStringPtr& filenamePtr) { + auto config = reinterpret_cast(configPtr); + return GetImpl()->CreateContextFromString(config, sourcePtr.data(), filenamePtr.data()); +} +KOALA_INTEROP_3(CreateContextFromString, KNativePointer, KNativePointer, KStringPtr, KStringPtr) + +KNativePointer impl_CreateContextFromFile(KNativePointer configPtr, KStringPtr& filenamePtr) { + auto config = reinterpret_cast(configPtr); + return GetImpl()->CreateContextFromFile(config, getStringCopy(filenamePtr)); +} +KOALA_INTEROP_2(CreateContextFromFile, KNativePointer, KNativePointer, KStringPtr) + +KInt impl_ContextState(KNativePointer contextPtr) { + auto context = reinterpret_cast(contextPtr); + + return static_cast(GetImpl()->ContextState(context)); +} +KOALA_INTEROP_1(ContextState, KInt, KNativePointer) + +KNativePointer impl_ContextErrorMessage(KNativePointer contextPtr) { + auto context = reinterpret_cast(contextPtr); + + return new string(GetImpl()->ContextErrorMessage(context)); +} +KOALA_INTEROP_1(ContextErrorMessage, KNativePointer, KNativePointer) diff --git a/arkoala-arkts/libarkts/native/src/common.cc b/arkoala-arkts/libarkts/native/src/common.cc new file mode 100644 index 0000000000000000000000000000000000000000..9359998661bd48ccd09ddfe67b44b33c1e81ce03 --- /dev/null +++ b/arkoala-arkts/libarkts/native/src/common.cc @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +using std::string, std::cout, std::endl, std::vector; + +static es2panda_Impl *impl = nullptr; + +#ifdef KOALA_WINDOWS + #include + #define PLUGIN_DIR "windows_host_tools" + #define LIB_PREFIX "" + #define LIB_SUFFIX ".dll" +#endif + +#ifdef KOALA_LINUX + #include + + #ifdef __x86_64__ + #define PLUGIN_DIR "linux_host_tools" + #else + #define PLUGIN_DIR "linux_arm64_host_tools" + #endif + + #define LIB_PREFIX "lib" + #define LIB_SUFFIX ".so" +#endif + +const char* libpath = "../node_modules/@panda/sdk/" PLUGIN_DIR "/lib/" LIB_PREFIX "es2panda-public" LIB_SUFFIX; + +es2panda_Impl *GetImpl() { + if (impl) { + return impl; + } + auto library = loadLibrary(libpath); + if (!library) { + throw std::runtime_error("No library (es2panda_lib.cc)"); + } + auto symbol = findSymbol(library, "es2panda_GetImpl"); + if (!symbol) { + throw std::runtime_error("No entry point"); + } + impl = reinterpret_cast(symbol)(ES2PANDA_LIB_VERSION); + return impl; +} + +es2panda_ContextState intToState(KInt state) { + return es2panda_ContextState(state); +} + +string getString(KStringPtr ptr) { + return ptr.data(); +} + +char* getStringCopy(KStringPtr& ptr) { + return strdup(ptr.c_str()); +} + +inline KUInt unpackUInt(const KByte* bytes) { + return (bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24)); +} + +KNativePointer impl_CreateConfig(KInt argc, KStringArray argvPtr) { + const std::size_t HEADER_LEN = 4; + + const char** argv = new const char*[argc]; + std::size_t position = HEADER_LEN; + std::size_t str_len; + for (std::size_t i = 0; i < static_cast(argc); ++i) { + str_len = unpackUInt(argvPtr + position); + position += HEADER_LEN; + argv[i] = strdup(std::string(reinterpret_cast(argvPtr + position), str_len).c_str()); + position += str_len; + } + return GetImpl()->CreateConfig(argc, argv); +} +KOALA_INTEROP_2(CreateConfig, KNativePointer, KInt, KStringArray) + +KNativePointer impl_DestroyConfig(KNativePointer configPtr) { + auto config = reinterpret_cast(configPtr); + GetImpl()->DestroyConfig(config); + return nullptr; +} +KOALA_INTEROP_1(DestroyConfig, KNativePointer, KNativePointer) + +KNativePointer impl_DestroyContext(KNativePointer contextPtr) { + auto context = reinterpret_cast(contextPtr); + GetImpl()->DestroyContext(context); + return nullptr; +} +KOALA_INTEROP_1(DestroyContext, KNativePointer, KNativePointer) + +KNativePointer impl_IdentifierSetName(KNativePointer contextPtr, KNativePointer nodePtr, KStringPtr& namePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + GetImpl()->IdentifierSetName(context, node, getStringCopy(namePtr)); + return node; +} +KOALA_INTEROP_3(IdentifierSetName, KNativePointer, KNativePointer, KNativePointer, KStringPtr) + +KNativePointer impl_BlockStatementStatements(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + size_t n; + auto statements = GetImpl()->BlockStatementStatements(context, node, &n); + return new vector(statements, statements + n); +} +KOALA_INTEROP_2(BlockStatementStatements, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_VariableDeclarationDeclaratorsConst(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + size_t n; + auto declarators = GetImpl()->VariableDeclarationDeclaratorsConst(context, node, &n); + return new vector(declarators, declarators + n); +} +KOALA_INTEROP_2(VariableDeclarationDeclaratorsConst, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ClassDefinitionBody(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + size_t n; + auto body = GetImpl()->ClassDefinitionBody(context, node, &n); + return new std::vector(body, body + n); +} +KOALA_INTEROP_2(ClassDefinitionBody, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ScriptFunctionParams(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->ScriptFunctionParams(context, node, ¶ms_len); + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_2(ScriptFunctionParams, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_TSTypeParameterDeclarationParamsConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->TSTypeParameterDeclarationParamsConst(context, node, ¶ms_len); + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_3(TSTypeParameterDeclarationParamsConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_UpdateBlockStatement(KNativePointer contextPtr, KNativePointer originalPtr, KNativePointerArray statementListPtr, KInt statementListLen) { + auto context = reinterpret_cast(contextPtr); + auto statementList = reinterpret_cast(statementListPtr); + auto original = reinterpret_cast(originalPtr); + + // tmp solution while waiting fix for UpdateBlockStatement + GetImpl()->BlockStatementSetStatements(context, original, statementList, static_cast(statementListLen)); + return original; +} +KOALA_INTEROP_4(UpdateBlockStatement, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt) + +KNativePointer impl_UpdateCallExpression( + KNativePointer contextPtr, + KNativePointer nodePtr, + KNativePointer calleePtr, + KNativePointerArray argumentsPtr, + KInt argumentsLen, + KNativePointer typeParamsPtr, + KBoolean optionalT, + KBoolean trailingCommaT +) { + auto node = reinterpret_cast(nodePtr); + auto context = reinterpret_cast(contextPtr); + auto callee = reinterpret_cast(calleePtr); + auto arguments = reinterpret_cast(argumentsPtr); + auto typeParams = reinterpret_cast(typeParamsPtr); + auto optional = static_cast(optionalT); + auto trailingComma = static_cast(trailingCommaT); + + // auto nn = GetImpl()->UpdateCallExpression(context, node, callee, arguments, argumentsLen, typeParams, optional, trailingComma); + auto nn = GetImpl()->CreateCallExpression(context, callee, arguments, argumentsLen, typeParams, optional, trailingComma); + GetImpl()->AstNodeSetOriginalNode(context, nn, node); + return nn; +} +KOALA_INTEROP_8(UpdateCallExpression, KNativePointer, KNativePointer, KNativePointer, KNativePointer, KNativePointerArray, KInt, KNativePointer, KBoolean, KBoolean) + +KNativePointer impl_TSUnionTypeTypesConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->TSUnionTypeTypesConst(context, node, ¶ms_len); + + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_3(TSUnionTypeTypesConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_ETSUnionTypeIrTypesConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->ETSUnionTypeIrTypesConst(context, node, ¶ms_len); + + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_3(ETSUnionTypeIrTypesConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstDumperModifierToString( + KNativePointer contextPtr, + KNativePointer dumperPtr, + KInt flagsT +) { + auto context = reinterpret_cast(contextPtr); + auto dumper = reinterpret_cast(dumperPtr); + auto flags = static_cast(flagsT); + + return new std::string(GetImpl()->AstDumperModifierToString(context, dumper, flags)); +} +KOALA_INTEROP_3(AstDumperModifierToString, KNativePointer, KNativePointer, KNativePointer, KInt) + +KNativePointer impl_FunctionSignatureParamsConst(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnTypeLen) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->FunctionSignatureParamsConst(context, node, ¶ms_len); + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_3(FunctionSignatureParamsConst, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +KInt impl_IdentifierIdentifierFlags(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + + return + (GetImpl()->IdentifierIsOptionalConst(context, node) ? (1 << 0) : 0) | + (GetImpl()->IdentifierIsReferenceConst(context, node) ? (1 << 1) : 0) | + (GetImpl()->IdentifierIsTdzConst(context, node) ? (1 << 2) : 0); +} +KOALA_INTEROP_2(IdentifierIdentifierFlags, KInt, KNativePointer, KNativePointer) + +KNativePointer impl_CallExpressionArguments(KNativePointer contextPtr, KNativePointer nodePtr, KNativePointer returnLen) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + std::size_t params_len = 0; + auto params = GetImpl()->CallExpressionArguments(context, node, ¶ms_len); + return new std::vector(params, params + params_len); +} +KOALA_INTEROP_3(CallExpressionArguments, KNativePointer, KNativePointer, KNativePointer, KNativePointer) + +/* +TODO: NOT FROM API (shouldn't be there) +----------------------------------------------------------------------------------------------------------------------------- +*/ + +es2panda_AstNode * __parentNode; +es2panda_Context * __context; + +static void changeParent(es2panda_AstNode *child) +{ + GetImpl()->AstNodeSetParent(__context, child, __parentNode); +} + +static void SetRightParent(es2panda_AstNode *node, void *arg) +{ + es2panda_Context *ctx = static_cast(arg); + __context = ctx; + __parentNode = node; + + GetImpl()->AstNodeIterateConst(ctx, node, changeParent); +} + +KNativePointer impl_AstNodeUpdateAll(KNativePointer contextPtr, KNativePointer programPtr) { + auto context = reinterpret_cast(contextPtr); + auto program = reinterpret_cast(programPtr); + + GetImpl()->AstNodeForEach(program, SetRightParent, context); + return program; +} +KOALA_INTEROP_2(AstNodeUpdateAll, KNativePointer, KNativePointer, KNativePointer) + +KNativePointer impl_AstNodeUpdateChildren(KNativePointer contextPtr, KNativePointer nodePtr) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + __parentNode = node; + + GetImpl()->AstNodeIterateConst(context, node, changeParent); + return node; +} +KOALA_INTEROP_2(AstNodeUpdateChildren, KNativePointer, KNativePointer, KNativePointer) + +std::vector __children; + +static void visitChild(es2panda_AstNode *node) { + __children.emplace_back(node); +} + +KNativePointer impl_AstNodeChildren( + KNativePointer contextPtr, + KNativePointer nodePtr +) { + auto context = reinterpret_cast(contextPtr); + auto node = reinterpret_cast(nodePtr); + __context = context; + __children.clear(); + + GetImpl()->AstNodeIterateConst(context, node, visitChild); + return new std::vector(__children); +} +KOALA_INTEROP_2(AstNodeChildren, KNativePointer, KNativePointer, KNativePointer) + +/* +----------------------------------------------------------------------------------------------------------------------------- +*/ diff --git a/arkoala-arkts/libarkts/native/src/common.h b/arkoala-arkts/libarkts/native/src/common.h new file mode 100644 index 0000000000000000000000000000000000000000..69715003a57f954fac06383fb710099557a20e8a --- /dev/null +++ b/arkoala-arkts/libarkts/native/src/common.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "dynamic-loader.h" +#include "es2panda_lib.h" +#include "common-interop.h" +#include "stdexcept" +#include +#include +#include + +using std::string, std::cout, std::endl, std::vector; + +es2panda_Impl *GetImpl(); + +string getString(KStringPtr ptr); + +char* getStringCopy(KStringPtr& ptr); + +inline KUInt unpackUInt(const KByte* bytes); + +es2panda_ContextState intToState(KInt state);