1 #ifndef MYTHHTTPSERVICE_H
2 #define MYTHHTTPSERVICE_H
24 template<
class T>
static inline HTTPServicePtr Create() {
return std::shared_ptr<MythHTTPService>(
new T); }
37 {
return m_request->m_queries.contains(
p.toLower()); }
47 : m_hostName(
std::move( sHostName ))
72 #define SERVICE_PROPERTY2(Type, Name) \
73 Q_PROPERTY(Type Name READ Get##Name MEMBER m_##Name USER true) \
75 Type Get##Name() const { return m_##Name; } \
77 typename std::enable_if<std::is_same<T, QString>::value || \
78 std::is_same<T, QDateTime>::value || \
79 std::is_same<T, QVariantMap>::value || \
80 std::is_same<T, QVariantList>::value, void>::type \
81 set##Name(T& value) { m_##Name = std::move(value); } \
83 typename std::enable_if<std::is_same<T, QString>::value || \
84 std::is_same<T, QDateTime>::value || \
85 std::is_same<T, QVariantMap>::value || \
86 std::is_same<T, QVariantList>::value,void>::type \
87 set##Name(const T& value) { m_##Name = value; } \
89 typename std::enable_if<!std::is_same<T, QString>::value && \
90 !std::is_same<T, QDateTime>::value && \
91 !std::is_same<T, QVariantMap>::value && \
92 !std::is_same<T, QVariantList>::value,void>::type \
93 set##Name(T value) { m_##Name = value; } \
97 #define SERVICE_PROPERTY_RO_REF( type, name ) \
98 private: type m_##name; \
105 #define SERVICE_PROPERTY_PTR( type, name ) \
106 private: type* m_##name {nullptr}; \
110 if (m_##name == nullptr) \
111 m_##name = new type( this );\
115 #define SERVICE_PROPERTY_COND_PTR( type, name ) \
116 private: type* m_##name {nullptr}; \
117 bool m_b##name {true}; \
121 if (m_##name == nullptr && m_b##name) \
122 m_##name = new type( this );\
125 void enable##name(bool enabled) \
127 m_b##name = enabled; \
135 for (
const auto& vValue : qAsConst(src))
137 if ( vValue.canConvert< QObject* >())
139 const QObject *pObject = vValue.value< QObject* >();
141 if (pObject !=
nullptr)
143 QObject *pNew =
new T( pParent );
145 ((T *)pNew)->Copy( (
const T *)pObject );
147 dst.append( QVariant::fromValue<QObject *>( pNew ));