util: add helpers
[android/external-libkmsxx.git] / libkms++util / strhelpers.h
1 #include <sstream>
2 #include <string>
3 #include <vector>
4 #include <functional>
6 std::string to_lower(const std::string& str);
8 template <typename T>
9 std::string join(const T& values, const std::string& delim)
10 {
11         std::ostringstream ss;
12         for (const auto& v : values) {
13                 if (&v != &values[0])
14                         ss << delim;
15                 ss << v;
16         }
17         return ss.str();
18 }
20 template <typename T>
21 std::string join(const std::vector<T>& values, const std::string& delim, std::function<std::string(T)> func)
22 {
23         std::ostringstream ss;
24         for (const auto& v : values) {
25                 if (&v != &values[0])
26                         ss << delim;
27                 ss << func(v);
28         }
29         return ss.str();
30 }
32 std::string sformat(const char *fmt, ...)
33         __attribute__ ((format (printf, 1, 2)));