1 #ifndef _ots_StringMacros_h_
2 #define _ots_StringMacros_h_
4 #include "otsdaq-core/Macros/CoutMacros.h"
48 static bool wildCardMatch (
const std::string& needle,
const std::string& haystack,
unsigned int* priorityIndex = 0);
49 static bool inWildCardSet (
const std::string& needle,
const std::set<std::string>& haystack);
57 static T& getWildCardMatchFromMap (
58 const std::string& needle,
59 std::map<std::string, T>& haystack,
60 std::string* foundKey = 0);
62 static std::string decodeURIComponent (
const std::string& data);
63 static std::string convertEnvironmentVariables (
const std::string& data);
64 static bool isNumber (
const std::string& stringToCheck);
67 static bool getNumber (
const std::string& s, T& retValue);
68 static std::string getTimestampString (
const std::string& linuxTimeInSeconds);
69 static std::string getTimestampString (
const time_t& linuxTimeInSeconds = time(0));
75 static T validateValueForDefaultStringDataType (
76 const std::string& value,
77 bool doConvertEnvironmentVariables =
true);
78 static std::string validateValueForDefaultStringDataType (
79 const std::string& value,
80 bool doConvertEnvironmentVariables =
true);
82 static void getSetFromString (
const std::string& inputString, std::set<std::string>& setToReturn,
const std::set<char>& delimiter = {
',',
'|',
'&'},
const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'});
87 class S = std::string >
88 static void getMapFromString (
89 const std::string& inputString,
90 std::map<S, T>& mapToReturn,
91 const std::set<char>& pairPairDelimiter = {
',',
'|',
'&'},
92 const std::set<char>& nameValueDelimiter = {
'=',
':'},
93 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'});
94 static void getMapFromString (
95 const std::string& inputString,
96 std::map<std::string, std::string>& mapToReturn,
97 const std::set<char>& pairPairDelimiter = {
',',
'|',
'&'},
98 const std::set<char>& nameValueDelimiter = {
'=',
':'},
99 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'});
100 static void getVectorFromString (
101 const std::string& inputString,
102 std::vector<std::string>& listToReturn,
103 const std::set<char>& delimiter = {
',',
'|',
'&'},
104 const std::set<char>& whitespace = {
' ',
'\t',
'\n',
'\r'},
105 std::vector<char>* listOfDelimiters = 0);
111 static std::string mapToString (
112 const std::map<std::string, T>& mapToReturn,
113 const std::string& primaryDelimeter =
", ",
114 const std::string& secondaryDelimeter =
": ");
116 static std::string mapToString (
117 const std::map<std::pair<std::string, std::string>, T>& mapToReturn,
118 const std::string& primaryDelimeter =
", ",
119 const std::string& secondaryDelimeter =
": ");
121 static std::string mapToString (
122 const std::map<std::pair<std::string, std::pair<std::string, std::string>>, T>&
124 const std::string& primaryDelimeter =
", ",
125 const std::string& secondaryDelimeter =
": ");
127 static std::string mapToString (
128 const std::map<std::string, std::pair<std::string, T>>& mapToReturn,
129 const std::string& primaryDelimeter =
", ",
130 const std::string& secondaryDelimeter =
": ");
132 static std::string mapToString (
133 const std::map<std::string, std::map<std::string, T>>& mapToReturn,
134 const std::string& primaryDelimeter =
", ",
135 const std::string& secondaryDelimeter =
": ");
137 static std::string mapToString (
138 const std::map<std::string, std::set<T>>& mapToReturn,
139 const std::string& primaryDelimeter =
", ",
140 const std::string& secondaryDelimeter =
": ");
142 static std::string mapToString (
143 const std::map<std::string, std::vector<T>>& mapToReturn,
144 const std::string& primaryDelimeter =
", ",
145 const std::string& secondaryDelimeter =
": ");
146 static std::string mapToString (
147 const std::map<std::string, uint8_t>& mapToReturn,
148 const std::string& primaryDelimeter =
", ",
149 const std::string& secondaryDelimeter =
": ");
155 static std::string setToString (
156 const std::set<T>& setToReturn,
157 const std::string& delimeter =
", ");
158 static std::string setToString (
159 const std::set<uint8_t>& setToReturn,
160 const std::string& delimeter =
", ");
161 template<
class S,
class T>
162 static std::string setToString (
163 const std::set<std::pair<S, T>>& setToReturn,
164 const std::string& primaryDelimeter =
", ",
165 const std::string& secondaryDelimeter =
":");
171 static std::string vectorToString (
172 const std::vector<T>& setToReturn,
173 const std::string& delimeter =
", ");
174 static std::string vectorToString (
175 const std::vector<uint8_t>& setToReturn,
176 const std::string& delimeter =
", ");
177 template<
class S,
class T>
178 static std::string vectorToString (
179 const std::vector<std::pair<S, T>>& setToReturn,
180 const std::string& primaryDelimeter =
"; ",
181 const std::string& secondaryDelimeter =
":");
183 static std::string demangleTypeName (
const char* name);
184 static std::string stackTrace ();
185 static std::string exec (
const char* cmd);
187 static char* otsGetEnvironmentVarable (
const char* name,
const std::string& location,
const unsigned int& line);
192 #include "otsdaq-core/Macros/StringMacros.icc"