1 #ifndef _ots_StringMacros_h_
2 #define _ots_StringMacros_h_
4 #include "otsdaq-core/Macros/CoutMacros.h"
44 static bool wildCardMatch(
const std::string& needle,
45 const std::string& haystack,
46 unsigned int* priorityIndex = 0);
47 static bool inWildCardSet(
const std::string& needle,
48 const std::set<std::string>& haystack);
56 static T& getWildCardMatchFromMap(
57 const std::string& needle,
58 std::map<std::string, T>& haystack,
59 std::string* foundKey = 0);
61 static std::string decodeURIComponent(
const std::string& data);
62 static std::string convertEnvironmentVariables(
const std::string& data);
63 static bool isNumber(
const std::string& stringToCheck);
66 static bool getNumber(
const std::string& s,
68 static std::string getTimestampString(
const std::string& linuxTimeInSeconds);
69 static std::string getTimestampString(
const time_t& linuxTimeInSeconds = time(0));
73 static T validateValueForDefaultStringDataType(
74 const std::string& value,
75 bool doConvertEnvironmentVariables =
true);
76 static std::string validateValueForDefaultStringDataType(
77 const std::string& value,
bool doConvertEnvironmentVariables =
true);
79 static void getSetFromString(
const std::string& inputString,
80 std::set<std::string>& setToReturn,
81 const std::set<char>& delimiter = {
',',
'|',
'&'},
82 const std::set<char>& whitespace = {
83 ' ',
'\t',
'\n',
'\r'});
86 class S = std::string >
87 static void getMapFromString(
88 const std::string& inputString,
89 std::map<S, T>& mapToReturn,
90 const std::set<char>& pairPairDelimiter = {
',',
'|',
'&'},
91 const std::set<char>& nameValueDelimiter = {
'=',
':'},
92 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'});
93 static void getMapFromString(
94 const std::string& inputString,
95 std::map<std::string, std::string>& mapToReturn,
96 const std::set<char>& pairPairDelimiter = {
',',
'|',
'&'},
97 const std::set<char>& nameValueDelimiter = {
'=',
':'},
98 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'});
99 static void getVectorFromString(
100 const std::string& inputString,
101 std::vector<std::string>& listToReturn,
102 const std::set<char>& delimiter = {
',',
'|',
'&'},
103 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'},
104 std::vector<char>* listOfDelimiters = 0);
108 static std::string mapToString(
const std::map<std::string, T>& mapToReturn,
109 const std::string& primaryDelimeter =
", ",
110 const std::string& secondaryDelimeter =
": ");
112 static std::string mapToString(
113 const std::map<std::pair<std::string, std::string>, T>& mapToReturn,
114 const std::string& primaryDelimeter =
", ",
115 const std::string& secondaryDelimeter =
": ");
117 static std::string mapToString(
118 const std::map<std::pair<std::string, std::pair<std::string, std::string>>, T>&
120 const std::string& primaryDelimeter =
", ",
121 const std::string& secondaryDelimeter =
": ");
123 static std::string mapToString(
124 const std::map<std::string, std::pair<std::string, T>>& mapToReturn,
125 const std::string& primaryDelimeter =
", ",
126 const std::string& secondaryDelimeter =
": ");
128 static std::string mapToString(
129 const std::map<std::string, std::map<std::string, T>>& mapToReturn,
130 const std::string& primaryDelimeter =
", ",
131 const std::string& secondaryDelimeter =
": ");
133 static std::string mapToString(
const std::map<std::string, std::set<T>>& mapToReturn,
134 const std::string& primaryDelimeter =
", ",
135 const std::string& secondaryDelimeter =
": ");
137 static std::string mapToString(
138 const std::map<std::string, std::vector<T>>& mapToReturn,
139 const std::string& primaryDelimeter =
", ",
140 const std::string& secondaryDelimeter =
": ");
141 static std::string mapToString(
const std::map<std::string, uint8_t>& mapToReturn,
142 const std::string& primaryDelimeter =
", ",
143 const std::string& secondaryDelimeter =
": ");
146 static std::string setToString(
const std::set<T>& setToReturn,
147 const std::string& delimeter =
", ");
148 static std::string setToString(
const std::set<uint8_t>& setToReturn,
149 const std::string& delimeter =
", ");
152 static std::string vectorToString(
const std::vector<T>& setToReturn,
153 const std::string& delimeter =
", ");
154 static std::string vectorToString(
const std::vector<uint8_t>& setToReturn,
155 const std::string& delimeter =
", ");
156 template<
class S,
class T>
157 static std::string vectorToString(
const std::vector<std::pair<S, T>>& setToReturn,
158 const std::string& primaryDelimeter =
"; ",
159 const std::string& secondaryDelimeter =
":");
161 static std::string demangleTypeName(
const char* name);
162 static std::string stackTrace();
163 static std::string exec(
const char* cmd);
167 #include "otsdaq-core/Macros/StringMacros.icc"