src/utility.h

changeset 201
5d201ee4a9c3
parent 200
ca23936b455b
--- a/src/utility.h	Mon Jun 06 22:01:22 2022 +0300
+++ b/src/utility.h	Tue Jun 07 01:37:26 2022 +0300
@@ -19,84 +19,79 @@
 #pragma once
 #include "basics.h"
 
-namespace utility
+// http://stackoverflow.com/a/18204188/3629665
+template<typename T>
+inline T rotl10(T x)
 {
-	// http://stackoverflow.com/a/18204188/3629665
-	template<typename T>
-	inline T rotl10(T x)
-	{
-		return (x << 10) | ((x >> 22) & 0x000000ff);
-	}
+	return (x << 10) | ((x >> 22) & 0x000000ff);
+}
+
+template<typename T>
+inline T rotl20(T x)
+{
+	return (x << 20) | ((x >> 12) & 0x000000ff);
+}
 
-	template<typename T>
-	inline T rotl20(T x)
-	{
-		return (x << 20) | ((x >> 12) & 0x000000ff);
-	}
+inline QString format(const QString& format_string)
+{
+	return format_string;
+}
 
-	inline QString format(const QString& format_string)
-	{
-		return format_string;
-	}
+template<typename T, typename... Rest>
+QString format(const QString& format_string, T&& arg, Rest&&... rest)
+{
+	return format(format_string.arg(arg), std::forward<Rest>(rest)...);
+}
 
-	template<typename T, typename... Rest>
-	QString format(const QString& format_string, T&& arg, Rest&&... rest)
-	{
-		return format(format_string.arg(arg), std::forward<Rest>(rest)...);
-	}
-
-	inline QString quoted(QString string)
+inline QString quoted(QString string)
+{
+	if (string.contains("'"))
 	{
-		if (string.contains("'"))
-		{
-			string.replace("\"", "\\\"");
-			string = "\"" + string + "\"";
-		}
-		else
-		{
-			string = "'" + string + "'";
-		}
-		return string;
-	}
-
-	/**
-	 * @brief Converts the specified vertex to a simple string
-	 * @param vertex vertex to convert
-	 * @return "x y z"-formatted string
-	 */
-	inline QString vertexToString(const glm::vec3& vertex)
-	{
-		return utility::format("%1 %2 %3", vertex.x, vertex.y, vertex.z);
+		string.replace("\"", "\\\"");
+		string = "\"" + string + "\"";
 	}
-
-	inline QString vertexToStringParens(const glm::vec3& vertex)
-	{
-		return utility::format("(%1, %2, %3)", vertex.x, vertex.y, vertex.z);
-	}
-
-	inline QString transformToString(const glm::mat4& matrix)
+	else
 	{
-		return utility::format(
-			"%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12",
-			matrix[3][0],
-			matrix[3][1],
-			matrix[3][2],
-			matrix[0][0],
-			matrix[1][0],
-			matrix[2][0],
-			matrix[0][1],
-			matrix[1][1],
-			matrix[2][1],
-			matrix[0][2],
-			matrix[1][2],
-			matrix[2][2]);
+		string = "'" + string + "'";
 	}
+	return string;
 }
 
-using namespace utility;
+/**
+ * @brief Converts the specified vertex to a simple string
+ * @param vertex vertex to convert
+ * @return "x y z"-formatted string
+ */
+inline QString vertexToString(const glm::vec3& vertex)
+{
+	return format("%1 %2 %3", vertex.x, vertex.y, vertex.z);
+}
+
+inline QString vertexToStringParens(const glm::vec3& vertex)
+{
+	return format("(%1, %2, %3)", vertex.x, vertex.y, vertex.z);
+}
+
+inline QString transformToString(const glm::mat4& matrix)
+{
+	return format(
+		"%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12",
+		matrix[3][0],
+		matrix[3][1],
+		matrix[3][2],
+		matrix[0][0],
+		matrix[1][0],
+		matrix[2][0],
+		matrix[0][1],
+		matrix[1][1],
+		matrix[2][1],
+		matrix[0][2],
+		matrix[1][2],
+		matrix[2][2]);
+}
 
 template<typename T, glm::qualifier Q>
-inline unsigned int qHash(const glm::vec<3, T, Q>& key)
+constexpr unsigned int qHash(const glm::vec<3, T, Q>& key)
 {
-	return qHash(key.x) ^ utility::rotl10(qHash(key.y)) ^ utility::rotl20(qHash(key.z));
+	return qHash(key.x) ^ rotl10(qHash(key.y)) ^ rotl20(qHash(key.z));
 }

mercurial