调整C++ 代码

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

View File

@ -8,7 +8,8 @@
"dependencies": {
"@devwiki/common_ui": "file:../common_ui",
"@devwiki/base": "file:../base",
"@ohos/axios": "^2.2.0"
"@ohos/axios": "^2.2.0",
"@devwiki/native_lib": "file:../native_lib"
},
"devDependencies": {},
"dynamicDependencies": {}

View File

@ -8,6 +8,7 @@ import { Log } from '@devwiki/base';
import { BaseLocalStorage, ScreenUtil } from '@devwiki/base';
import { HomeItem, HomeItemGroup } from '../model/Home';
import { common, Want } from '@kit.AbilityKit';
import { CalculateAdapter } from '@devwiki/native_lib/src/main/cpp/types/libnatvie_lib';
@Entry
@ -63,9 +64,13 @@ struct Index {
}
];
adapter?: CalculateAdapter;
aboutToAppear(): void {
ScreenUtil.getInstance().initScreenSize();
BaseLocalStorage.getInstance().init(getContext(this));
this.adapter = new CalculateAdapter();
let a = this.adapter.add(1,2);
}
onPageShow(): void {

View File

@ -35,7 +35,8 @@ export struct HomePage {
TabContent() {
TabView2();
}.tabBar("View2")
}.onChange((index) => {
}.barOverlap(true)
.onChange((index) => {
if (index == 0) {
this.tv1ViewModel.onViewShow();
this.tv2ViewModel.onViewHide();

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);
}
}