19#ifndef _LIBRZ_HELPERS_H
20#define _LIBRZ_HELPERS_H
33#define _JOIN(a, b) a ## b
34#define JOIN(a, b) _JOIN(a, b)
36#define _STRINGFY(a) #a
37#define STRINGFY(a) _STRINGFY(a)
39std::string string_vprintf(
const char* fmt, va_list ap);
40std::string string_printf(
const char* fmt, ...);
42std::vector<std::string> operator / (std::string
const &, std::string
const &);
43std::vector<std::string> operator / (std::string
const &,
char sep);
46iequals(
const std::string &a,
const std::string &b)
48 return a.size() == b.size() &&
53 [](
char c_a,
char c_b) {
54 return std::tolower(static_cast<unsigned char>(c_a)) ==
55 std::tolower(static_cast<unsigned char>(c_b));
60# pragma GCC push_options
61# pragma GCC optimize ("O1")
67 static constexpr bool value =
false;
72 static constexpr bool value =
true;
77 static constexpr bool value =
true;
82sumPrecise (
const T *data,
size_t N)
104template<
typename T> T
105sumPrecise (std::list<T>
const &data)
108 auto it = data.begin();
114 while (it != data.end()) {
121 while (it != data.end())
130# pragma GCC pop_options