diff options
Diffstat (limited to 'support/StringSupport.h')
-rw-r--r-- | support/StringSupport.h | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/support/StringSupport.h b/support/StringSupport.h index 5e237c7dff..7d1b5e7778 100644 --- a/support/StringSupport.h +++ b/support/StringSupport.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2022 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -57,14 +57,14 @@ inline int stoi(const std::string &str, std::size_t *pos = 0, NumericBase base = assert(base == NumericBase::BASE_10 || base == NumericBase::BASE_16); unsigned int x; std::stringstream ss; - if(base == NumericBase::BASE_16) + if (base == NumericBase::BASE_16) { ss << std::hex; } ss << str; ss >> x; - if(pos) + if (pos) { std::string s; std::stringstream ss_p; @@ -93,14 +93,14 @@ inline unsigned long stoul(const std::string &str, std::size_t *pos = 0, Numeric assert(base == NumericBase::BASE_10 || base == NumericBase::BASE_16); std::stringstream stream; unsigned long value = 0; - if(base == NumericBase::BASE_16) + if (base == NumericBase::BASE_16) { stream << std::hex; } stream << str; stream >> value; - if(pos) + if (pos) { std::string s; std::stringstream ss_p; @@ -113,7 +113,7 @@ inline unsigned long stoul(const std::string &str, std::size_t *pos = 0, Numeric return value; } -#if(__ANDROID__ || BARE_METAL) +#if (__ANDROID__ || BARE_METAL) /** Convert integer and float values to string. * * @note This function implements the same behaviour as std::to_string. The @@ -124,13 +124,19 @@ inline unsigned long stoul(const std::string &str, std::size_t *pos = 0, Numeric * @return String representation of @p value. */ template <typename T, typename std::enable_if<std::is_arithmetic<typename std::decay<T>::type>::value, int>::type = 0> -inline std::string to_string(T && value) +inline std::string to_string(T &&value) { std::stringstream stream; stream << std::forward<T>(value); return stream.str(); } +// Specialization for const std::string& +inline std::string to_string(const std::string &value) +{ + return value; +} + /** Convert string values to float. * * @note This function implements the same behaviour as std::stof. The latter @@ -164,6 +170,12 @@ inline std::string to_string(T &&value) return ::std::to_string(std::forward<T>(value)); } +// Specialization for const std::string& +inline std::string to_string(const std::string &value) +{ + return value; +} + /** Convert string values to float. * * @note This function acts as a convenience wrapper around std::stof. The @@ -174,7 +186,7 @@ inline std::string to_string(T &&value) * @return Float representation of input string. */ template <typename... Ts> -int stof(Ts &&... args) +int stof(Ts &&...args) { return ::std::stof(std::forward<Ts>(args)...); } |