diff -r b27b90fb993f -r 27259810da6d src/basics.h --- a/src/basics.h Thu Jun 09 19:11:27 2022 +0300 +++ b/src/basics.h Sat Jun 11 14:30:30 2022 +0300 @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -118,6 +119,7 @@ template R* findInMap(std::map& map, K&& key) { + static_assert(std::is_convertible_v, "bad type for key parameter"); auto pair = map.find(key); if (pair != map.end()) { @@ -304,3 +306,20 @@ { return qHash(key.x) ^ rotl10(qHash(key.y)) ^ rotl20(qHash(key.z)); } + +template +void forValueInMap(const std::map& map, Fn&& fn) +{ + for (const auto& it : map) { + fn(it.second); + } +} + +inline QString joined(QString value, const QString& separator, const QString& element) +{ + if (not value.isEmpty()) { + value += separator; + } + value += element; + return value; +}