调整C++ 代码

This commit is contained in:
2024-05-28 18:38:11 +08:00
parent 9c252dd8d8
commit de31b79465
16 changed files with 109 additions and 88 deletions

View File

@@ -0,0 +1 @@
export {} from './src/main/cpp/types/libnatvie_lib/index'

View File

@@ -1,5 +1,5 @@
{
"name": "native_lib",
"name": "@devwiki/native_lib",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "Index.ets",
@@ -7,6 +7,6 @@
"license": "Apache-2.0",
"packageType": "InterfaceHar",
"dependencies": {
"libnatvie_lib.so": "file:./src/main/cpp/types/libnatvie_lib"
"native_lib.so": "file:./src/main/cpp/types/libnatvie_lib"
}
}

View File

@@ -13,4 +13,4 @@ include_directories(${NATIVERENDER_ROOT_PATH}
add_library(native_lib SHARED napi_init.cpp)
target_link_libraries(native_lib PUBLIC ../../../../cppLib/dist/lib/arm64-v8a)
target_link_libraries(native_lib PUBLIC ../../../../cppLib/dist/lib/arm64-v8a/libcalculate.so)

View File

@@ -4,40 +4,36 @@
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#include "Calculator.h"
#include "Calculate.h"
#include "CalculateAdaptor.h"
#include "library.h"
Calculator::Calculator() {
CalculateAdaptor::CalculateAdaptor() {
_calculate = &Calculate::getInstance();
}
Calculator::~Calculator() {
CalculateAdaptor::CalculateAdaptor(napi_env env, napi_value thisVar) {
_calculate = &Calculate::getInstance();
}
CalculateAdaptor::~CalculateAdaptor() {
}
Calculator *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
CalculateAdaptor *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
{
napi_value thisVar = nullptr;
void *data = nullptr;
napi_get_cb_info(env, cbinfo, &argc, argv, &thisVar, &data);
Calculator *calculator = nullptr;
CalculateAdaptor *calculator = nullptr;
napi_unwrap(env, thisVar, (void **)&calculator);
return calculator;
}
Calculate *util_get_napi_calculate(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv)
{
Calculator *calculator = util_get_napi_info(env, cbinfo, argc, argv);
if (calculator) {
return calculator->_calculate;
}
return nullptr;
}
napi_value calculate_add(napi_env env, napi_callback_info info) {
size_t argc = 2;
napi_value argv[2] = {0};
Calculator *calculator = util_get_napi_info(env, info, argc, argv);
CalculateAdaptor *calculator = util_get_napi_info(env, info, argc, argv);
int32_t result = 0;
napi_status a = napi_ok;
@@ -51,10 +47,10 @@ napi_value calculate_add(napi_env env, napi_callback_info info) {
return value;
}
CalculateInfo calculate_getInfo(napi_env env, napi_callback_info info) {
napi_value calculate_getInfo(napi_env env, napi_callback_info info) {
size_t argc = 0;
napi_value argv[1] = {0};
Calculator *calculator = util_get_napi_info(env, info, argc, argv);
CalculateAdaptor *calculator = util_get_napi_info(env, info, argc, argv);
CalculateInfo info2;
info2.name = calculator->_calculate->getInfo().name;
@@ -62,4 +58,6 @@ CalculateInfo calculate_getInfo(napi_env env, napi_callback_info info) {
info2.versionName = calculator->_calculate->getInfo().versionName;
napi_value value;
return value;
}

View File

@@ -0,0 +1,27 @@
//
// Created on 2024/4/22.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HM4DEMO_CALCULATOR_H
#define HM4DEMO_CALCULATOR_H
#include "library.h"
#include "js_native_api.h"
class CalculateAdaptor {
public:
CalculateAdaptor();
CalculateAdaptor(napi_env env, napi_value thisVar);
~CalculateAdaptor();
Calculate *_calculate;
};
CalculateAdaptor *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
napi_value calculate_add(napi_env env, napi_callback_info info);
napi_value calculate_getInfo(napi_env env, napi_callback_info info);
#endif //HM4DEMO_CALCULATOR_H

View File

@@ -1,27 +0,0 @@
//
// Created on 2024/4/22.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".
#ifndef HM4DEMO_CALCULATOR_H
#define HM4DEMO_CALCULATOR_H
#include "Calculate.h"
#include "js_native_api.h"
class Calculator {
public:
Calculator();
~Calculator();
Calculate *_calculate;
};
Calculator *util_get_napi_info(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
Calculate *util_get_napi_calculate(napi_env env, napi_callback_info cbinfo, size_t argc, napi_value *argv);
int add(int a, int b);
CalculateInfo getInfo();
#endif //HM4DEMO_CALCULATOR_H

View File

@@ -1,40 +1,38 @@
#include "napi/native_api.h"
#include "Calculator.h"
#include "CalculateAdaptor.h"
#include "js_native_api.h"
static napi_value Add(napi_env env, napi_callback_info info)
{
size_t requireArgc = 2;
size_t argc = 2;
napi_value args[2] = {nullptr};
napi_get_cb_info(env, info, &argc, args , nullptr, nullptr);
napi_valuetype valuetype0;
napi_typeof(env, args[0], &valuetype0);
napi_valuetype valuetype1;
napi_typeof(env, args[1], &valuetype1);
double value0;
napi_get_value_double(env, args[0], &value0);
double value1;
napi_get_value_double(env, args[1], &value1);
napi_value sum;
napi_create_double(env, value0 + value1, &sum);
return sum;
napi_value JS_Constructor(napi_env env, napi_callback_info info) {
napi_value thisVar = nullptr;
void *data = nullptr;
napi_get_cb_info(env, info, nullptr, nullptr, &thisVar, &data);
CalculateAdaptor *adaptor = new CalculateAdaptor(env, thisVar);
napi_wrap(
env, thisVar, adaptor,
[](napi_env env, void *data, void *hint) {
CalculateAdaptor *ada = (CalculateAdaptor *)data;
delete ada;
},
nullptr, nullptr);
return thisVar;
}
EXTERN_C_START
napi_value Init(napi_env env, napi_value exports)
{
napi_property_descriptor desc[] = {{"add", nullptr, Calculator::add, nullptr, nullptr, nullptr, napi_default, nullptr},
{"getInfo", nullptr, GetInfo, nullptr, nullptr, nullptr, napi_default, nullptr},
{"getInstance", nullptr, GetInstance, nullptr, nullptr, nullptr, napi_default, nullptr}};
const char className[] = "CalculateAdaptor";
napi_property_descriptor desc[] = {{"add", nullptr, calculate_add, nullptr, nullptr, nullptr, napi_default, nullptr},
{"getInfo", nullptr, calculate_getInfo, nullptr, nullptr, nullptr, napi_default, nullptr}};
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
napi_value result = nullptr;
napi_define_class(env, className, sizeof(className), JS_Constructor, nullptr,
sizeof(desc) / sizeof(desc[0]), desc, &result);
napi_set_named_property(env, exports, "CalculateAdaptor", result);
return exports;
}
EXTERN_C_END

View File

@@ -1,5 +1,4 @@
export class Calculate {
export class CalculateAdapter {
add(a: number, b: number): number;
static getInstance(): Calculate;
getInfo(): Object;
}

View File

@@ -1,5 +1,5 @@
{
"name": "native_lib_lib.so",
"name": "native_lib.so",
"types": "./index.d.ts",
"version": "",
"description": "Please describe the basic information."

View File

@@ -0,0 +1,6 @@
export interface CalculateInfo {
name: string;
versionName: string;
versionCode: number;
}

View File

@@ -0,0 +1,20 @@
import { CalculateAdapter } from 'native_lib.so'
import { CalculateInfo } from './CalculateDefine'
export class Calculator {
private adaptor!:CalculateAdapter;
constructor() {
this.adaptor = new CalculateAdapter();
}
add(a:number, b: number): number {
return this.adaptor.add(a, b);
}
getInfo(): CalculateInfo {
return this.adaptor.getInfo() as CalculateInfo;
}
}

View File

@@ -1,8 +0,0 @@
import { Calculate } from 'libnatvie_lib.so';
export class Calculator {
static add(a: number, b:number) : number {
return Calculate.add(a, b);
}
}