diff --git a/napi_IntelliJ_plugin/README_zh.md b/napi_IntelliJ_plugin/README_zh.md
index c7183fdff2d3f9f0e330c4a2265375aba54908ad..c24e19e6dc22b523e62ec3b9f65960b4c1f5253c 100644
--- a/napi_IntelliJ_plugin/README_zh.md
+++ b/napi_IntelliJ_plugin/README_zh.md
@@ -1,43 +1,123 @@
-# IDEA插件开发环境配置
-
-基础环境要求:
-JDK 11 ,IDEA Community 2021.3.3
-
-1.下载IDEA Community 与 JDK11 配置好环境
-点击 https://www.jetbrains.com/idea/download/ 下载Community版本,并完成安装。
-
-
-2.打开IDEA Community 应用程序。
-依次点击项目File>Open 选择napi_generator/napi_IntelliJ_plugin/generator项目文件夹。
-
-
-3.配置Project
-项目打开完成,点击File>Project Structure,在出现的界面中点击Project,下图的SDK选择JDK 11,选择或者新建complier output目录为项目文件下的out目录。
-
-
-
-4.配置Modules.
-Project Settings > Modules 新建Modules.点击上方“-”删除原有的Modules,“+”选择 New Modules。
-
-
-
-5.配置Module SDK.(若SDKs中有相应的Plugin SDK和JDK 11,可以选择默认的Module SDK,点击图中next)
-在New Modules对话框中,选择IntelliJ Platform Plugin。若为首次环境配置,请在Module SDK 下拉框中点击 Add IntelliJ Platform Plugin SDK 选择IDEA Community安装目录,点击OK,在Select Internal Java Platform 选择 JAVA SDK 11(213版本只支持 11)
-
-
-6.配置Root Content.
-在上图界面点击Next,选择Content root:选择或者理性为项目根目录(注意:此处必须为项目文件夹的目录),module name会自动变为generator,若出现提示已存在是否覆盖的提示,请点“Finish”完成配置。
-
-
-
-7.配置完成Modules后,若在SDKs中无相应JDK和Plugin SDK,请点击+号分别添加 Add Java JDK和Add Intellij PlantForm Plugin SDK,Java JDK为java11的安装目录,Plugin SDK为 IDEA Community 2021.3.3的安装目录。
-
-
-8.若完成步骤7配置,点击OK完成配置。Rebuild项目,若IDEA依然不能点击右上角的运行。请点击Edit configuration编译选择Use classpath of Mode为前面配置好的Module名称。
-
-
-9.项目运行成功后,会另起一个IDEA应用程序。插件运行在IDEA中,只需要新建一个Grandle Project,添加相应的TS文件到项目文件夹里面,就可以右击文件,选择Generate napi Frame出现插件主界面进行相应操作。
-
-10.在Deveco stdio中安装插件。
-请在IDEA Community中依次点击Build>Prepare Plugin Module " " for development"生成jar包(jar一般生成在generator目录下)。打开DevEco Studio 工具,点击File>settings>plugin。点击右方齿轮选择install plugin from disk选择jar包,点击确定完成。重新IDE完成安装
-
\ No newline at end of file
+# NAPI框架生成工具IntelliJ插件说明
+
+## 简介
+
+NAPI框架代码生成工具,它可以根据用户指定路径下的ts(typescript)接口文件一键生成NAPI框架代码、业务代码框架、GN文件等。目前工具支持可执行文件、VS Code插件、IntelliJ插件三种入口,本文主要介绍IntelliJ插件使用说明。
+
+## 目录
+
+ ├── napi_generator # NAPI框架代码生成工具
+ │ ├── ... # 其他文件
+ │ ├── napi_IntelliJ_plugin # IntelliJ插件代码
+ │ │ ├── docs # IntelliJ插件说明
+ │ │ ├── resources # IntelliJ插件说明
+ │ │ ├── src # IntelliJ插件源码
+ │ │ └── README_zh # IntelliJ插件说明
+
+## 约束
+
+系统:不限
+
+依赖版本:JDK 11
+
+开发工具:DevEco stdio、IDEA Community 2021.3.3
+
+## 使用方法
+
+### 使用对象
+
+系统开发者
+
+### 使用场景
+
+1) 系统框架层新增子系统,需对应用层提供接口。
+2) 系统框架层子系统能力增强后,需对应用层提供新接口。
+
+### 工具使用
+
+插件下载路径如下,选择napi_generator_outputs.zip下载。
+
+[下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/GGsW3B68u/generator_outputs)
+
+具体的工具使用步骤,可以左键单击以下链接了解:
+
+[工具使用说明](https://gitee.com/openharmony/napi_generator/tree/master/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md)
+
+### 工具输出
+
+根据使用者指定的typescript文件,工具会输出NAPI框架代码、业务代码框架、GN脚本等文件。
+
+为了方便使用者快速上手工具,可供测试的typescript文件存放在以下路径:
+
+```
+napi_IntelliJ_plugin
+```
+
+在window环境下的,根据输入文件@ohos.napitest.d.ts和basic.d.ts生成的输出文件,如下所示:
+
+
+
+其中生成的"napitest.h"文件,定义了框架代码的接口,如下所示:
+
+
+```c++
+#include "napitest.h"
+
+
+namespace napitest {
+
+bool TestClass1::if_direct(std::string &v1, std::string &out) {
+ // TODO
+ return true;
+}
+
+bool TestClass1::if_callback(std::string &v1, std::string &out) {
+ // TODO
+ return true;
+}
+
+......
+}
+```
+
+### 集成方法
+
+为了实现工具生成的接口被其他子系统或者应用调用,需将生成的代码编译集成到OpenHarmony系统中,编译生成动态库。
+
+把工具的生成代码集成到OpenHarmony的具体操作步骤,可以左键单击以下链接了解:
+
+[生成代码集成到OpenHarmony的方法](https://gitee.com/openharmony/napi_generator/blob/master/docs/ENSEMBLE_METHOD_ZH.md)
+
+## 开发说明
+
+### 对象
+
+工具的开发者
+
+### 开发场景
+
+若当前工具的功能已经不能满足开发者的全部需求,则开发者可以基于已有的源码对工具进行二次开发,来增强工具的能力,编译打包生成自定义的可执行文件和插件。
+
+### 开发步骤
+
+开发者可以根据如下的步骤来完成对工具IntelliJ插件的开发:
+
+ [工具开发说明](https://gitee.com/openharmony/napi_generator/tree/master/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md)
+
+## 版本说明
+
+当前版本已支持的特性和待开发的特性,如下所示:
+
+ [已支持特性](https://gitee.com/openharmony/napi_generator/blob/master/release-notes/napi_generator-1.0.md)
+
+ [待支持特性](https://gitee.com/openharmony/napi_generator/blob/master/docs/ROADMAP_ZH.md)
+
+## FAQ
+
+对于常见问题解决方法指导如下:
+
+ [FAQ](https://gitee.com/openharmony/napi_generator/blob/master/FAQ.md)
+
+## 相关仓
+
+暂无
\ No newline at end of file
diff --git a/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md b/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md
new file mode 100755
index 0000000000000000000000000000000000000000..a705337cf42fd62fc90854a7e26b8b62b41e483c
--- /dev/null
+++ b/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md
@@ -0,0 +1,68 @@
+# NAPI框架生成工具IntelliJ插件开发说明
+
+若当前工具功能不满足开发者需求,开发者需增强工具能力,则可基于已有源码进行工具二次开发,编译打包生成自定义的IntelliJ插件。
+
+## IntelliJ插件打包说明
+
+### 环境说明
+
+系统:建议Windows 10
+
+### 开发步骤
+
+#### 环境准备
+
+1.将napi_generator目录下的可执行文件分别放置在napi_generator/napi_IntelliJ_plugin/resources/cmds目录下对应系统的文件夹下。
+
+2.下载IDEA Community 与 JDK11 配置好环境。
+点击 https://www.jetbrains.com/idea/download/ 下载Community版本,并完成安装。
+
+3.打开IDEA Community应用程序。
+依次点击项目File>Open 选择napi_generator/napi_IntelliJ_plugin项目文件夹。
+
+
+4.配置Project
+项目打开完成,点击File>Project Structure,在出现的界面中点击Project,下图的SDK选择JDK 11,选择或者新建complier output目录为项目文件下的out目录。
+
+
+5.配置Modules
+Project Settings > Modules 新建Modules。点击上方“-”删除原有的Modules,然后点击“+”选择 New Module。
+
+
+6.配置Module SDK.
+在New Module对话框中,选择IntelliJ Platform Plugin。若为首次环境配置,请在Module SDK 下拉框中点击 Add IntelliJ Platform Plugin SDK 选择IDEA Community安装目录,点击OK,在Select Internal Java Platform 选择 JAVA SDK 11(213版本只支持 11),点击New Module对话框中Next。
+
+
+7.配置Content root.
+Content root选择napi_generator/src/generator文件夹,module name会自动变为generator。点击Finish,若出现提示已存在是否覆盖的提示,请点“Yes”完成配置。
+
+
+8.Modules配置完成后,若在SDKs中无相应JDK和Plugin SDK,请点击+号分别添加 Add Java JDK和Add Intellij PlantForm Plugin SDK,Java JDK为java11的安装目录,Plugin SDK为 IDEA Community 2021.3.3的安装目录。
+
+
+9.若完成步骤7配置,点击OK完成配置。Rebuild项目,若IDEA不能点击右上角的运行,点击Plugin后下三角选择Edit Configurations...选项,Run/Debug Configurations框中Use classpath of moudle选择generator,点击ok,等待安装完成,即可点击运行按钮。若IDEA依然不能点击右上角的运行,请重复以上全部操作。
+
+
+
+
+
+10.点击Intellij IDEA工具右上角Built Project按钮,等待工程built完成。
+
+
+
+11.在IDEA Community中依次点击Build>Prepare All Plugin Modules for development",然后在Select Modules框中点击ok,jar包生成完成后在工具右下角提示jar包生成成功,且包含jar包存放位置。
+
+
+
+
+
+
+
+## 工具测试
+
+进行工具二次开发后,本地可进行单元测试、story特性测试确保工具的可用性。左键单击以下链接了解详情:
+
+[单元测试](https://gitee.com/openharmony/napi_generator/blob/master/test/unittest/README_ZH.md)
+
+[story测试](https://gitee.com/openharmony/napi_generator/blob/master/test/storytest/README_ZH.md)
+
diff --git a/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md b/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md
new file mode 100755
index 0000000000000000000000000000000000000000..09c8827761382ae3b488f3f100f79e47abbde571
--- /dev/null
+++ b/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md
@@ -0,0 +1,77 @@
+# NAPI框架生成工具IntelliJ插件使用说明
+
+## 简介
+
+IntelliJ插件下载路径如下,选择napi_generator_outputs.zip中generator.jar下载。
+
+[下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/GGsW3B68u/generator_outputs)
+
+## IntelliJ插件使用方法
+
+### 依赖
+
+系统:不限
+
+开发工具:DevEco stdio
+
+### 使用指导
+
+1.新建或打开项目工程,以下以新建项目工程为例。
+
+File->New->Create Project。
+
+
+
+Ability Template选择Empty Ability,单击Next。
+
+
+
+填写Project name、Save location,其他选项可不修改,单击Finish,新的工程就创建好了。
+
+
+
+2.把需要转换的.d.ts文件放在DevEco stdio新建项目的src目录下,并且检查需要转换的d.ts文件中是否声明了import的d.ts文件,如果存在需要将import的d.ts文件也放入到待转换的d.ts文件相同的目录下。
+
+
+
+3.安装插件,File->Settings->Plugins->Installed->Install Plugin from Disk...,选择下载的generator.jar,安装成功之后重启IDE。
+
+
+
+
+
+4.选择.d.ts文件,右键选择 Generate Napi Frame选项,工具弹出Generate Napi Frame弹窗。接口文件文本框填写.d.ts文件路径;生成框架路径文本框填写转换后生成文件存放文件夹路径,此处为src下新增out文件夹,生成文件存放在out中;编译脚本路径默认填写不修改,点击ok。
+
+
+
+
+
+5.执行结束后会在目录下生成对应的文件。
+
+
+
+6.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换等场景。
+
+1)指定路径下.d.ts文件转换(可转换路径下所有.d.ts文件)。Generate Napi Frame窗口中,接口文件文本框中填写待转换.d.ts文件路径,此处为E:\demo;生成框架路径填写生成文件所放路径,此处为E:\deveco_project\entry\src\out;编译脚本路径为E:\deveco_project\entry\src写,然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示:
+
+
+
+
+
+2)同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件,且声明了import的d.ts文件。Generate Napi Frame窗口中,接口文件文本框中填写待转换.d.ts文件夹,此处为“E:\deveco_project\entry\src”;生成框架路径填写生成文件所放路径,此处为E:\deveco_project\entry\src\out;编译脚本路径为E:\deveco_project\entry\src写,然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示:
+
+
+
+
+
+## 注意
+
+对于ts文件中的number类型,默认转为C++ uint32_t类型,修改框架生成目录中的napitest.h类型赋值,可实现number类型到C++指定数据类型的转换。
+
+
+
+## 集成测试
+NAPI框架代码生成后,系统框架开发者进行二次开发后,即可集成到OpenHarmony编译系统,生成对应的库文件,供应用开发者调用接口。工具集成测试的具体操作步骤可以左键单击以下链接了解:
+
+[工具集成测试](https://gitee.com/openharmony/napi_generator/blob/master/docs/INTEGRATION_TESTING_ZH.md)
+
diff --git a/test/unittest/result.json b/test/unittest/result.json
index 771855b49b37b824b9f7527c6dcfb193fc23ed26..afedcb78b21e206f1db0e0ce6b6d3f2665482b0c 100644
--- a/test/unittest/result.json
+++ b/test/unittest/result.json
@@ -29,7 +29,7 @@
"generateInterface": "{\"implH\":\"\\nclass a {\\npublic:\\n};\",\"implCpp\":\"\",\"middleBody\":\"\\nclass a_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n a *p = new a();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n a *p2 = (a *)p;\\n delete p2;\\n}\\n\\n};\",\"middleInit\":\"{\\n std::map> valueList;\\n std::map funcList;\\n pxt->DefineClass(\\\"a\\\", [object Object]a_middle::constructor, valueList ,funcList);\\n}\\n\"}",
"ParamGenerate": "\"{\\\"valueIn\\\":\\\"\\\\n std::string in0;\\\",\\\"valueOut\\\":\\\"\\\",\\\"valueCheckout\\\":\\\"pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\\",\\\"valueFill\\\":\\\"vio->in0\\\",\\\"valuePackage\\\":\\\"\\\",\\\"valueDefine\\\":\\\"std::string &a\\\"}\"",
"returnGenerate": "{\"valueIn\":\"\",\"valueOut\":\"std::string out;\",\"valueCheckout\":\"\",\"valueFill\":\"vio->out\",\"valuePackage\":\"napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\",\"valueDefine\":\"std::string &out\"}",
- "generateNamespace": "{\"implH\":\"namespace napitest {\\nenum GrantStatus {\\n PERMISSION_DEFAULT = 0,\\n PERMISSION_DENIED = -1,\\n PERMISSION_GRANTED = 2,\\n PERMISSION_PASS = 3,\\n};\\n\\nenum HttpStatus {\\n STATUS0 = 0,\\n STATUS1 = 500,\\n STATUS2 = 503,\\n};\\n\\nclass Human {\\npublic:\\n std::string name;\\n NUMBER_TYPE_4 age;\\n};\\nclass TestClass1 {\\npublic:\\n Human ahuman;\\n NUMBER_TYPE_5 num1;\\n std::string str1;\\n std::vector nums;\\n std::vector strs;\\n std::vector mans;\\nbool if_direct(std::string &v1, bool &v2, std::string &out);\\nbool if_callback(std::string &v1, std::string &out);\\nbool if_async(std::string &v1, std::string &out);\\n};\\nbool fun2(std::string &v2, std::vector &numcc, Human &mancc, std::vector &out);\\nbool fun3(std::string &v2, std::string &out);\\nbool fun4(std::string &v2, std::string &out);\\nbool fun5(bool &v2, bool &out);\\nbool fun6(std::vector &v2, bool &out);namespace Space3 {\\nclass TestClass2 {\\npublic:\\n NUMBER_TYPE_8 haha;\\n};\\nbool fun3(std::string &v3, std::string &out);namespace Space4 {\\nclass TestClass3 {\\npublic:\\n NUMBER_TYPE_9 hoho;\\nbool add(std::vector &v1, NUMBER_TYPE_11 &out);\\n};\\nbool fun3(std::string &v3, std::string &out);\\n}\\n}\\n}\",\"implCpp\":\"namespace napitest {\\nbool TestClass1::if_direct(std::string &v1, bool &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool TestClass1::if_callback(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\\nbool TestClass1::if_async(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun2(std::string &v2, std::vector &numcc, Human &mancc, std::vector &out)\\n{\\n return true;\\n}\\n\\nbool fun3(std::string &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun4(std::string &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun5(bool &v2, bool &out)\\n{\\n return true;\\n}\\n\\nbool fun6(std::vector &v2, bool &out)\\n{\\n return true;\\n}\\nnamespace Space3 {\\nbool fun3(std::string &v3, std::string &out)\\n{\\n return true;\\n}\\nnamespace Space4 {\\nbool TestClass3::add(std::vector &v1, NUMBER_TYPE_11 &out)\\n{\\n return true;\\n}\\n\\nbool fun3(std::string &v3, std::string &out)\\n{\\n return true;\\n}\\n}}}\",\"middleBody\":\"namespace napitest {\\nclass Human_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n Human *p = new Human();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n Human *p2 = (Human *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_name(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n result = pxt->SwapC2JsUtf8(p->name.c_str());\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_name(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), p->name);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_age(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->age);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_age(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_4,p->age);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_isAboy(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n undefined\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_isAboy(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n undefined\\n return nullptr;\\n }\\n\\n};\\nclass TestClass1_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass1 *p = new TestClass1();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass1 *p2 = (TestClass1 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_ahuman(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n {\\nnapi_value tnv1 = nullptr;\\ntnv1 = pxt->SwapC2JsUtf8(p->ahuman.name.c_str());\\npxt->SetValueProperty(result,\\\"name\\\",tnv1);\\n}{\\nnapi_value tnv1 = nullptr;\\ntnv1 = NUMBER_C_2_JS(pxt, p->ahuman.age);\\npxt->SetValueProperty(result,\\\"age\\\",tnv1);\\n}{\\nnapi_value tnv1 = nullptr;\\nundefined\\npxt->SetValueProperty(result,\\\"isAboy\\\",tnv1);\\n}\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_ahuman(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value tnv1 = pxt->GetValueProperty(pxt->GetArgv(0), \\\"name\\\");\\n if(tnv1!=nullptr){pxt->SwapJs2CUtf8(tnv1,p->ahuman.name);}napi_value tnv2 = pxt->GetValueProperty(pxt->GetArgv(0), \\\"age\\\");\\n if(tnv2!=nullptr){NUMBER_JS_2_C(tnv2,NUMBER_TYPE_4,p->ahuman.age);}undefined\\n return nullptr;\\n }\\n\\n static napi_value getvalue_num1(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->num1);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_num1(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_5,p->num1);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_str1(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = pxt->SwapC2JsUtf8(p->str1.c_str());\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_str1(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), p->str1);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_nums(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->nums.size();\\n for(uint32_t i=0;inums[i]);\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_nums(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len3=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i3=0;i3GetArrayElement(pxt->GetArgv(0),i3),NUMBER_TYPE_6,tt3);\\n p->nums.push_back(tt3);\\n }\\n return nullptr;\\n }\\n\\n static napi_value getvalue_strs(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->strs.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(p->strs[i].c_str());\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_strs(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len4=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i4=0;i4SwapJs2CUtf8(pxt->GetArrayElement(pxt->GetArgv(0),i4), tt4);\\n p->strs.push_back(tt4);\\n }\\n return nullptr;\\n }\\n\\n static napi_value getvalue_mans(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->mans.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(p->mans[i].name.c_str());\\npxt->SetValueProperty(tnv1,\\\"name\\\",tnv2);\\n}{\\nnapi_value tnv2 = nullptr;\\ntnv2 = NUMBER_C_2_JS(pxt, p->mans[i].age);\\npxt->SetValueProperty(tnv1,\\\"age\\\",tnv2);\\n}{\\nnapi_value tnv2 = nullptr;\\nundefined\\npxt->SetValueProperty(tnv1,\\\"isAboy\\\",tnv2);\\n}\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_mans(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len5=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i5=0;i5GetValueProperty(pxt->GetArrayElement(pxt->GetArgv(0),i5), \\\"name\\\");\\n if(tnv6!=nullptr){pxt->SwapJs2CUtf8(tnv6,tt5.name);}napi_value tnv7 = pxt->GetValueProperty(pxt->GetArrayElement(pxt->GetArgv(0),i5), \\\"age\\\");\\n if(tnv7!=nullptr){NUMBER_JS_2_C(tnv7,NUMBER_TYPE_4,tt5.age);}undefined\\n p->mans.push_back(tt5);\\n }\\n return nullptr;\\n }\\n\\nstruct if_direct_value_struct {\\n std::string in0;\\n bool in1;\\n \\n std::string out;\\n};\\n\\nstatic napi_value if_direct_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass1 *pInstance = (TestClass1 *)pxt->UnWarpInstance();\\n\\n struct if_direct_value_struct *vio = new if_direct_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);BOOLEAN_JS_2_C(pxt->GetArgv(1),bool,vio->in1);\\n\\n pInstance->if_direct(vio->in0, vio->in1, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct if_callback_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nstatic napi_value if_callback_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass1 *pInstance = (TestClass1 *)pxt->UnWarpInstance();\\n\\n struct if_callback_value_struct *vio = new if_callback_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n pInstance->if_callback(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct if_async_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nstatic void if_async_execute(XNapiTool *pxt, void *data)\\n{\\n if_async_value_struct *vio = (if_async_value_struct *)data;\\n TestClass1 *pInstance = (TestClass1 *)pxt->GetAsyncInstance();\\n\\n pInstance->if_async(vio->in0, vio->out);\\n}\\n\\nstatic void if_async_complete(XNapiTool *pxt, void *data)\\n{\\n if_async_value_struct *vio = (if_async_value_struct *)data;\\n \\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n \\n {\\n napi_value args[1] = {result};\\n pxt->FinishAsync(1, args);\\n }\\n\\n delete vio;\\n}\\n\\nstatic napi_value if_async_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n pxt->SetAsyncInstance(pxt->UnWarpInstance());\\n\\n struct if_async_value_struct *vio = new if_async_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n \\n napi_value result = pxt->StartAsync(if_async_execute, vio, if_async_complete, pxt->GetArgc() == 2 ? pxt->GetArgv(1) : nullptr);\\n\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n return result;\\n}\\n};\\nstruct fun2_value_struct {\\n std::string in0;\\n std::vector in1;\\n Human in2;\\n \\n std::vector out;\\n};\\n\\nnapi_value fun2_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun2_value_struct *vio = new fun2_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0); uint32_t len8=pxt->GetArrayLength(pxt->GetArgv(1));\\n for(uint32_t i8=0;i8GetArrayElement(pxt->GetArgv(1),i8),NUMBER_TYPE_7,tt8);\\n vio->in1.push_back(tt8);\\n }napi_value tnv9 = pxt->GetValueProperty(pxt->GetArgv(2), \\\"name\\\");\\n if(tnv9!=nullptr){pxt->SwapJs2CUtf8(tnv9,vio->in2.name);}napi_value tnv10 = pxt->GetValueProperty(pxt->GetArgv(2), \\\"age\\\");\\n if(tnv10!=nullptr){NUMBER_JS_2_C(tnv10,NUMBER_TYPE_4,vio->in2.age);}undefined\\n\\n fun2(vio->in0, vio->in1, vio->in2, vio->out);\\n\\n napi_value result = nullptr;\\n uint32_t len1=vio->out.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(vio->out[i].name.c_str());\\npxt->SetValueProperty(tnv1,\\\"name\\\",tnv2);\\n}{\\nnapi_value tnv2 = nullptr;\\ntnv2 = NUMBER_C_2_JS(pxt, vio->out[i].age);\\npxt->SetValueProperty(tnv1,\\\"age\\\",tnv2);\\n}{\\nnapi_value tnv2 = nullptr;\\nundefined\\npxt->SetValueProperty(tnv1,\\\"isAboy\\\",tnv2);\\n}\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun4_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nvoid fun4_execute(XNapiTool *pxt, void *data)\\n{\\n fun4_value_struct *vio = (fun4_value_struct *)data;\\n \\n\\n fun4(vio->in0, vio->out);\\n}\\n\\nvoid fun4_complete(XNapiTool *pxt, void *data)\\n{\\n fun4_value_struct *vio = (fun4_value_struct *)data;\\n \\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n \\n {\\n napi_value args[1] = {result};\\n pxt->FinishAsync(1, args);\\n }\\n\\n delete vio;\\n}\\n\\nnapi_value fun4_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun4_value_struct *vio = new fun4_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n \\n napi_value result = pxt->StartAsync(fun4_execute, vio, fun4_complete, pxt->GetArgc() == 2 ? pxt->GetArgv(1) : nullptr);\\n\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n return result;\\n}\\nstruct fun5_value_struct {\\n bool in0;\\n \\n bool out;\\n};\\n\\nnapi_value fun5_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun5_value_struct *vio = new fun5_value_struct();\\n \\n BOOLEAN_JS_2_C(pxt->GetArgv(0),bool,vio->in0);\\n\\n fun5(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsBool(vio->out);\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun6_value_struct {\\n std::vector in0;\\n \\n bool out;\\n};\\n\\nnapi_value fun6_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun6_value_struct *vio = new fun6_value_struct();\\n \\n uint32_t len11=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i11=0;i11SwapJs2CBool(pxt->GetArrayElement(pxt->GetArgv(0),i11));\\n vio->in0.push_back(tt11);\\n }\\n\\n fun6(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsBool(vio->out);\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}namespace Space3 {\\nclass TestClass2_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass2 *p = new TestClass2();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass2 *p2 = (TestClass2 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_haha(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass2 *p = (TestClass2 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->haha);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_haha(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass2 *p = (TestClass2 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_8,p->haha);\\n return nullptr;\\n }\\n\\n};\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}namespace Space4 {\\nclass TestClass3_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass3 *p = new TestClass3();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass3 *p2 = (TestClass3 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_hoho(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass3 *p = (TestClass3 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->hoho);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_hoho(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass3 *p = (TestClass3 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_9,p->hoho);\\n return nullptr;\\n }\\n\\nstruct add_value_struct {\\n std::vector in0;\\n \\n NUMBER_TYPE_11 out;\\n};\\n\\nstatic napi_value add_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass3 *pInstance = (TestClass3 *)pxt->UnWarpInstance();\\n\\n struct add_value_struct *vio = new add_value_struct();\\n \\n uint32_t len12=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i12=0;i12GetArrayElement(pxt->GetArgv(0),i12),NUMBER_TYPE_10,tt12);\\n vio->in0.push_back(tt12);\\n }\\n\\n pInstance->add(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = NUMBER_C_2_JS(pxt, vio->out);\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\n};\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}}}}\",\"middleInit\":\"{\\n std::map> valueList;\\n valueList[\\\"name\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_name;\\n valueList[\\\"name\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_name;\\n valueList[\\\"age\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_age;\\n valueList[\\\"age\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_age;\\n valueList[\\\"isAboy\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_isAboy;\\n valueList[\\\"isAboy\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_isAboy;\\n std::map funcList;\\n pxt->DefineClass(\\\"Human\\\", napitest::Human_middle::constructor, valueList ,funcList);\\n}\\n{\\n std::map> valueList;\\n valueList[\\\"ahuman\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_ahuman;\\n valueList[\\\"ahuman\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_ahuman;\\n valueList[\\\"num1\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_num1;\\n valueList[\\\"num1\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_num1;\\n valueList[\\\"str1\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_str1;\\n valueList[\\\"str1\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_str1;\\n valueList[\\\"nums\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_nums;\\n valueList[\\\"nums\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_nums;\\n valueList[\\\"strs\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_strs;\\n valueList[\\\"strs\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_strs;\\n valueList[\\\"mans\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_mans;\\n valueList[\\\"mans\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_mans;\\n std::map funcList;\\n funcList[\\\"if_direct\\\"] = napitest::TestClass1_middle::if_direct_middle;\\n funcList[\\\"if_callback\\\"] = napitest::TestClass1_middle::if_callback_middle;\\n funcList[\\\"if_async\\\"] = napitest::TestClass1_middle::if_async_middle;\\n pxt->DefineClass(\\\"TestClass1\\\", napitest::TestClass1_middle::constructor, valueList ,funcList);\\n}\\n pxt->DefineFunction(\\\"fun2\\\", napitest::fun2_middle);\\n pxt->DefineFunction(\\\"fun3\\\", napitest::fun3_middle);\\n pxt->DefineFunction(\\\"fun4\\\", napitest::fun4_middle);\\n pxt->DefineFunction(\\\"fun5\\\", napitest::fun5_middle);\\n pxt->DefineFunction(\\\"fun6\\\", napitest::fun6_middle);\\n{\\nnapi_value Space3=pxt->CreateSubObject(exports,\\\"Space3\\\");\\n{\\n std::map> valueList;\\n valueList[\\\"haha\\\"][\\\"getvalue\\\"]=napitest::Space3::TestClass2_middle::getvalue_haha;\\n valueList[\\\"haha\\\"][\\\"setvalue\\\"]=napitest::Space3::TestClass2_middle::setvalue_haha;\\n std::map funcList;\\n pxt->DefineClass(\\\"TestClass2\\\", napitest::Space3::TestClass2_middle::constructor, valueList ,funcList, Space3);\\n}\\n pxt->DefineFunction(\\\"fun3\\\", napitest::Space3::fun3_middle, Space3);\\n{\\nnapi_value Space4=pxt->CreateSubObject(Space3,\\\"Space4\\\");\\n{\\n std::map> valueList;\\n valueList[\\\"hoho\\\"][\\\"getvalue\\\"]=napitest::Space3::Space4::TestClass3_middle::getvalue_hoho;\\n valueList[\\\"hoho\\\"][\\\"setvalue\\\"]=napitest::Space3::Space4::TestClass3_middle::setvalue_hoho;\\n std::map funcList;\\n funcList[\\\"add\\\"] = napitest::Space3::Space4::TestClass3_middle::add_middle;\\n pxt->DefineClass(\\\"TestClass3\\\", napitest::Space3::Space4::TestClass3_middle::constructor, valueList ,funcList, Space4);\\n}\\n pxt->DefineFunction(\\\"fun3\\\", napitest::Space3::Space4::fun3_middle, Space4);\\n}}\"}"
+ "generateNamespace": "{\"implH\":\"namespace napitest {\\nenum GrantStatus {\\n PERMISSION_DEFAULT = 0,\\n PERMISSION_DENIED = -1,\\n PERMISSION_GRANTED = 2,\\n PERMISSION_PASS = 3,\\n};\\n\\nenum HttpStatus {\\n STATUS0 = 0,\\n STATUS1 = 500,\\n STATUS2 = 503,\\n};\\n\\nclass Human {\\npublic:\\n std::string name;\\n NUMBER_TYPE_4 age;\\n};\\nclass TestClass1 {\\npublic:\\n Human ahuman;\\n NUMBER_TYPE_5 num1;\\n std::string str1;\\n std::vector nums;\\n std::vector strs;\\n std::vector mans;\\nbool if_direct(std::string &v1, bool &v2, std::string &out);\\nbool if_callback(std::string &v1, std::string &out);\\nbool if_async(std::string &v1, std::string &out);\\n};\\nbool fun2(std::string &v2, std::vector &numcc, Human &mancc, std::vector &out);\\nbool fun3(std::string &v2, std::string &out);\\nbool fun4(std::string &v2, std::string &out);\\nbool fun5(bool &v2, bool &out);\\nbool fun6(std::vector &v2, bool &out);namespace Space3 {\\nclass TestClass2 {\\npublic:\\n NUMBER_TYPE_8 haha;\\n};\\nbool fun3(std::string &v3, std::string &out);namespace Space4 {\\nclass TestClass3 {\\npublic:\\n NUMBER_TYPE_9 hoho;\\nbool add(std::vector &v1, NUMBER_TYPE_11 &out);\\n};\\nbool fun3(std::string &v3, std::string &out);\\n}\\n}\\n}\",\"implCpp\":\"namespace napitest {\\nbool TestClass1::if_direct(std::string &v1, bool &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool TestClass1::if_callback(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\\nbool TestClass1::if_async(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun2(std::string &v2, std::vector &numcc, Human &mancc, std::vector &out)\\n{\\n return true;\\n}\\n\\nbool fun3(std::string &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun4(std::string &v2, std::string &out)\\n{\\n return true;\\n}\\n\\nbool fun5(bool &v2, bool &out)\\n{\\n return true;\\n}\\n\\nbool fun6(std::vector &v2, bool &out)\\n{\\n return true;\\n}\\nnamespace Space3 {\\nbool fun3(std::string &v3, std::string &out)\\n{\\n return true;\\n}\\nnamespace Space4 {\\nbool TestClass3::add(std::vector &v1, NUMBER_TYPE_11 &out)\\n{\\n return true;\\n}\\n\\nbool fun3(std::string &v3, std::string &out)\\n{\\n return true;\\n}\\n}}}\",\"middleBody\":\"namespace napitest {\\nclass Human_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n Human *p = new Human();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n Human *p2 = (Human *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_name(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n result = pxt->SwapC2JsUtf8(p->name.c_str());\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_name(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), p->name);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_age(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->age);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_age(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_4,p->age);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_isAboy(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n Human *p = (Human *)pxt->UnWarpInstance();\\n napi_value result;\\n undefined\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_isAboy(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n Human *p = (Human *)pxt->UnWarpInstance();\\n undefined\\n return nullptr;\\n }\\n\\n};\\nclass TestClass1_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass1 *p = new TestClass1();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass1 *p2 = (TestClass1 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_ahuman(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n {\\nnapi_value tnv1 = nullptr;\\ntnv1 = pxt->SwapC2JsUtf8(p->ahuman.name.c_str());\\npxt->SetValueProperty(result,\\\"name\\\",tnv1);\\n}\\n{\\nnapi_value tnv1 = nullptr;\\ntnv1 = NUMBER_C_2_JS(pxt, p->ahuman.age);\\npxt->SetValueProperty(result,\\\"age\\\",tnv1);\\n}\\n{\\nnapi_value tnv1 = nullptr;\\nundefined\\npxt->SetValueProperty(result,\\\"isAboy\\\",tnv1);\\n}\\n\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_ahuman(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value tnv1 = pxt->GetValueProperty(pxt->GetArgv(0), \\\"name\\\");\\n if(tnv1!=nullptr){pxt->SwapJs2CUtf8(tnv1,p->ahuman.name);}napi_value tnv2 = pxt->GetValueProperty(pxt->GetArgv(0), \\\"age\\\");\\n if(tnv2!=nullptr){NUMBER_JS_2_C(tnv2,NUMBER_TYPE_4,p->ahuman.age);}undefined\\n return nullptr;\\n }\\n\\n static napi_value getvalue_num1(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->num1);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_num1(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_5,p->num1);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_str1(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = pxt->SwapC2JsUtf8(p->str1.c_str());\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_str1(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), p->str1);\\n return nullptr;\\n }\\n\\n static napi_value getvalue_nums(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->nums.size();\\n for(uint32_t i=0;inums[i]);\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_nums(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len3=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i3=0;i3GetArrayElement(pxt->GetArgv(0),i3),NUMBER_TYPE_6,tt3);\\n p->nums.push_back(tt3);\\n }\\n return nullptr;\\n }\\n\\n static napi_value getvalue_strs(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->strs.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(p->strs[i].c_str());\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_strs(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len4=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i4=0;i4SwapJs2CUtf8(pxt->GetArrayElement(pxt->GetArgv(0),i4), tt4);\\n p->strs.push_back(tt4);\\n }\\n return nullptr;\\n }\\n\\n static napi_value getvalue_mans(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n napi_value result;\\n uint32_t len1=p->mans.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(p->mans[i].name.c_str());\\npxt->SetValueProperty(tnv1,\\\"name\\\",tnv2);\\n}\\n{\\nnapi_value tnv2 = nullptr;\\ntnv2 = NUMBER_C_2_JS(pxt, p->mans[i].age);\\npxt->SetValueProperty(tnv1,\\\"age\\\",tnv2);\\n}\\n{\\nnapi_value tnv2 = nullptr;\\nundefined\\npxt->SetValueProperty(tnv1,\\\"isAboy\\\",tnv2);\\n}\\n\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_mans(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass1 *p = (TestClass1 *)pxt->UnWarpInstance();\\n uint32_t len5=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i5=0;i5GetValueProperty(pxt->GetArrayElement(pxt->GetArgv(0),i5), \\\"name\\\");\\n if(tnv6!=nullptr){pxt->SwapJs2CUtf8(tnv6,tt5.name);}napi_value tnv7 = pxt->GetValueProperty(pxt->GetArrayElement(pxt->GetArgv(0),i5), \\\"age\\\");\\n if(tnv7!=nullptr){NUMBER_JS_2_C(tnv7,NUMBER_TYPE_4,tt5.age);}undefined\\n p->mans.push_back(tt5);\\n }\\n return nullptr;\\n }\\n\\nstruct if_direct_value_struct {\\n std::string in0;\\n bool in1;\\n \\n std::string out;\\n};\\n\\nstatic napi_value if_direct_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass1 *pInstance = (TestClass1 *)pxt->UnWarpInstance();\\n\\n struct if_direct_value_struct *vio = new if_direct_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);BOOLEAN_JS_2_C(pxt->GetArgv(1),bool,vio->in1);\\n\\n pInstance->if_direct(vio->in0, vio->in1, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct if_callback_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nstatic napi_value if_callback_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass1 *pInstance = (TestClass1 *)pxt->UnWarpInstance();\\n\\n struct if_callback_value_struct *vio = new if_callback_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n pInstance->if_callback(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct if_async_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nstatic void if_async_execute(XNapiTool *pxt, void *data)\\n{\\n if_async_value_struct *vio = (if_async_value_struct *)data;\\n TestClass1 *pInstance = (TestClass1 *)pxt->GetAsyncInstance();\\n\\n pInstance->if_async(vio->in0, vio->out);\\n}\\n\\nstatic void if_async_complete(XNapiTool *pxt, void *data)\\n{\\n if_async_value_struct *vio = (if_async_value_struct *)data;\\n \\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n \\n {\\n napi_value args[1] = {result};\\n pxt->FinishAsync(1, args);\\n }\\n\\n delete vio;\\n}\\n\\nstatic napi_value if_async_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n pxt->SetAsyncInstance(pxt->UnWarpInstance());\\n\\n struct if_async_value_struct *vio = new if_async_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n \\n napi_value result = pxt->StartAsync(if_async_execute, vio, if_async_complete, pxt->GetArgc() == 2 ? pxt->GetArgv(1) : nullptr);\\n\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n return result;\\n}\\n};\\nstruct fun2_value_struct {\\n std::string in0;\\n std::vector in1;\\n Human in2;\\n \\n std::vector out;\\n};\\n\\nnapi_value fun2_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun2_value_struct *vio = new fun2_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0); uint32_t len8=pxt->GetArrayLength(pxt->GetArgv(1));\\n for(uint32_t i8=0;i8GetArrayElement(pxt->GetArgv(1),i8),NUMBER_TYPE_7,tt8);\\n vio->in1.push_back(tt8);\\n }napi_value tnv9 = pxt->GetValueProperty(pxt->GetArgv(2), \\\"name\\\");\\n if(tnv9!=nullptr){pxt->SwapJs2CUtf8(tnv9,vio->in2.name);}napi_value tnv10 = pxt->GetValueProperty(pxt->GetArgv(2), \\\"age\\\");\\n if(tnv10!=nullptr){NUMBER_JS_2_C(tnv10,NUMBER_TYPE_4,vio->in2.age);}undefined\\n\\n fun2(vio->in0, vio->in1, vio->in2, vio->out);\\n\\n napi_value result = nullptr;\\n uint32_t len1=vio->out.size();\\n for(uint32_t i=0;iSwapC2JsUtf8(vio->out[i].name.c_str());\\npxt->SetValueProperty(tnv1,\\\"name\\\",tnv2);\\n}\\n{\\nnapi_value tnv2 = nullptr;\\ntnv2 = NUMBER_C_2_JS(pxt, vio->out[i].age);\\npxt->SetValueProperty(tnv1,\\\"age\\\",tnv2);\\n}\\n{\\nnapi_value tnv2 = nullptr;\\nundefined\\npxt->SetValueProperty(tnv1,\\\"isAboy\\\",tnv2);\\n}\\n\\n pxt->SetArrayElement(result, i, tnv1);\\n }\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun4_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nvoid fun4_execute(XNapiTool *pxt, void *data)\\n{\\n fun4_value_struct *vio = (fun4_value_struct *)data;\\n \\n\\n fun4(vio->in0, vio->out);\\n}\\n\\nvoid fun4_complete(XNapiTool *pxt, void *data)\\n{\\n fun4_value_struct *vio = (fun4_value_struct *)data;\\n \\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n \\n {\\n napi_value args[1] = {result};\\n pxt->FinishAsync(1, args);\\n }\\n\\n delete vio;\\n}\\n\\nnapi_value fun4_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun4_value_struct *vio = new fun4_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n \\n napi_value result = pxt->StartAsync(fun4_execute, vio, fun4_complete, pxt->GetArgc() == 2 ? pxt->GetArgv(1) : nullptr);\\n\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n return result;\\n}\\nstruct fun5_value_struct {\\n bool in0;\\n \\n bool out;\\n};\\n\\nnapi_value fun5_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun5_value_struct *vio = new fun5_value_struct();\\n \\n BOOLEAN_JS_2_C(pxt->GetArgv(0),bool,vio->in0);\\n\\n fun5(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsBool(vio->out);\\n\\n {\\n napi_value args[1] = {result};\\n pxt->SyncCallBack(pxt->GetArgv(1), 1, args);\\n }\\n result = pxt->UndefinedValue();\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\nstruct fun6_value_struct {\\n std::vector in0;\\n \\n bool out;\\n};\\n\\nnapi_value fun6_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun6_value_struct *vio = new fun6_value_struct();\\n \\n uint32_t len11=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i11=0;i11SwapJs2CBool(pxt->GetArrayElement(pxt->GetArgv(0),i11));\\n vio->in0.push_back(tt11);\\n }\\n\\n fun6(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsBool(vio->out);\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}namespace Space3 {\\nclass TestClass2_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass2 *p = new TestClass2();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass2 *p2 = (TestClass2 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_haha(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass2 *p = (TestClass2 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->haha);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_haha(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass2 *p = (TestClass2 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_8,p->haha);\\n return nullptr;\\n }\\n\\n};\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}namespace Space4 {\\nclass TestClass3_middle {\\npublic:\\nstatic napi_value constructor(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = new XNapiTool(env, info);\\n\\n TestClass3 *p = new TestClass3();\\n\\n napi_value thisvar = pxt->WrapInstance(p, release);\\n\\n return thisvar;\\n}\\nstatic void release(void *p)\\n{\\n TestClass3 *p2 = (TestClass3 *)p;\\n delete p2;\\n}\\n\\n static napi_value getvalue_hoho(napi_env env, napi_callback_info info)\\n {\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n TestClass3 *p = (TestClass3 *)pxt->UnWarpInstance();\\n napi_value result;\\n result = NUMBER_C_2_JS(pxt, p->hoho);\\n delete pxt;\\n return result;\\n }\\n static napi_value setvalue_hoho(napi_env env, napi_callback_info info)\\n {\\n std::shared_ptr pxt = std::make_shared(env, info);\\n TestClass3 *p = (TestClass3 *)pxt->UnWarpInstance();\\n NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_9,p->hoho);\\n return nullptr;\\n }\\n\\nstruct add_value_struct {\\n std::vector in0;\\n \\n NUMBER_TYPE_11 out;\\n};\\n\\nstatic napi_value add_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n TestClass3 *pInstance = (TestClass3 *)pxt->UnWarpInstance();\\n\\n struct add_value_struct *vio = new add_value_struct();\\n \\n uint32_t len12=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i12=0;i12GetArrayElement(pxt->GetArgv(0),i12),NUMBER_TYPE_10,tt12);\\n vio->in0.push_back(tt12);\\n }\\n\\n pInstance->add(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = NUMBER_C_2_JS(pxt, vio->out);\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}\\n};\\nstruct fun3_value_struct {\\n std::string in0;\\n \\n std::string out;\\n};\\n\\nnapi_value fun3_middle(napi_env env, napi_callback_info info)\\n{\\n XNapiTool *pxt = std::make_unique(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }\\n \\n\\n struct fun3_value_struct *vio = new fun3_value_struct();\\n \\n pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\\n\\n fun3(vio->in0, vio->out);\\n\\n napi_value result = nullptr;\\n result = pxt->SwapC2JsUtf8(vio->out.c_str());\\n\\n delete vio;\\n if (pxt->IsFailed()) {\\n result = pxt->GetError();\\n }\\n delete pxt; // release\\n return result;\\n}}}}\",\"middleInit\":\"{\\n std::map> valueList;\\n valueList[\\\"name\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_name;\\n valueList[\\\"name\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_name;\\n valueList[\\\"age\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_age;\\n valueList[\\\"age\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_age;\\n valueList[\\\"isAboy\\\"][\\\"getvalue\\\"]=napitest::Human_middle::getvalue_isAboy;\\n valueList[\\\"isAboy\\\"][\\\"setvalue\\\"]=napitest::Human_middle::setvalue_isAboy;\\n std::map funcList;\\n pxt->DefineClass(\\\"Human\\\", napitest::Human_middle::constructor, valueList ,funcList);\\n}\\n{\\n std::map> valueList;\\n valueList[\\\"ahuman\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_ahuman;\\n valueList[\\\"ahuman\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_ahuman;\\n valueList[\\\"num1\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_num1;\\n valueList[\\\"num1\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_num1;\\n valueList[\\\"str1\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_str1;\\n valueList[\\\"str1\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_str1;\\n valueList[\\\"nums\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_nums;\\n valueList[\\\"nums\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_nums;\\n valueList[\\\"strs\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_strs;\\n valueList[\\\"strs\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_strs;\\n valueList[\\\"mans\\\"][\\\"getvalue\\\"]=napitest::TestClass1_middle::getvalue_mans;\\n valueList[\\\"mans\\\"][\\\"setvalue\\\"]=napitest::TestClass1_middle::setvalue_mans;\\n std::map funcList;\\n funcList[\\\"if_direct\\\"] = napitest::TestClass1_middle::if_direct_middle;\\n funcList[\\\"if_callback\\\"] = napitest::TestClass1_middle::if_callback_middle;\\n funcList[\\\"if_async\\\"] = napitest::TestClass1_middle::if_async_middle;\\n pxt->DefineClass(\\\"TestClass1\\\", napitest::TestClass1_middle::constructor, valueList ,funcList);\\n}\\n pxt->DefineFunction(\\\"fun2\\\", napitest::fun2_middle);\\n pxt->DefineFunction(\\\"fun3\\\", napitest::fun3_middle);\\n pxt->DefineFunction(\\\"fun4\\\", napitest::fun4_middle);\\n pxt->DefineFunction(\\\"fun5\\\", napitest::fun5_middle);\\n pxt->DefineFunction(\\\"fun6\\\", napitest::fun6_middle);\\n{\\nnapi_value Space3=pxt->CreateSubObject(exports,\\\"Space3\\\");\\n{\\n std::map> valueList;\\n valueList[\\\"haha\\\"][\\\"getvalue\\\"]=napitest::Space3::TestClass2_middle::getvalue_haha;\\n valueList[\\\"haha\\\"][\\\"setvalue\\\"]=napitest::Space3::TestClass2_middle::setvalue_haha;\\n std::map funcList;\\n pxt->DefineClass(\\\"TestClass2\\\", napitest::Space3::TestClass2_middle::constructor, valueList ,funcList, Space3);\\n}\\n pxt->DefineFunction(\\\"fun3\\\", napitest::Space3::fun3_middle, Space3);\\n{\\nnapi_value Space4=pxt->CreateSubObject(Space3,\\\"Space4\\\");\\n{\\n std::map> valueList;\\n valueList[\\\"hoho\\\"][\\\"getvalue\\\"]=napitest::Space3::Space4::TestClass3_middle::getvalue_hoho;\\n valueList[\\\"hoho\\\"][\\\"setvalue\\\"]=napitest::Space3::Space4::TestClass3_middle::setvalue_hoho;\\n std::map funcList;\\n funcList[\\\"add\\\"] = napitest::Space3::Space4::TestClass3_middle::add_middle;\\n pxt->DefineClass(\\\"TestClass3\\\", napitest::Space3::Space4::TestClass3_middle::constructor, valueList ,funcList, Space4);\\n}\\n pxt->DefineFunction(\\\"fun3\\\", napitest::Space3::Space4::fun3_middle, Space4);\\n}}\"}"
},
"Generate1": {
"ParamGenerate": "{\"valueIn\":\"\\n NUMBER_TYPE_1 in0;\",\"valueOut\":\"\",\"valueCheckout\":\"NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_1,vio->in0);\",\"valueFill\":\"vio->in0\",\"valuePackage\":\"\",\"valueDefine\":\"NUMBER_TYPE_1 &a\"}",