mirror of
https://gitee.com/openharmony/napi_generator
synced 2024-11-27 02:30:36 +00:00
!477 vscode插件增加snippets,对napi class 代码功能提供代码片段
Merge pull request !477 from 苟晶晶/master
This commit is contained in:
commit
5889eaa940
@ -10,7 +10,8 @@
|
||||
"vscode": "^1.34.0"
|
||||
},
|
||||
"categories": [
|
||||
"Other"
|
||||
"Other",
|
||||
"Snippets"
|
||||
],
|
||||
"activationEvents": [
|
||||
"onCommand:extension.h2dts",
|
||||
@ -106,7 +107,12 @@
|
||||
"group": "2_workspace"
|
||||
}
|
||||
]
|
||||
"snippets": [
|
||||
{
|
||||
"language": "cpp",
|
||||
"path": "./snippets/napi_class_snippets.json"
|
||||
}
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"vscode:prepublish": "npm run compile",
|
||||
|
83
src/vscode_plugin/snippets/napi_class_snippets.json
Normal file
83
src/vscode_plugin/snippets/napi_class_snippets.json
Normal file
@ -0,0 +1,83 @@
|
||||
{
|
||||
"Napi Class": {
|
||||
"prefix": "napiclass",
|
||||
"body": [
|
||||
"class HelloWorld {",
|
||||
" public:",
|
||||
" static napi_value Init(napi_env env, napi_value exports);",
|
||||
" static void Destructor(napi_env env, void* nativeObject, void* finalize_hint);",
|
||||
" private:",
|
||||
" explicit HelloWorld();",
|
||||
" ~HelloWorld();",
|
||||
" static napi_value New(napi_env env, napi_callback_info info);",
|
||||
" static napi_value GetValue(napi_env env, napi_callback_info info);",
|
||||
" static napi_value SetValue(napi_env env, napi_callback_info info);",
|
||||
" static napi_value Hello(napi_env env, napi_callback_info info);",
|
||||
" std::string value_;",
|
||||
" napi_env env_;",
|
||||
" napi_ref wrapper_;",
|
||||
"};",
|
||||
"HelloWorld::HelloWorld(): value_(\"\"), env_(nullptr), wrapper_(nullptr) {}",
|
||||
"HelloWorld::~HelloWorld() { napi_delete_reference(env_, wrapper_); }",
|
||||
"void HelloWorld::Destructor(napi_env env, void* nativeObject, [[maybe_unused]] void* finalize_hint)",
|
||||
"{",
|
||||
" reinterpret_cast<HelloWorld*>(nativeObject)->~HelloWorld();",
|
||||
"}",
|
||||
"napi_value HelloWorld::New(napi_env env, napi_callback_info info)",
|
||||
"{",
|
||||
" napi_value newTarget;",
|
||||
" // Check if the constructor was invoked with new.",
|
||||
" napi_get_new_target(env, info, &newTarget);",
|
||||
" if (newTarget != nullptr) {",
|
||||
" // Invoked as the constructor `new HelloWorld()`.",
|
||||
" napi_value jsThis;",
|
||||
" // Retrieve the callback's context and arguments.",
|
||||
" napi_get_cb_info(env, info, nullptr, nullptr, &jsThis, nullptr);",
|
||||
" HelloWorld* obj = new HelloWorld();",
|
||||
" obj->env_ = env;",
|
||||
" // Wrap the C++ object obj in the ArkTS object jsThis.",
|
||||
" napi_wrap(env, jsThis, reinterpret_cast<void*>(obj), HelloWorld::Destructor, nullptr, &obj->wrapper_);",
|
||||
" return jsThis;",
|
||||
" } else {",
|
||||
" OH_LOG_ERROR(LOG_APP, \"HelloWorld must be invoked as a constructor with `new`\");",
|
||||
" return nullptr;",
|
||||
" }",
|
||||
"}",
|
||||
"napi_value HelloWorld::GetValue(napi_env env, napi_callback_info info)",
|
||||
"{",
|
||||
" // Todo: you can use \"napiobjectin\" command that get object param from js.",
|
||||
" HelloWorld* obj;",
|
||||
" // Retrieve obj (the C++ object) previously wrapped in jsThis (the ArkTS object), and perform subsequent operations.",
|
||||
" napi_unwrap(env, jsThis, reinterpret_cast<void**>(&obj));",
|
||||
" // Todo: you can use \"napistringutf8out\" command that return string utf8 value to js.",
|
||||
"}",
|
||||
"napi_value HelloWorld::SetValue(napi_env env, napi_callback_info info)",
|
||||
"{",
|
||||
" // Todo: you can use \"napiobjectin\" command that get object param from js.",
|
||||
" HelloWorld* obj;",
|
||||
" napi_unwrap(env, jsThis, reinterpret_cast<void**>(&obj));",
|
||||
" // Todo: you can use \"napistringutf8in\" command that get string utf8 param from js.",
|
||||
" return nullptr;",
|
||||
"}",
|
||||
"napi_value HelloWorld::Hello(napi_env env, napi_callback_info info)",
|
||||
"{",
|
||||
" OH_LOG_INFO(LOG_APP, \"HelloWorld::Hello World!\");",
|
||||
" return nullptr;",
|
||||
"}",
|
||||
"napi_value HelloWorld::Init(napi_env env, napi_value exports)",
|
||||
"{",
|
||||
" // Define properties and methods for a N-API object",
|
||||
" napi_property_descriptor properties[] = {",
|
||||
" { \"value\", 0, 0, GetValue, SetValue, 0, napi_default, 0 },",
|
||||
" { \"hello\", nullptr, Hello, nullptr, nullptr, nullptr, napi_default, nullptr }",
|
||||
" };",
|
||||
" napi_value cons;",
|
||||
" // Define a js class",
|
||||
" napi_define_class(env, \"HelloWorld\", NAPI_AUTO_LENGTH, New, nullptr, 2, properties, &cons);",
|
||||
" // Set the 'HelloWorld' class on the exports object.",
|
||||
" napi_set_named_property(env, exports, \"HelloWorld\", cons);",
|
||||
" return exports;",
|
||||
"}"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user