1 #include <framework/utilities/GeneralCut.h>
12 static_assert(
sizeof(
float) ==
sizeof(int32_t));
14 return std::fabs(*(int32_t*)&a - * (int32_t*)&b) <= 2 or (a == b);
19 static_assert(
sizeof(
double) ==
sizeof(int64_t));
21 return std::fabs(*(int64_t*)&a - * (int64_t*)&b) <= 2 or (a == b);
26 unsigned long int end = 1;
28 unsigned int count = 1;
29 for (end = 1; end < str.size() and count > 0; ++end) {
30 if (str[end] == open) ++count;
31 else if (str[end] == close) --count;
35 throw std::runtime_error(
"Variable string has an invalid format: " + str);
43 if (str.size() < pattern.size())
44 return std::string::npos;
46 for (
unsigned int i = begin; i < str.size() - pattern.size(); ++i) {
60 for (
unsigned int j = 0; j < pattern.size(); ++j) {
61 if (str[i + j] != pattern[j]) {
64 if (j == pattern.size() - 1) {
69 return std::string::npos;
75 std::vector<std::string> result;
76 unsigned int lastdelimiter = 0;
77 for (
unsigned int i = 0; i < str.size(); ++i) {
82 if (str[i] == delimiter) {
83 result.push_back(str.substr(lastdelimiter, i - lastdelimiter));
84 lastdelimiter = i + 1;
87 std::string last = str.substr(lastdelimiter);
88 if (last.size() != 0) {
89 result.push_back(last);