From 46b7119fab32b05923dbf9cda7cd6ce62f572846 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Mon, 9 Jan 2017 14:01:51 -0500 Subject: Initial commit --- util.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 util.h (limited to 'util.h') diff --git a/util.h b/util.h new file mode 100644 index 0000000..256456f --- /dev/null +++ b/util.h @@ -0,0 +1,68 @@ +#ifndef UTIL_H_CED7A66D +#define UTIL_H_CED7A66D + +namespace cadence { + + inline std::string uppercase(std::string in) + { + std::string result; + std::transform(std::begin(in), std::end(in), std::back_inserter(result), [] (char ch) + { + return std::toupper(ch); + }); + + return result; + } + + template + std::string implode(InputIterator first, InputIterator last, std::string delimiter) + { + std::stringstream result; + + for (InputIterator it = first; it != last; it++) + { + if (it != first) + { + result << delimiter; + } + + result << *it; + } + + return result.str(); + } + + template + void split(std::string input, std::string delimiter, OutputIterator out) + { + while (!input.empty()) + { + int divider = input.find(delimiter); + if (divider == std::string::npos) + { + *out = input; + out++; + + input = ""; + } else { + *out = input.substr(0, divider); + out++; + + input = input.substr(divider+delimiter.length()); + } + } + } + + template + Container split(std::string input, std::string delimiter) + { + Container result; + + split(input, delimiter, std::back_inserter(result)); + + return result; + } + +}; + +#endif /* end of include guard: UTIL_H_CED7A66D */ -- cgit 1.4.1