14d6c458bSopenharmony_ci/* 24d6c458bSopenharmony_ci * Copyright (c) 2024 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_STRINGDECODER_H 174d6c458bSopenharmony_ci#define UTIL_JS_STRINGDECODER_H 184d6c458bSopenharmony_ci 194d6c458bSopenharmony_ci#include <string> 204d6c458bSopenharmony_ci#include "napi/native_api.h" 214d6c458bSopenharmony_ci#include "napi/native_node_api.h" 224d6c458bSopenharmony_ci#include "unicode/ucnv.h" 234d6c458bSopenharmony_ci 244d6c458bSopenharmony_cinamespace OHOS::Util { 254d6c458bSopenharmony_ciclass StringDecoder { 264d6c458bSopenharmony_cipublic: 274d6c458bSopenharmony_ci explicit StringDecoder(const std::string &encoding); 284d6c458bSopenharmony_ci ~StringDecoder() { ucnv_close(conv_); } 294d6c458bSopenharmony_ci napi_value Write(napi_env env, napi_value src, UBool flush = false); 304d6c458bSopenharmony_ci napi_value End(napi_env env, napi_value src); 314d6c458bSopenharmony_ci napi_value End(napi_env env); 324d6c458bSopenharmony_ciprivate: 334d6c458bSopenharmony_ci void FreedMemory(UChar *&pData); 344d6c458bSopenharmony_ci const char* pend_ {}; 354d6c458bSopenharmony_ci int pendingLen_ {}; 364d6c458bSopenharmony_ci UConverter* conv_ {}; 374d6c458bSopenharmony_ci }; 384d6c458bSopenharmony_ci} 394d6c458bSopenharmony_ci#endif // UTIL_JS_STRINGDECODER_H 40