diff --git a/interop/src/cpp/napi/convertors-napi.cc b/interop/src/cpp/napi/convertors-napi.cc index 682db98f1da85fe31f090b1e4d50bc32942c1c20..cd55ad38ed12b18bc1faf887904a6d9cb1b4e9f8 100644 --- a/interop/src/cpp/napi/convertors-napi.cc +++ b/interop/src/cpp/napi/convertors-napi.cc @@ -209,4 +209,44 @@ static Napi::Object InitModule(Napi::Env env, Napi::Object exports) { return ProvideModuleRegisterCallback()(env, exports); } +// TODO Actually is a part of NODE_API_MODULE_ADAPTER + +#ifndef KOALA_OHOS_NAPI NODE_API_MODULE_ADAPTER(INTEROP_LIBRARY_NAME, InitModule) +#else +// TODO replace 'xml' with some macro defines + +extern const char _binary_xml_abc_start[]; +extern const char _binary_xml_abc_end[]; + +extern "C" +__attribute__((visibility("default"))) void NAPI_xml_GetABCCode(const char** buf, int* buflen) +{ + if (buf != nullptr) { + *buf = _binary_xml_abc_start; + } + if (buflen != nullptr) { + *buflen = _binary_xml_abc_end - _binary_xml_abc_start; + } +} + +static napi_value __napi_InitModule(napi_env env, napi_value exports) { + return Napi::RegisterModule(env, exports, InitModule); +} + +static napi_module_with_js xmlModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = __napi_InitModule, + .nm_modname = "xml", + .nm_priv = nullptr, + .nm_get_abc_code = NAPI_xml_GetABCCode, + .nm_get_js_code = nullptr, +}; + +extern "C" __attribute__((constructor)) void XmlRegisterModule() +{ + napi_module_with_js_register(&xmlModule); +} +#endif \ No newline at end of file