13#define ENUM_QDATASTREAM_OPS_DECL(CLASS, ENUM) \
14 QDataStream &operator<<(QDataStream &, CLASS::ENUM const &); \
15 QDataStream &operator>>(QDataStream &, CLASS::ENUM &);
17#define ENUM_QDATASTREAM_OPS_IMPL(CLASS, ENUM) \
18 QDataStream &operator<<(QDataStream &os, CLASS::ENUM const &v) { \
19 auto const &mo = CLASS::staticMetaObject; \
20 return os << mo.enumerator(mo.indexOfEnumerator(#ENUM)).valueToKey(v); \
23 QDataStream &operator>>(QDataStream &is, CLASS::ENUM &v) { \
27 auto const &mo = CLASS::staticMetaObject; \
28 auto const &me = mo.enumerator(mo.indexOfEnumerator(#ENUM)); \
30 v = static_cast<CLASS::ENUM>(me.keyToValue(buffer, &ok)); \
34 v = static_cast<CLASS::ENUM>(me.value(0)); \
39#define ENUM_CONVERSION_OPS_DECL(CLASS, ENUM) \
40 QString enum_to_qstring(CLASS::ENUM const &);
42#define ENUM_CONVERSION_OPS_IMPL(CLASS, ENUM) \
43 QString enum_to_qstring(CLASS::ENUM const &m) { \
44 auto const &mo = CLASS::staticMetaObject; \
46 mo.enumerator(mo.indexOfEnumerator(#ENUM)).valueToKey(m)}; \
49#if QT_VERSION >= 0x050500
52#define ENUM_QDEBUG_OPS_DECL(CLASS, ENUM)
53#define ENUM_QDEBUG_OPS_IMPL(CLASS, ENUM)
63#define ENUM_QDEBUG_OPS_DECL(CLASS, ENUM) \
64 QDebug operator<<(QDebug, CLASS::ENUM const &);
66#define ENUM_QDEBUG_OPS_IMPL(CLASS, ENUM) \
67 QDebug operator<<(QDebug d, CLASS::ENUM const &m) { \
68 auto const &mo = CLASS::staticMetaObject; \
69 return d << mo.enumerator(mo.indexOfEnumerator(#ENUM)).valueToKey(m); \
74inline void throw_qstring(QString
const &qs) {
75 throw std::runtime_error{qs.toLocal8Bit().constData()};
78QString font_as_stylesheet(QFont
const &);
82void update_dynamic_property(QWidget *,
char const *property,
83 QVariant
const &value);
85template <
class T>
class VPtr {
87 static T *asPtr(QVariant v) {
88 return reinterpret_cast<T *
>(v.value<
void *>());
91 static QVariant asQVariant(T *ptr) {
92 return QVariant::fromValue(
reinterpret_cast<void *
>(ptr));
97Q_DECLARE_METATYPE(QHostAddress);
99inline bool is_broadcast_address(QHostAddress
const &host_addr) {
100#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
101 return host_addr.isBroadcast();
104 return host_addr.toIPv4Address(&ok) == 0xffffffffu && ok;
108inline bool is_multicast_address(QHostAddress
const &host_addr) {
109#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
110 return host_addr.isMulticast();
113 return (((host_addr.toIPv4Address(&ok) & 0xf0000000u) == 0xe0000000u) &&
115 host_addr.toIPv6Address()[0] == 0xff;
Definition qt_helpers.h:85