1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <cstdint> 17 #include <memory> 18 #include <string> 19 #include "webview_utils.h" 20 21 namespace OHOS { 22 namespace Webview { MallocCString(const std::string & origin)23 char* MallocCString(const std::string& origin) 24 { 25 if (origin.empty()) { 26 return nullptr; 27 } 28 auto len = origin.length() + 1; 29 char* res = static_cast<char*>(malloc(sizeof(char) * len)); 30 if (res == nullptr) { 31 return nullptr; 32 } 33 return std::char_traits<char>::copy(res, origin.c_str(), len); 34 } 35 MallocUInt8(const std::string & origin)36 uint8_t* MallocUInt8(const std::string& origin) 37 { 38 auto len = origin.length(); 39 if (len <= 0) { 40 return nullptr; 41 } 42 char* res = static_cast<char*>(malloc(sizeof(char) * len)); 43 if (res == nullptr) { 44 return nullptr; 45 } 46 return reinterpret_cast<uint8_t*>(std::char_traits<char>::copy(res, origin.c_str(), len)); 47 } 48 VectorToCArrString(const std::vector<std::string> & vec)49 char** VectorToCArrString(const std::vector<std::string>& vec) 50 { 51 if (vec.size() == 0) { 52 return nullptr; 53 } 54 char** result = static_cast<char**>(malloc(sizeof(char*) * vec.size())); 55 if (result == nullptr) { 56 return nullptr; 57 } 58 for (size_t i = 0; i < vec.size(); i++) { 59 result[i] = MallocCString(vec[i]); 60 } 61 return result; 62 } 63 VectorToCArrUI8(const std::vector<uint8_t> vec)64 uint8_t* VectorToCArrUI8(const std::vector<uint8_t> vec) 65 { 66 if (vec.size() == 0) { 67 return nullptr; 68 } 69 uint8_t* result = static_cast<uint8_t*>(malloc(sizeof(uint8_t) * vec.size())); 70 if (result == nullptr) { 71 return nullptr; 72 } 73 for (size_t i = 0; i < vec.size(); i++) { 74 result[i] = vec[i]; 75 } 76 return result; 77 } 78 CArrStringToVector(CArrString cArrStr)79 std::vector<std::string> CArrStringToVector(CArrString cArrStr) 80 { 81 std::vector<std::string> vec; 82 if (cArrStr.head == nullptr || cArrStr.size <= 0) { 83 return vec; 84 } 85 for (int64_t i = 0; i < cArrStr.size; i++) { 86 if (cArrStr.head[i] != nullptr) { 87 vec.emplace_back(cArrStr.head[i]); 88 } 89 } 90 return vec; 91 } 92 } 93 }