aboutsummaryrefslogtreecommitdiff
path: root/gd/common/strings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gd/common/strings.cc')
-rw-r--r--gd/common/strings.cc178
1 files changed, 0 insertions, 178 deletions
diff --git a/gd/common/strings.cc b/gd/common/strings.cc
deleted file mode 100644
index 13c5c059c..000000000
--- a/gd/common/strings.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common/strings.h"
-
-#include <charconv>
-#include <cstdlib>
-#include <functional>
-#include <iomanip>
-#include <iterator>
-#include <sstream>
-#include <system_error>
-
-namespace {
-
-struct IsSpace : std::unary_function<std::string::value_type, bool> {
- bool operator()(std::string::value_type v) {
- return isspace(static_cast<int>(v));
- }
-};
-
-struct IsHexDigit : std::unary_function<std::string::value_type, bool> {
- bool operator()(std::string::value_type v) {
- return isxdigit(static_cast<int>(v));
- }
-};
-
-} // namespace
-
-namespace bluetooth {
-namespace common {
-
-std::string ToHexString(const std::vector<uint8_t>& value) {
- return ToHexString(value.begin(), value.end());
-}
-
-bool IsValidHexString(const std::string& str) {
- return std::find_if_not(str.begin(), str.end(), IsHexDigit{}) == str.end();
-}
-
-std::optional<std::vector<uint8_t>> FromHexString(const std::string& str) {
- if (str.size() % 2 != 0) {
- LOG_INFO("str size is not divisible by 2, size is %zu", str.size());
- return std::nullopt;
- }
- if (std::find_if_not(str.begin(), str.end(), IsHexDigit{}) != str.end()) {
- LOG_INFO("value contains none hex digit");
- return std::nullopt;
- }
- std::vector<uint8_t> value;
- value.reserve(str.size() / 2);
- for (size_t i = 0; i < str.size(); i += 2) {
- uint8_t v = 0;
- auto ret = std::from_chars(str.c_str() + i, str.c_str() + i + 2, v, 16);
- if (std::make_error_code(ret.ec)) {
- LOG_INFO("failed to parse hex char at index %zu", i);
- return std::nullopt;
- }
- value.push_back(v);
- }
- return value;
-}
-
-std::string StringTrim(std::string str) {
- str.erase(str.begin(), std::find_if_not(str.begin(), str.end(), IsSpace{}));
- str.erase(std::find_if_not(str.rbegin(), str.rend(), IsSpace{}).base(), str.end());
- return str;
-}
-
-std::vector<std::string> StringSplit(const std::string& str, const std::string& delim, size_t max_token) {
- ASSERT_LOG(!delim.empty(), "delim cannot be empty");
- std::vector<std::string> tokens;
- // Use std::string::find and std::string::substr to avoid copying str into a stringstream
- std::string::size_type starting_index = 0;
- auto index_of_delim = str.find(delim);
- while ((max_token == 0 || tokens.size() < (max_token - 1)) && index_of_delim != std::string::npos) {
- tokens.push_back(str.substr(starting_index, index_of_delim - starting_index));
- starting_index = index_of_delim + delim.size();
- index_of_delim = str.find(delim, starting_index);
- }
- // Append last item to the vector if there are anything left
- if (starting_index < (str.size() + 1)) {
- tokens.push_back(str.substr(starting_index));
- }
- return tokens;
-}
-
-std::string StringJoin(const std::vector<std::string>& strings, const std::string& delim) {
- std::stringstream ss;
- for (auto it = strings.begin(); it != strings.end(); it++) {
- ss << *it;
- if (std::next(it) != strings.end()) {
- ss << delim;
- }
- }
- return ss.str();
-}
-
-std::optional<int64_t> Int64FromString(const std::string& str) {
- char* ptr = nullptr;
- errno = 0;
- int64_t value = std::strtoll(str.c_str(), &ptr, 10);
- if (errno != 0) {
- LOG_INFO("cannot parse string '%s' with error '%s'", str.c_str(), strerror(errno));
- return std::nullopt;
- }
- if (ptr == str.c_str()) {
- LOG_INFO("string '%s' is empty or has wrong format", str.c_str());
- return std::nullopt;
- }
- if (ptr != (str.c_str() + str.size())) {
- LOG_INFO("cannot parse whole string '%s'", str.c_str());
- return std::nullopt;
- }
- return value;
-}
-
-std::string ToString(int64_t value) {
- return std::to_string(value);
-}
-
-std::optional<uint64_t> Uint64FromString(const std::string& str) {
- if (str.find('-') != std::string::npos) {
- LOG_INFO("string '%s' contains minus sign, this function is for unsigned", str.c_str());
- return std::nullopt;
- }
- char* ptr = nullptr;
- errno = 0;
- uint64_t value = std::strtoull(str.c_str(), &ptr, 10);
- if (errno != 0) {
- LOG_INFO("cannot parse string '%s' with error '%s'", str.c_str(), strerror(errno));
- return std::nullopt;
- }
- if (ptr == str.c_str()) {
- LOG_INFO("string '%s' is empty or has wrong format", str.c_str());
- return std::nullopt;
- }
- if (ptr != (str.c_str() + str.size())) {
- LOG_INFO("cannot parse whole string '%s'", str.c_str());
- return std::nullopt;
- }
- return value;
-}
-
-std::string ToString(uint64_t value) {
- return std::to_string(value);
-}
-
-std::optional<bool> BoolFromString(const std::string& str) {
- if (str == "true") {
- return true;
- } else if (str == "false") {
- return false;
- } else {
- LOG_INFO("string '%s' is neither true nor false", str.c_str());
- return std::nullopt;
- }
-}
-
-std::string ToString(bool value) {
- return value ? "true" : "false";
-}
-
-} // namespace common
-} // namespace bluetooth \ No newline at end of file