summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Vuorela <pvuorela@iki.fi>2025-11-25 09:41:37 +0200
committerPekka Vuorela <pvuorela@iki.fi>2025-11-27 18:21:45 +0200
commitfec24394dd87def335a6c9bc080f6b78da181aee (patch)
tree1e3c3ac778c660e25a4bed8e8bbb369d2cc91a3e
parent9c68e070df41c5abcc38beba7e5699111c666762 (diff)
Make type registration saner
Much silly things here. Refactored as saner: - Removed Q_DECLARE_USER_METATYPE_ENUM. Just wrapping Q_DECLARE_USER_METATYPE. - Removed pointless Q_DECLARE_USER_METATYPE_TYPEDEF. It was defining some code that got called in the implementation side but there's nothing really needed to be declared outside the .cpp. - Avoiding above registration code also in Q_DECLARE_USER_METATYPE_NO_OPERATORS. Moved to implementation. - Remove unnecessary Q_IMPLEMENT_USER_METATYPE_TYPEDEF. It was just the same type registration duplicated. - Removed pointless _QATOMIC_ONCE. Wasn't doing anything on the most common gcc compiler and outside that there's no reason to have such protection anyway. - Slightly renamed QMetaTypeRegister with Qmf prefix to keep its home clearer. - Made type registration work with Qt5 by using also qRegisterMetaTypeStreamOperators() there. Change-Id: I6f2ef05998747d84d7e59170daab2c92b9aa5965 Reviewed-by: <matti.viljanen@kapsi.fi> Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: Damien Caliste <dcaliste@free.fr>
-rw-r--r--src/libraries/qmfclient/qmailaction.cpp2
-rw-r--r--src/libraries/qmfclient/qmailaction.h3
-rw-r--r--src/libraries/qmfclient/qmailaddress.cpp4
-rw-r--r--src/libraries/qmfclient/qmailaddress.h1
-rw-r--r--src/libraries/qmfclient/qmailid.cpp8
-rw-r--r--src/libraries/qmfclient/qmailid.h5
-rw-r--r--src/libraries/qmfclient/qmailinstantiations.cpp6
-rw-r--r--src/libraries/qmfclient/qmailmessage.h16
-rw-r--r--src/libraries/qmfclient/qmailserviceaction.h10
-rw-r--r--src/libraries/qmfclient/qmailstore.h4
-rw-r--r--src/libraries/qmfclient/support/qmailipc.h72
11 files changed, 51 insertions, 80 deletions
diff --git a/src/libraries/qmfclient/qmailaction.cpp b/src/libraries/qmfclient/qmailaction.cpp
index 170ce0cc..c6eb081e 100644
--- a/src/libraries/qmfclient/qmailaction.cpp
+++ b/src/libraries/qmfclient/qmailaction.cpp
@@ -278,4 +278,4 @@ void QMailActionData::deserialize(Stream &stream)
Q_IMPLEMENT_USER_METATYPE_ENUM(QMailServerRequestType)
Q_IMPLEMENT_USER_METATYPE(QMailActionData)
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailActionDataList, QMailActionDataList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailActionDataList)
diff --git a/src/libraries/qmfclient/qmailaction.h b/src/libraries/qmfclient/qmailaction.h
index 83bae136..3252db39 100644
--- a/src/libraries/qmfclient/qmailaction.h
+++ b/src/libraries/qmfclient/qmailaction.h
@@ -114,9 +114,8 @@ private:
typedef QList<QMailActionData> QMailActionDataList;
-Q_DECLARE_USER_METATYPE_ENUM(QMailServerRequestType)
+Q_DECLARE_USER_METATYPE(QMailServerRequestType)
Q_DECLARE_USER_METATYPE(QMailActionData)
Q_DECLARE_METATYPE(QMailActionDataList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailActionDataList, QMailActionDataList)
#endif
diff --git a/src/libraries/qmfclient/qmailaddress.cpp b/src/libraries/qmfclient/qmailaddress.cpp
index 7dce66f6..c37c6ddc 100644
--- a/src/libraries/qmfclient/qmailaddress.cpp
+++ b/src/libraries/qmfclient/qmailaddress.cpp
@@ -1143,6 +1143,4 @@ void QMailAddress::deserialize(Stream &stream)
Q_IMPLEMENT_USER_METATYPE(QMailAddress)
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailAddressList, QMailAddressList)
-
-//Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QList<QMailAddress>)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailAddressList)
diff --git a/src/libraries/qmfclient/qmailaddress.h b/src/libraries/qmfclient/qmailaddress.h
index f12b5f5b..b5102290 100644
--- a/src/libraries/qmfclient/qmailaddress.h
+++ b/src/libraries/qmfclient/qmailaddress.h
@@ -94,6 +94,5 @@ Q_DECLARE_USER_METATYPE(QMailAddress)
typedef QList<QMailAddress> QMailAddressList;
Q_DECLARE_METATYPE(QMailAddressList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailAddressList, QMailAddressList)
#endif
diff --git a/src/libraries/qmfclient/qmailid.cpp b/src/libraries/qmfclient/qmailid.cpp
index dcc0396d..788967f8 100644
--- a/src/libraries/qmfclient/qmailid.cpp
+++ b/src/libraries/qmfclient/qmailid.cpp
@@ -261,7 +261,7 @@ QTextStream& operator<< (QTextStream& s, const QMailAccountId &id)
return s;
}
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailAccountIdList, QMailAccountIdList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailAccountIdList)
/*!
@@ -400,7 +400,7 @@ QTextStream& operator<< (QTextStream& s, const QMailThreadId &id)
return s;
}
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailThreadIdList, QMailThreadIdList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailThreadIdList)
/*!
@@ -555,7 +555,7 @@ QTextStream& operator<< (QTextStream& s, const QMailFolderId &id)
return s;
}
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailFolderIdList, QMailFolderIdList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailFolderIdList)
/*!
@@ -694,7 +694,7 @@ QTextStream& operator<<(QTextStream& s, const QMailMessageId &id)
return s;
}
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailMessageIdList, QMailMessageIdList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailMessageIdList)
/*! \internal */
uint qHash(const QMailAccountId &id)
diff --git a/src/libraries/qmfclient/qmailid.h b/src/libraries/qmfclient/qmailid.h
index b1d12a7e..4e8048d1 100644
--- a/src/libraries/qmfclient/qmailid.h
+++ b/src/libraries/qmfclient/qmailid.h
@@ -179,11 +179,6 @@ Q_DECLARE_METATYPE(QMailFolderIdList)
Q_DECLARE_METATYPE(QMailMessageIdList)
Q_DECLARE_METATYPE(QMailThreadIdList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailAccountIdList, QMailAccountIdList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailFolderIdList, QMailFolderIdList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailMessageIdList, QMailMessageIdList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailThreadIdList, QMailThreadIdList)
-
uint QMF_EXPORT qHash(const QMailAccountId &id);
uint QMF_EXPORT qHash(const QMailFolderId &id);
uint QMF_EXPORT qHash(const QMailMessageId &id);
diff --git a/src/libraries/qmfclient/qmailinstantiations.cpp b/src/libraries/qmfclient/qmailinstantiations.cpp
index a3082e1d..5fdb0de7 100644
--- a/src/libraries/qmfclient/qmailinstantiations.cpp
+++ b/src/libraries/qmfclient/qmailinstantiations.cpp
@@ -46,9 +46,9 @@ Q_IMPLEMENT_USER_METATYPE(QMailMessageMetaData)
Q_IMPLEMENT_USER_METATYPE(QMailMessagePart)
Q_IMPLEMENT_USER_METATYPE(QMailMessagePart::Location)
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailMessageList, QMailMessageList)
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailMessageMetaDataList, QMailMessageMetaDataList)
-Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailMessageTypeList, QMailMessageTypeList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailMessageList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailMessageMetaDataList)
+Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(QMailMessageTypeList)
Q_IMPLEMENT_USER_METATYPE(QMailServiceAction::Status)
diff --git a/src/libraries/qmfclient/qmailmessage.h b/src/libraries/qmfclient/qmailmessage.h
index e19a600a..4bbdbed9 100644
--- a/src/libraries/qmfclient/qmailmessage.h
+++ b/src/libraries/qmfclient/qmailmessage.h
@@ -985,12 +985,12 @@ typedef QList<QMailMessage> QMailMessageList;
typedef QList<QMailMessageMetaData> QMailMessageMetaDataList;
typedef QList<QMailMessage::MessageType> QMailMessageTypeList;
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessageBody::TransferEncoding)
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessagePartContainer::MultipartType)
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessage::MessageType)
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessage::ContentType)
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessage::ResponseType)
-Q_DECLARE_USER_METATYPE_ENUM(QMailMessage::AttachmentsAction)
+Q_DECLARE_USER_METATYPE(QMailMessageBody::TransferEncoding)
+Q_DECLARE_USER_METATYPE(QMailMessagePartContainer::MultipartType)
+Q_DECLARE_USER_METATYPE(QMailMessage::MessageType)
+Q_DECLARE_USER_METATYPE(QMailMessage::ContentType)
+Q_DECLARE_USER_METATYPE(QMailMessage::ResponseType)
+Q_DECLARE_USER_METATYPE(QMailMessage::AttachmentsAction)
Q_DECLARE_USER_METATYPE(QMailMessage)
Q_DECLARE_USER_METATYPE(QMailMessageMetaData)
@@ -1001,8 +1001,4 @@ Q_DECLARE_METATYPE(QMailMessageList)
Q_DECLARE_METATYPE(QMailMessageMetaDataList)
Q_DECLARE_METATYPE(QMailMessageTypeList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailMessageList, QMailMessageList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailMessageMetaDataList, QMailMessageMetaDataList)
-Q_DECLARE_USER_METATYPE_TYPEDEF(QMailMessageTypeList, QMailMessageTypeList)
-
#endif
diff --git a/src/libraries/qmfclient/qmailserviceaction.h b/src/libraries/qmfclient/qmailserviceaction.h
index 1079f3fe..fc9dcea6 100644
--- a/src/libraries/qmfclient/qmailserviceaction.h
+++ b/src/libraries/qmfclient/qmailserviceaction.h
@@ -370,12 +370,12 @@ private:
Q_DECLARE_USER_METATYPE(QMailServiceAction::Status)
-Q_DECLARE_USER_METATYPE_ENUM(QMailServiceAction::Connectivity)
-Q_DECLARE_USER_METATYPE_ENUM(QMailServiceAction::Activity)
-Q_DECLARE_USER_METATYPE_ENUM(QMailServiceAction::Status::ErrorCode)
+Q_DECLARE_USER_METATYPE(QMailServiceAction::Connectivity)
+Q_DECLARE_USER_METATYPE(QMailServiceAction::Activity)
+Q_DECLARE_USER_METATYPE(QMailServiceAction::Status::ErrorCode)
-Q_DECLARE_USER_METATYPE_ENUM(QMailRetrievalAction::RetrievalSpecification)
+Q_DECLARE_USER_METATYPE(QMailRetrievalAction::RetrievalSpecification)
-Q_DECLARE_USER_METATYPE_ENUM(QMailSearchAction::SearchSpecification)
+Q_DECLARE_USER_METATYPE(QMailSearchAction::SearchSpecification)
#endif
diff --git a/src/libraries/qmfclient/qmailstore.h b/src/libraries/qmfclient/qmailstore.h
index 1aa56c16..3c444ab1 100644
--- a/src/libraries/qmfclient/qmailstore.h
+++ b/src/libraries/qmfclient/qmailstore.h
@@ -272,7 +272,7 @@ private:
QMailStoreImplementation* d;
};
-Q_DECLARE_USER_METATYPE_ENUM(QMailStore::MessageRemovalOption)
-Q_DECLARE_USER_METATYPE_ENUM(QMailStore::ChangeType)
+Q_DECLARE_USER_METATYPE(QMailStore::MessageRemovalOption)
+Q_DECLARE_USER_METATYPE(QMailStore::ChangeType)
#endif
diff --git a/src/libraries/qmfclient/support/qmailipc.h b/src/libraries/qmfclient/support/qmailipc.h
index d876cdc5..5ef742af 100644
--- a/src/libraries/qmfclient/support/qmailipc.h
+++ b/src/libraries/qmfclient/support/qmailipc.h
@@ -45,59 +45,48 @@ namespace QMailIpc
}
template <typename T>
-struct QMetaTypeRegister
+struct QmfMetaTypeRegister
{
static int registerType() { return 1; }
};
-#ifdef Q_CC_GNU
-# define _QATOMIC_ONCE() do {} while(0)
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#define QMF_REGISTER_STREAMABLE_TYPE(TYPE) \
+ qRegisterMetaType<TYPE>( #TYPE ); \
+ qRegisterMetaTypeStreamOperators<TYPE>( #TYPE );
#else
-# define _QATOMIC_ONCE() \
- static QAtomicInt once; \
- if ( once.fetchAndStoreOrdered(1) ) \
- return 1
+#define QMF_REGISTER_STREAMABLE_TYPE(TYPE) \
+ qRegisterMetaType<TYPE>( #TYPE );
#endif
-#define Q_DECLARE_USER_METATYPE_NO_OPERATORS(TYPE) \
+#define Q_DECLARE_USER_METATYPE(TYPE) \
Q_DECLARE_METATYPE(TYPE) \
+ QMF_EXPORT QDataStream &operator<<(QDataStream &stream, const TYPE &var); \
+ QMF_EXPORT QDataStream &operator>>(QDataStream &stream, TYPE &var);
+
+#define Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(TYPE) \
template<> \
- struct QMetaTypeRegister< TYPE > \
+ struct QmfMetaTypeRegister< TYPE > \
{ \
static int registerType() { \
- _QATOMIC_ONCE(); \
- qRegisterMetaType<TYPE>( #TYPE ); \
+ qRegisterMetaType<TYPE>(#TYPE); \
return 1; \
} \
static int __init_variable__; \
- };
-
-#define Q_DECLARE_USER_METATYPE(TYPE) \
- Q_DECLARE_USER_METATYPE_NO_OPERATORS(TYPE) \
- QMF_EXPORT QDataStream &operator<<(QDataStream &stream, const TYPE &var); \
- QMF_EXPORT QDataStream &operator>>( QDataStream &stream, TYPE &var );
+ }; \
+ int QmfMetaTypeRegister< TYPE >::__init_variable__ = QmfMetaTypeRegister< TYPE >::registerType();
-#define Q_DECLARE_USER_METATYPE_TYPEDEF(TAG,TYPE) \
- template <typename T> \
- struct QMetaTypeRegister##TAG \
+#define Q_IMPLEMENT_USER_METATYPE_WITH_OPERATORS(TYPE) \
+ template<> \
+ struct QmfMetaTypeRegister< TYPE > \
{ \
- static int registerType() { return 1; } \
- }; \
- template<> struct QMetaTypeRegister##TAG< TYPE > { \
static int registerType() { \
- _QATOMIC_ONCE(); \
- qRegisterMetaType< TYPE >( #TYPE ); \
+ QMF_REGISTER_STREAMABLE_TYPE(TYPE) \
return 1; \
} \
static int __init_variable__; \
- };
-
-#define Q_DECLARE_USER_METATYPE_ENUM(TYPE) \
- Q_DECLARE_USER_METATYPE(TYPE)
-
-#define Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(TYPE) \
- int QMetaTypeRegister< TYPE >::__init_variable__ = \
- QMetaTypeRegister< TYPE >::registerType();
+ }; \
+ int QmfMetaTypeRegister< TYPE >::__init_variable__ = QmfMetaTypeRegister< TYPE >::registerType();
#define Q_IMPLEMENT_USER_METATYPE(TYPE) \
QDataStream &operator<<(QDataStream &stream, const TYPE &var) \
@@ -105,31 +94,26 @@ struct QMetaTypeRegister
var.serialize(stream); \
return stream; \
} \
- \
- QDataStream &operator>>( QDataStream &stream, TYPE &var ) \
+ QDataStream &operator>>(QDataStream &stream, TYPE &var) \
{ \
var.deserialize(stream); \
return stream; \
} \
- Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(TYPE)
-
-#define Q_IMPLEMENT_USER_METATYPE_TYPEDEF(TAG,TYPE) \
- int QMetaTypeRegister##TAG< TYPE >::__init_variable__ = \
- QMetaTypeRegister##TAG< TYPE >::registerType();
+ Q_IMPLEMENT_USER_METATYPE_WITH_OPERATORS(TYPE)
-#define Q_IMPLEMENT_USER_METATYPE_ENUM(TYPE) \
- QDataStream& operator<<( QDataStream& stream, const TYPE &v ) \
+#define Q_IMPLEMENT_USER_METATYPE_ENUM(TYPE) \
+ QDataStream& operator<<(QDataStream& stream, const TYPE &v) \
{ \
stream << static_cast<qint32>(v); \
return stream; \
} \
- QDataStream& operator>>( QDataStream& stream, TYPE& v ) \
+ QDataStream& operator>>(QDataStream& stream, TYPE& v) \
{ \
qint32 _v; \
stream >> _v; \
v = static_cast<TYPE>(_v); \
return stream; \
} \
- Q_IMPLEMENT_USER_METATYPE_NO_OPERATORS(TYPE)
+ Q_IMPLEMENT_USER_METATYPE_WITH_OPERATORS(TYPE)
#endif //QMAILIPC_H