diff options
| author | Pekka Vuorela <pvuorela@iki.fi> | 2025-11-25 09:41:37 +0200 |
|---|---|---|
| committer | Pekka Vuorela <pvuorela@iki.fi> | 2025-11-27 18:21:45 +0200 |
| commit | fec24394dd87def335a6c9bc080f6b78da181aee (patch) | |
| tree | 1e3c3ac778c660e25a4bed8e8bbb369d2cc91a3e | |
| parent | 9c68e070df41c5abcc38beba7e5699111c666762 (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.cpp | 2 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailaction.h | 3 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailaddress.cpp | 4 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailaddress.h | 1 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailid.cpp | 8 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailid.h | 5 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailinstantiations.cpp | 6 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailmessage.h | 16 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailserviceaction.h | 10 | ||||
| -rw-r--r-- | src/libraries/qmfclient/qmailstore.h | 4 | ||||
| -rw-r--r-- | src/libraries/qmfclient/support/qmailipc.h | 72 |
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 |
