StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHyperUtilGeneric.h
1 // StHyperUtilGeneric.h
2 #ifndef __ST_HYPERUTILGENERIC_H
3 #define __ST_HYPERUTILGENERIC_H
4 
5 #include <string>
6 #include <vector>
7 #include <map>
8 #include <sstream>
9 #include <iterator>
10 
11 namespace StHyperUtilGeneric
12 {
13 
14 std::string toHex(const std::vector<char>& data);
15 std::string toHex(const char* data_, size_t dataLength);
16 
17 std::string base64_encode(const char* bytes_to_encode, size_t in_len);
18 std::string base64_decode(std::string const& str);
19 
20 template <class T>
21 std::string toString(T& arg)
22 {
23  std::ostringstream os;
24  os << arg;
25  return os.str();
26 }
27 
28 template<class T>
29 T fromString(const std::string& s)
30 {
31  std::istringstream stream (s);
32  T t;
33  stream >> t;
34  return t;
35 }
36 
37 // generic implode function, for all types
38 template <typename T>
39 std::string implode(const std::vector<T>& v, const std::string& delim) {
40  std::ostringstream o;
41  std::copy(v.begin(), --v.end(), std::ostream_iterator<T>(o, delim.c_str()));
42  o << *(--v.end());
43  return o.str();
44 }
45 
46 // concatenate strings selected by key, using delimeter string
47 std::string implode_map(const std::map<std::string, std::string>& arr, const std::string& key, const std::string& delimeter);
48 
49 // concatenate all elements of vector (strings) using specified delimeter string
50 std::string implode_vector(const std::vector<std::string>& arr, const std::string& delimeter);
51 
52 std::vector<std::string> explode(const std::string& str, const char& delim);
53 
54 void ltrim(std::string& str, const std::string& chr = " \n\r\t");
55 void rtrim(std::string& str, const std::string& chr = " \n\r\t");
56 void trim(std::string& str, const std::string& chr = " \n\r\t");
57 
58 void strtoupper(std::string& str);
59 void strtolower(std::string& str);
60 
61 bool recursiveMkdir(const std::string& path);
62 
63 } // namespace StHyperUtilGeneric
64 
65 #endif // __ST_HYPERUTILGENERIC_H