14d6c458bSopenharmony_ci/* 24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License. 54d6c458bSopenharmony_ci * You may obtain a copy of the License at 64d6c458bSopenharmony_ci * 74d6c458bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84d6c458bSopenharmony_ci * 94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and 134d6c458bSopenharmony_ci * limitations under the License. 144d6c458bSopenharmony_ci */ 154d6c458bSopenharmony_ci 164d6c458bSopenharmony_ci#ifndef UTIL_JS_TEXTENCODER_H 174d6c458bSopenharmony_ci#define UTIL_JS_TEXTENCODER_H 184d6c458bSopenharmony_ci 194d6c458bSopenharmony_ci#include <string> 204d6c458bSopenharmony_ci 214d6c458bSopenharmony_ci#include "napi/native_api.h" 224d6c458bSopenharmony_ci#include "napi/native_node_api.h" 234d6c458bSopenharmony_ci#include "native_engine.h" 244d6c458bSopenharmony_ci#include "unicode/ucnv.h" 254d6c458bSopenharmony_ci 264d6c458bSopenharmony_cinamespace OHOS::Util { 274d6c458bSopenharmony_ci constexpr const int32_t API_VERSION_MOD = 100; // 100: api version mod 284d6c458bSopenharmony_ci class TextEncoder { 294d6c458bSopenharmony_ci public: 304d6c458bSopenharmony_ci /** 314d6c458bSopenharmony_ci * Constructor of textdecoder. 324d6c458bSopenharmony_ci * 334d6c458bSopenharmony_ci * @param encoding Encoding format 344d6c458bSopenharmony_ci */ 354d6c458bSopenharmony_ci explicit TextEncoder(const std::string &encoding) : encoding_(encoding) {} 364d6c458bSopenharmony_ci 374d6c458bSopenharmony_ci /** 384d6c458bSopenharmony_ci * Destructor of textencoder. 394d6c458bSopenharmony_ci */ 404d6c458bSopenharmony_ci virtual ~TextEncoder() {} 414d6c458bSopenharmony_ci 424d6c458bSopenharmony_ci /** 434d6c458bSopenharmony_ci * Get encoding format. 444d6c458bSopenharmony_ci * 454d6c458bSopenharmony_ci * @param env NAPI environment parameters. 464d6c458bSopenharmony_ci */ 474d6c458bSopenharmony_ci napi_value GetEncoding(napi_env env) const; 484d6c458bSopenharmony_ci 494d6c458bSopenharmony_ci /** 504d6c458bSopenharmony_ci * Output the corresponding text after encoding the input parameters. 514d6c458bSopenharmony_ci * 524d6c458bSopenharmony_ci * @param env NAPI environment parameters. 534d6c458bSopenharmony_ci * @param src A string that needs to be encoded. 544d6c458bSopenharmony_ci */ 554d6c458bSopenharmony_ci napi_value Encode(napi_env env, napi_value src) const; 564d6c458bSopenharmony_ci 574d6c458bSopenharmony_ci /** 584d6c458bSopenharmony_ci * Place the generated UTF-8 encoded text. 594d6c458bSopenharmony_ci * 604d6c458bSopenharmony_ci * @param env NAPI environment parameters. 614d6c458bSopenharmony_ci * @param src A string that needs to be encoded. 624d6c458bSopenharmony_ci * @param dest Uint8array object instance, which is used to put the generated UTF-8 encoded text into it. 634d6c458bSopenharmony_ci */ 644d6c458bSopenharmony_ci napi_value EncodeInto(napi_env env, napi_value src, napi_value dest) const; 654d6c458bSopenharmony_ci 664d6c458bSopenharmony_ci void SetOrgEncoding(std::string orgEncoding) 674d6c458bSopenharmony_ci { 684d6c458bSopenharmony_ci orgEncoding_ = orgEncoding; 694d6c458bSopenharmony_ci } 704d6c458bSopenharmony_ci private: 714d6c458bSopenharmony_ci std::string encoding_ {}; 724d6c458bSopenharmony_ci std::string orgEncoding_ {}; 734d6c458bSopenharmony_ci }; 744d6c458bSopenharmony_ci} 754d6c458bSopenharmony_ci#endif // UTIL_JS_TEXTENCODER_H 76