10826e83eSopenharmony_ci/* 20826e83eSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci * you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci * You may obtain a copy of the License at 60826e83eSopenharmony_ci * 70826e83eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci * 90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci * See the License for the specific language governing permissions and 130826e83eSopenharmony_ci * limitations under the License. 140826e83eSopenharmony_ci */ 150826e83eSopenharmony_ci 160826e83eSopenharmony_ci#include <cstdint> 170826e83eSopenharmony_ci#include <memory> 180826e83eSopenharmony_ci#include <string> 190826e83eSopenharmony_ci#include "webview_utils.h" 200826e83eSopenharmony_ci 210826e83eSopenharmony_cinamespace OHOS { 220826e83eSopenharmony_cinamespace Webview { 230826e83eSopenharmony_ci char* MallocCString(const std::string& origin) 240826e83eSopenharmony_ci { 250826e83eSopenharmony_ci if (origin.empty()) { 260826e83eSopenharmony_ci return nullptr; 270826e83eSopenharmony_ci } 280826e83eSopenharmony_ci auto len = origin.length() + 1; 290826e83eSopenharmony_ci char* res = static_cast<char*>(malloc(sizeof(char) * len)); 300826e83eSopenharmony_ci if (res == nullptr) { 310826e83eSopenharmony_ci return nullptr; 320826e83eSopenharmony_ci } 330826e83eSopenharmony_ci return std::char_traits<char>::copy(res, origin.c_str(), len); 340826e83eSopenharmony_ci } 350826e83eSopenharmony_ci 360826e83eSopenharmony_ci uint8_t* MallocUInt8(const std::string& origin) 370826e83eSopenharmony_ci { 380826e83eSopenharmony_ci auto len = origin.length(); 390826e83eSopenharmony_ci if (len <= 0) { 400826e83eSopenharmony_ci return nullptr; 410826e83eSopenharmony_ci } 420826e83eSopenharmony_ci char* res = static_cast<char*>(malloc(sizeof(char) * len)); 430826e83eSopenharmony_ci if (res == nullptr) { 440826e83eSopenharmony_ci return nullptr; 450826e83eSopenharmony_ci } 460826e83eSopenharmony_ci return reinterpret_cast<uint8_t*>(std::char_traits<char>::copy(res, origin.c_str(), len)); 470826e83eSopenharmony_ci } 480826e83eSopenharmony_ci 490826e83eSopenharmony_ci char** VectorToCArrString(const std::vector<std::string>& vec) 500826e83eSopenharmony_ci { 510826e83eSopenharmony_ci if (vec.size() == 0) { 520826e83eSopenharmony_ci return nullptr; 530826e83eSopenharmony_ci } 540826e83eSopenharmony_ci char** result = static_cast<char**>(malloc(sizeof(char*) * vec.size())); 550826e83eSopenharmony_ci if (result == nullptr) { 560826e83eSopenharmony_ci return nullptr; 570826e83eSopenharmony_ci } 580826e83eSopenharmony_ci for (size_t i = 0; i < vec.size(); i++) { 590826e83eSopenharmony_ci result[i] = MallocCString(vec[i]); 600826e83eSopenharmony_ci } 610826e83eSopenharmony_ci return result; 620826e83eSopenharmony_ci } 630826e83eSopenharmony_ci 640826e83eSopenharmony_ci uint8_t* VectorToCArrUI8(const std::vector<uint8_t> vec) 650826e83eSopenharmony_ci { 660826e83eSopenharmony_ci if (vec.size() == 0) { 670826e83eSopenharmony_ci return nullptr; 680826e83eSopenharmony_ci } 690826e83eSopenharmony_ci uint8_t* result = static_cast<uint8_t*>(malloc(sizeof(uint8_t) * vec.size())); 700826e83eSopenharmony_ci if (result == nullptr) { 710826e83eSopenharmony_ci return nullptr; 720826e83eSopenharmony_ci } 730826e83eSopenharmony_ci for (size_t i = 0; i < vec.size(); i++) { 740826e83eSopenharmony_ci result[i] = vec[i]; 750826e83eSopenharmony_ci } 760826e83eSopenharmony_ci return result; 770826e83eSopenharmony_ci } 780826e83eSopenharmony_ci} 790826e83eSopenharmony_ci}