3#ifndef IMT_BASE_LIB_STRINGS_STRINGUTIL_H
4#define IMT_BASE_LIB_STRINGS_STRINGUTIL_H
37 template<
typename Type>
38 static inline bool stringToValue(std::wstring
const& s, Type& returnValue, std::ios_base& (*
const func)(std::ios_base&))
noexcept {
39 std::wistringstream iss {s};
41 return !((iss >> func >> returnValue).fail());
53 template<
typename Type>
54 static inline bool stringToValue(std::wstring
const& s, Type& returnValue)
noexcept {
55 std::wistringstream iss {s};
57 return !((iss >> returnValue).fail());
70 template<
typename Type>
71 static inline std::wstring valueToString(Type
const& inputValue, std::ios_base& (*
const func)(std::ios_base&))
noexcept {
72 std::wostringstream oss {};
73 oss << func << inputValue;
85 template<
typename Type>
86 static inline std::wstring valueToString(Type
const& inputValue)
noexcept {
87 std::wostringstream oss {};
100 static inline std::wstring valueToString(
float32_t const inputValue,
uint8_t const precision) {
101 std::wostringstream oss {};
102 oss.precision(
static_cast<int32_t>(precision));
116 static inline std::wstring valueToString(
float64_t const inputValue,
uint8_t const precision) {
117 std::wostringstream oss {};
118 oss.precision(
static_cast<int32_t>(precision));
128 static int8_t compareNoCase(std::wstring
const& str1, std::wstring
const& str2);
134 static bool equalsNoCase(std::wstring
const& str1, std::wstring
const& str2);
139 static void trim(std::wstring& str);
144 static void replace(std::wstring& str, std::wstring
const& oldValue, std::wstring
const& newValue);
149 static void removeBlanks(std::wstring& str);
155 static int32_t toInt(std::wstring
const& str);
161 static uint32_t toUInt(std::wstring
const& str);
167 static int32_t hexToInt(std::wstring
const& str);
173 static float32_t toFloat(std::wstring
const& str);
179 static float64_t toDouble(std::wstring
const& str);
186 static bool toBool(std::wstring
const& str);
191 static bool isDecLiteral(std::wstring
const& str);
196 static bool isHexLiteral(std::wstring
const& str);
201 static bool contains(std::wstring
const& str,
wchar_t const c);
206 static bool contains(std::wstring
const& str, std::wstring
const& chars);
210 static void trimLeft(std::wstring& str);
211 static void trimRight(std::wstring& str);
221inline bool StringUtil::stringToValue<uint8_t>(std::wstring
const& s,
uint8_t& returnValue, std::ios_base& (*
const func)(std::ios_base&))
noexcept {
223 bool const result {stringToValue<uint16_t>(s, value, func)};
224 returnValue =
static_cast<uint8_t>(value);
233inline bool StringUtil::stringToValue<int8_t>(std::wstring
const& s,
int8_t& returnValue, std::ios_base& (*
const func)(std::ios_base&))
noexcept {
235 bool const result {stringToValue<int16_t>(s, value, func)};
236 returnValue =
static_cast<int8_t>(value);
245inline bool StringUtil::stringToValue<uint8_t>(std::wstring
const& s,
uint8_t& returnValue)
noexcept {
247 bool const result {stringToValue<uint16_t>(s, value)};
248 returnValue =
static_cast<uint8_t>(value);
257inline bool StringUtil::stringToValue<int8_t>(std::wstring
const& s,
int8_t& returnValue)
noexcept {
259 bool const result {stringToValue<int16_t>(s, value)};
260 returnValue =
static_cast<int8_t>(value);
265#if defined(__IAR_SYSTEMS_ICC__)
269inline std::wstring StringUtil::valueToString<uint8_t>(
uint8_t const& inputValue, std::ios_base& (*
const func)(std::ios_base&)) {
270 return valueToString<uint16_t>(inputValue, func);
274inline std::wstring StringUtil::valueToString<int8_t>(
int8_t const& inputValue, std::ios_base& (*
const func)(std::ios_base&)) {
275 return valueToString<int16_t>(inputValue, func);
279inline std::wstring StringUtil::valueToString<uint8_t>(
uint8_t const& inputValue) {
280 return valueToString<uint16_t>(inputValue);
284inline std::wstring StringUtil::valueToString<int8_t>(
int8_t const& inputValue) {
285 return valueToString<int16_t>(inputValue);
This is a application specific file which is used to configure Imt.Base.Core.Math.
float float32_t
32 Bits float variable (float)
double float64_t
64 Bits float variable (double)
unsigned __int16 uint16_t
unsigned __int32 uint32_t