src/basics.h

changeset 259
c27612f0eac0
parent 237
10a6298f636f
child 261
6a875faebde2
equal deleted inserted replaced
258:fe094d0687ad 259:c27612f0eac0
33 #include <QSet> 33 #include <QSet>
34 #include <QString> 34 #include <QString>
35 #include <QStringList> 35 #include <QStringList>
36 #include <QVariant> 36 #include <QVariant>
37 #include <QVector> 37 #include <QVector>
38 #include <QMdiArea>
38 #include <glm/glm.hpp> 39 #include <glm/glm.hpp>
39 #include "geometry.h" 40 #include "geometry.h"
40 #include "functional.h" 41 #include "functional.h"
41 #include "typeconversions.h" 42 #include "typeconversions.h"
42 43
43 template<typename T> 44 template<typename T>
44 using opt = std::optional<T>; 45 using opt = std::optional<T>;
45 46
47 //! \brief Return type of qHash. unsigned int on Qt5, unsigned long on Qt6.
48 using hash_t = decltype(qHash(0));
49
46 Q_DECLARE_METATYPE(glm::vec3) 50 Q_DECLARE_METATYPE(glm::vec3)
47 Q_DECLARE_METATYPE(glm::mat4) 51 Q_DECLARE_METATYPE(glm::mat4)
52 Q_DECLARE_METATYPE(QMdiArea::ViewMode)
48 53
49 //! \brief count the amount of elements in a basic array 54 //! \brief count the amount of elements in a basic array
50 template<typename T, int N> 55 template<typename T, int N>
51 constexpr int countof(T(&)[N]) 56 constexpr int countof(T(&)[N])
52 { 57 {
263 .arg(matrix[0][1]).arg(matrix[1][1]).arg(matrix[2][1]) 268 .arg(matrix[0][1]).arg(matrix[1][1]).arg(matrix[2][1])
264 .arg(matrix[0][2]).arg(matrix[1][2]).arg(matrix[2][2]); 269 .arg(matrix[0][2]).arg(matrix[1][2]).arg(matrix[2][2]);
265 } 270 }
266 271
267 template<typename T, glm::qualifier Q> 272 template<typename T, glm::qualifier Q>
268 constexpr unsigned int qHash(const glm::vec<3, T, Q>& key) 273 constexpr auto qHash(const glm::vec<3, T, Q>& key)
269 { 274 {
270 return qHash(key.x) ^ rotl10(qHash(key.y)) ^ rotl20(qHash(key.z)); 275 return qHash(key.x) ^ rotl10(qHash(key.y)) ^ rotl20(qHash(key.z));
271 } 276 }
272 277
273 template<typename T, typename Fn> 278 template<typename T, typename Fn>

mercurial