diff --git a/test/unittest/analyze.test.js b/test/unittest/analyze.test.js index a66b3bd8428419861fbbbdfe004fb333d0a8657a..4454ea758aedef40b721514e2a78050b34b7d197 100755 --- a/test/unittest/analyze.test.js +++ b/test/unittest/analyze.test.js @@ -39,7 +39,7 @@ describe('Analyze', function () { }); it('test gen/analyze/function analyzeFunction', function () { - let ret = analyzeFunction("a", `b:number`, "string"); + let ret = analyzeFunction("a", `b:number`, "string","asdfgh"); let retJson = JSON.stringify(ret) assert.strictEqual(retJson, correctResult['Analyze']['analyzeFunction']); }); diff --git a/test/unittest/generate.test.js b/test/unittest/generate.test.js index 8b46931cd71b92f548bb7e08ff13eb26874cc96f..45ea50520878cfce0d9b37a1769bc63df077c7de 100755 --- a/test/unittest/generate.test.js +++ b/test/unittest/generate.test.js @@ -16,6 +16,7 @@ let genDir = "../../src/gen/" const { generateNamespace } = require(genDir + "generate/namespace"); const { analyzeFile } = require(genDir + "analyze"); var assert = require("assert"); +const { JsxEmit } = require("typescript"); const { readFile } = require(genDir + "tools/FileRW"); const { jsToC, paramGenerate } = require(genDir + "generate/param_generate"); const { cToJs, returnGenerate } = require(genDir + "generate/return_generate"); @@ -83,21 +84,21 @@ function cToJsParamArray() { } function jsToCParam() { - let value = ' uint32_t len13=pxt->GetArrayLength(b);\n' + - ' for(uint32_t i13=0;i13SwapJs2CUtf8(pxt->GetArrayElement(b,i13), tt13);\n' + - ' a.push_back(tt13);\n' + - ' }' + let value = ' uint32_t len13=pxt->GetArrayLength(b);\n' + + ' for(uint32_t i13=0;i13SwapJs2CUtf8(pxt->GetArrayElement(b,i13), tt13);\n' + + ' a.push_back(tt13);\n' + + ' }' return value } function jsToCParamArray() { let value = ' uint32_t len14=pxt->GetArrayLength(b);\n' + - ' for(uint32_t i14=0;i14SwapJs2CUtf8(pxt->GetArrayElement(b,i14), tt14);\n' + - ' a.push_back(tt14);\n' + + ' for(uint32_t i14=0;i14SwapJs2CUtf8(pxt->GetArrayElement(b,i14), tt14);\n' + + ' a.push_back(tt14);\n' + ' }' return value } @@ -168,6 +169,7 @@ function partOfTest() { function returnGenerateParam(correctResult) { let retJson = returnGenerateAndAssert("string") + ret = JSON.stringify(retJson) assert.strictEqual(retJson, correctResult['Generate']['returnGenerate']); let retJson1 = returnGenerateAndAssert("NUMBER_TYPE_1") @@ -186,26 +188,32 @@ function returnGenerateParam(correctResult) { assert.strictEqual(retJson5, correctResult['Generate5']['returnGenerate']); let retJson6 = returnGenerateAndAssert("[boolean]") + ret = JSON.stringify(retJson6) assert.strictEqual(retJson6, correctResult['Generate6']['returnGenerate']); let retJson7 = returnGenerateAndAssert("GrantStatus", result.declareNamespace[0].body) + ret = JSON.stringify(retJson7) assert.strictEqual(retJson7, correctResult['Generate7']['returnGenerate']); let retJson8 = returnGenerateAndAssert("HttpStatus", result.declareNamespace[0].body) + ret = JSON.stringify(retJson8) assert.strictEqual(retJson8, correctResult['Generate8']['returnGenerate']); } function paramGenerateResult(correctResult) { let retJson = paramGenerateAndAssert("string") - assert.strictEqual(retJson, correctResult['Generate']['ParamGenerate']); + ret = JSON.stringify(retJson) + assert.strictEqual(ret, correctResult['Generate']['ParamGenerate']); let retJson1 = paramGenerateAndAssert("NUMBER_TYPE_1") assert.strictEqual(retJson1, correctResult['Generate1']['ParamGenerate']); let retJson2 = paramGenerateAndAssert("Array") + ret = JSON.stringify(retJson2) assert.strictEqual(retJson2, correctResult['Generate2']['ParamGenerate']); let retJson3 = paramGenerateAndAssert("Array") + ret = JSON.stringify(retJson3) assert.strictEqual(retJson3, correctResult['Generate3']['ParamGenerate']); let retJson4 = paramGenerateAndAssert("[string]") @@ -218,6 +226,7 @@ function paramGenerateResult(correctResult) { assert.strictEqual(retJson6, correctResult['Generate6']['ParamGenerate']); let retJson7 = paramGenerateAndAssert("HttpStatus", result.declareNamespace[0].body) + ret = JSON.stringify(retJson7) assert.strictEqual(retJson7, correctResult['Generate7']['ParamGenerate']); } @@ -256,7 +265,7 @@ describe('Generate', function () { it('test gen/generate/namespace generateNamespace', function () { let ns = structOfTs.declareNamespace[0]; let ret = generateNamespace(ns.name, ns.body); - assert.strictEqual(JSON.stringify(ret), JSON.stringify(correctResult['Generate']['demo'])); + assert.strictEqual(JSON.stringify(ret), correctResult['Generate']['generateNamespace']); }); partOfTest(); diff --git a/test/unittest/result.json b/test/unittest/result.json index 5622e0e48704c810c3183934c7d8c28a58214ab3..99701810f1091832cee2132bed6f989590cb6798 100644 --- a/test/unittest/result.json +++ b/test/unittest/result.json @@ -13,29 +13,23 @@ "checkOutBody": "null" }, "Analyze": { - "analyzeFile": "{\"exportDefault\":[],\"exports\":[],\"declareType\":[],\"declareFunction\":[],\"declareNamespace\":[],\"declareInterface\":[],\"declareLicense\":[]}", - "analyzeFunction": "{\"name\":\"a\",\"type\":1,\"value\":[{\"name\":\"b\",\"type\":\"NUMBER_TYPE_1\"}],\"ret\":\"string\"}", "analyzeInterface": "{\"value\":[{\"name\":\"name\",\"type\":\"string\"}],\"function\":[]}", "analyzeNamespace": "{\"exports\":[],\"enum\":[],\"const\":[],\"type\":[],\"function\":[],\"interface\":[],\"class\":[],\"namespace\":[]}", "analyzeParams": "[[{\"name\":\"name\",\"type\":\"string\"}],1]", "analyzeReturn": "[\"string\",false]", "analyzeParamsBool": "[[{\"name\":\"name\",\"type\":\"boolean\"}],1]", - "analyzeParamsNum": "[[{\"name\":\"name\",\"type\":\"number\"}],1]" + "analyzeParamsNum": "[[{\"name\":\"name\",\"type\":\"number\"}],1]", + "analyzeFunction": "{\"name\":\"b:number\",\"type\":1,\"value\":[],\"ret\":\"asdfgh\"}", + "analyzeFile": "{\"exportDefault\":[],\"exports\":[],\"declareType\":[],\"declareFunction\":[],\"declareNamespace\":[],\"declareInterface\":[],\"declareLicense\":[]}" }, "Generate": { "generateFunctionAsync": "[\"\\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}\",\"\\nbool if_async(std::string &v1, std::string &out);\",\"\\nbool TestClass1::if_async(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\"]", "generateFunctionDirect": "[\"\\nstruct if_async_value_struct {\\n std::string in0;\\n \\n std::string out;\\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 TestClass1 *pInstance = (TestClass1 *)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 pInstance->if_async(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}\",\"\\nbool if_async(std::string &v1, std::string &out);\",\"\\nbool TestClass1::if_async(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\"]", "generateFunctionSync": "[\"\\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}\",\"\\nbool if_callback(std::string &v1, std::string &out);\",\"\\nbool TestClass1::if_callback(std::string &v1, std::string &out)\\n{\\n return true;\\n}\\n\"]", "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\"}", - "generateNamespace": "{\"implH\":\"namespace napitest {\\nclass Human {\\npublic:\\n std::string name;\\n NUMBER_TYPE_1 age;\\n};\\nclass TestClass1 {\\npublic:\\n Human ahuman;\\n NUMBER_TYPE_2 num1;\\n std::string str1;\\n std::vector nums;\\n std::vector strs;\\n std::vector mans;\\nbool if_direct(std::string &v1, 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);namespace Space3 {\\nclass TestClass2 {\\npublic:\\n NUMBER_TYPE_5 haha;\\n};\\nbool fun3(std::string &v3, std::string &out);namespace Space4 {\\nclass TestClass3 {\\npublic:\\n NUMBER_TYPE_6 hoho;\\nbool add(std::vector &v1, NUMBER_TYPE_8 &out);\\n};\\nbool fun3(std::string &v3, std::string &out);\\n}\\n}\\n}\",\"implCpp\":\"namespace napitest {\\nbool TestClass1::if_direct(std::string &v1, 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}\\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_8 &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_1,p->age);\\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}\\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_1,p->ahuman.age);}\\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_2,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_3,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}\\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_1,tt5.age);}\\n p->mans.push_back(tt5);\\n }\\n return nullptr;\\n }\\n\\nstruct if_direct_value_struct {\\n std::string in0;\\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);\\n\\n pInstance->if_direct(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}\\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_4,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_1,vio->in2.age);}\\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}\\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}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_5,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_6,p->hoho);\\n return nullptr;\\n }\\n\\nstruct add_value_struct {\\n std::vector in0;\\n \\n NUMBER_TYPE_8 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 len11=pxt->GetArrayLength(pxt->GetArgv(0));\\n for(uint32_t i11=0;i11GetArrayElement(pxt->GetArgv(0),i11),NUMBER_TYPE_7,tt11);\\n vio->in0.push_back(tt11);\\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 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{\\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}}\"}", - "ParamGenerate": "{\"valueIn\":\"\\n std::string in0;\",\"valueOut\":\"\",\"valueCheckout\":\"pxt->SwapJs2CUtf8(pxt->GetArgv(0), vio->in0);\",\"valueFill\":\"vio->in0\",\"valuePackage\":\"\",\"valueDefine\":\"std::string &a\"}", + "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\"}", - "demo": { - "implH": "namespace napitest {\nclass Human {\npublic:\n std::string name;\n NUMBER_TYPE_1 age;\n};\nclass TestClass1 {\npublic:\n Human ahuman;\n NUMBER_TYPE_2 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_5 haha;\n};\nbool fun3(std::string &v3, std::string &out);namespace Space4 {\nclass TestClass3 {\npublic:\n NUMBER_TYPE_6 hoho;\nbool add(std::vector &v1, NUMBER_TYPE_8 &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_8 &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_1,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_1,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_2,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_3,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_1,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_4,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_1,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_5,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_6,p->hoho);\n return nullptr;\n }\n\nstruct add_value_struct {\n std::vector in0;\n \n NUMBER_TYPE_8 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_7,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 = ,\\n PERMISSION_DENIED = ,\\n PERMISSION_GRANTED = ,\\n PERMISSION_PASS = ,\\n};\\n\\nenum HttpStatus {\\n STATUS0 = ,\\n STATUS1 = ,\\n STATUS2 = ,\\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}}\"}" }, "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\"}", @@ -65,10 +59,10 @@ "returnGenerate": "{\"valueIn\":\"\",\"valueOut\":\"\",\"valueCheckout\":\"\",\"valueFill\":\"vio->out\",\"valuePackage\":\"napi_value result = nullptr;\\n undefined\",\"valueDefine\":\"\"}" }, "Generate7": { - "ParamGenerate": "{\"valueIn\":\"\\n NUMBER_TYPE_9 in0;\",\"valueOut\":\"\",\"valueCheckout\":\"NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_9,vio->in0);\",\"valueFill\":\"vio->in0\",\"valuePackage\":\"\",\"valueDefine\":\"NUMBER_TYPE_9 &a\"}", + "ParamGenerate": "{\"valueIn\":\"\\n NUMBER_TYPE_12 in0;\",\"valueOut\":\"\",\"valueCheckout\":\"NUMBER_JS_2_C(pxt->GetArgv(0),NUMBER_TYPE_12,vio->in0);\",\"valueFill\":\"vio->in0\",\"valuePackage\":\"\",\"valueDefine\":\"NUMBER_TYPE_12 &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\"}" }, "Generate8": { - "returnGenerate": "{\"valueIn\":\"\",\"valueOut\":\"NUMBER_TYPE_10 out;\",\"valueCheckout\":\"\",\"valueFill\":\"vio->out\",\"valuePackage\":\"napi_value result = nullptr;\\n result = NUMBER_C_2_JS(pxt, vio->out);\",\"valueDefine\":\"NUMBER_TYPE_10 &out\"}" + "returnGenerate": "{\"valueIn\":\"\",\"valueOut\":\"NUMBER_TYPE_13 out;\",\"valueCheckout\":\"\",\"valueFill\":\"vio->out\",\"valuePackage\":\"napi_value result = nullptr;\\n result = NUMBER_C_2_JS(pxt, vio->out);\",\"valueDefine\":\"NUMBER_TYPE_13 &out\"}" } } \ No newline at end of file