15 #define QX_ALL_CHAR_TYPES char, wchar_t
17 #ifdef QX_CONF_USE_CHAR
18 #define QX_CONF_USE_WCHAR !QX_CONF_USE_CHAR
19 #elif defined(QX_CONF_USE_WCHAR)
20 #define QX_CONF_USE_CHAR !QX_CONF_USE_WCHAR
21 #elif !defined(QX_CONF_USE_CHAR) && !defined(QX_CONF_USE_WCHAR)
22 #define QX_CONF_USE_CHAR 0
23 #define QX_CONF_USE_WCHAR 1
29 using all_char_types = std::tuple<QX_ALL_CHAR_TYPES>;
36 #define QX_CHAR_TYPE char
37 #define _QXT(quote) quote
39 #elif QX_CONF_USE_WCHAR
41 #define QX_CHAR_TYPE wchar_t
42 #define _QXT(quote) L##quote
44 #if !defined(QX_CONF_UNICODE_MACRO)
45 #define QX_CONF_UNICODE_MACRO 1
48 #if QX_CONF_UNICODE_MACRO && QX_WIN
54 #define QXT(quote) _QXT(quote)
59 using char_type = QX_CHAR_TYPE;
60 using forbidden_char_types = tuple_utils::remove_t<details::all_char_types, std::tuple<char_type>>;
64 #if !defined(QX_CONF_FORCE_STD_FORMAT) && __has_include("fmt/format.h")
66 QX_PUSH_SUPPRESS_ALL_WARNINGS();
68 #define FMT_HEADER_ONLY 1
69 #include "fmt/format.h"
70 #include "fmt/xchar.h"
71 QX_POP_SUPPRESS_WARNINGS();
Contains utils for working with std::tuple.