Ref T597 Generic DBus marshalling operators for QFlags.

This commit is contained in:
Mat Sutcliffe
2019-05-21 17:08:53 +01:00
parent f39b277413
commit 4a7a0a0485
3 changed files with 26 additions and 48 deletions

View File

@@ -160,6 +160,32 @@ const QDBusArgument &operator >>(const QDBusArgument &arg, E &value)
return arg;
}
/*!
* Operator for streaming QFlags to QDBusArgument.
*/
template <class T>
QDBusArgument &operator <<(QDBusArgument &arg, const QFlags<T> &value)
{
arg.beginStructure();
arg << static_cast<typename QFlags<T>::Int>(value);
arg.endStructure();
return arg;
}
/*!
* Operator for streaming QFlags from QDBusArgument.
*/
template <class T>
const QDBusArgument &operator >>(const QDBusArgument &arg, QFlags<T> &value)
{
typename QFlags<T>::Int temp = 0;
arg.beginStructure();
arg >> temp;
arg.endStructure();
value = static_cast<QFlags<T>>(temp);
return arg;
}
/*!
* Operator for streaming pairs to QDBusArgument.
*/

View File

@@ -46,28 +46,4 @@ Q_DECLARE_METATYPE(BlackMisc::Simulation::MatchingLog)
Q_DECLARE_METATYPE(BlackMisc::Simulation::MatchingLogFlag)
Q_DECLARE_OPERATORS_FOR_FLAGS(BlackMisc::Simulation::MatchingLog)
/*!
* Operator for streaming enums to QDBusArgument.
*/
inline QDBusArgument &operator <<(QDBusArgument &arg, const BlackMisc::Simulation::MatchingLog &value)
{
arg.beginStructure();
arg << static_cast<int>(value);
arg.endStructure();
return arg;
}
/*!
* Operator for streaming enums from QDBusArgument.
*/
inline const QDBusArgument &operator >>(const QDBusArgument &arg, BlackMisc::Simulation::MatchingLog &value)
{
int temp;
arg.beginStructure();
arg >> temp;
arg.endStructure();
value = static_cast<BlackMisc::Simulation::MatchingLog>(temp);
return arg;
}
#endif // guard

View File

@@ -34,28 +34,4 @@ Q_DECLARE_METATYPE(BlackMisc::Simulation::ReverseLookupLogging)
Q_DECLARE_METATYPE(BlackMisc::Simulation::ReverseLookupLoggingFlag)
Q_DECLARE_OPERATORS_FOR_FLAGS(BlackMisc::Simulation::ReverseLookupLogging)
/*!
* Operator for streaming enums to QDBusArgument.
*/
inline QDBusArgument &operator <<(QDBusArgument &arg, const BlackMisc::Simulation::ReverseLookupLogging &value)
{
arg.beginStructure();
arg << static_cast<int>(value);
arg.endStructure();
return arg;
}
/*!
* Operator for streaming enums from QDBusArgument.
*/
inline const QDBusArgument &operator >>(const QDBusArgument &arg, BlackMisc::Simulation::ReverseLookupLogging &value)
{
int temp;
arg.beginStructure();
arg >> temp;
arg.endStructure();
value = static_cast<BlackMisc::Simulation::ReverseLookupLogging>(temp);
return arg;
}
#endif // guard