Sun, 19 Jan 2020 02:54:48 +0200
commit work on GL rendering
#pragma once #include "basics.h" namespace utility { template<typename T, std::size_t N> constexpr std::size_t countof(T(&)[N]) { return N; } // http://stackoverflow.com/a/18204188/3629665 template<typename T> inline T rotl10(T x) { return (x << 10) | ((x >> 22) & 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; } 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) { if (string.contains("'")) { string.replace("\"", "\\\""); string = "\"" + string + "\""; } else { string = "'" + string + "'"; } return string; } template<typename T, typename R> bool contains(T&& container, R&& value) { return std::find(std::begin(container), std::end(container), value) != std::end(container); } }