src/basics.h

changeset 212
27259810da6d
parent 207
5315358a7d91
child 213
ee5758ddb6d2
--- 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 <compare>
 #include <memory>
 #include <optional>
+#include <set>
 #include <type_traits>
 #include <QDataStream>
 #include <QDebug>
@@ -118,6 +119,7 @@
 template<typename T, typename R, typename K>
 R* findInMap(std::map<T, R>& map, K&& key)
 {
+	static_assert(std::is_convertible_v<K, T>, "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<typename K, typename V, typename Fn>
+void forValueInMap(const std::map<K, V>& 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;
+}

mercurial