diff -r 68443f5be176 -r 44679e468ba9 src/utility.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/utility.h Sun Nov 03 12:17:41 2019 +0200 @@ -0,0 +1,55 @@ +#pragma once +#include "basics.h" + +namespace utility +{ + template + constexpr std::size_t countof(T(&)[N]) + { + return N; + } + + // http://stackoverflow.com/a/18204188/3629665 + template + inline T rotl10(T x) + { + return (x << 10) | ((x >> 22) & 0x000000ff); + } + + template + inline T rotl20(T x) + { + return (x << 20) | ((x >> 12) & 0x000000ff); + } + + inline QString format(const QString& format_string) + { + return format_string; + } + + template + QString format(const QString& format_string, T&& arg, Rest&&... rest) + { + return format(format_string.arg(arg), std::forward(rest)...); + } + + inline QString quoted(QString string) + { + if (string.contains("'")) + { + string.replace("\"", "\\\""); + string = "\"" + string + "\""; + } + else + { + string = "'" + string + "'"; + } + return string; + } + + template + bool contains(T&& container, R&& value) + { + return std::find(std::begin(container), std::end(container), value) != std::end(container); + } +}