aboutsummaryrefslogtreecommitdiff
path: root/lib/events/simplestateevents.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/events/simplestateevents.h')
-rw-r--r--lib/events/simplestateevents.h94
1 files changed, 48 insertions, 46 deletions
diff --git a/lib/events/simplestateevents.h b/lib/events/simplestateevents.h
index 430eacb0..7ad2efa6 100644
--- a/lib/events/simplestateevents.h
+++ b/lib/events/simplestateevents.h
@@ -18,74 +18,76 @@
#pragma once
+#include "converters.h"
#include "stateevent.h"
-#include "converters.h"
+namespace QMatrixClient
+{
+namespace EventContent
+{
+ template <typename T>
+ class SimpleContent
+ {
+ public:
+ using value_type = T;
-namespace QMatrixClient {
- namespace EventContent {
- template <typename T> class SimpleContent
+ // The constructor is templated to enable perfect forwarding
+ template <typename TT>
+ SimpleContent(QString keyName, TT&& value)
+ : value(std::forward<TT>(value))
+ , key(std::move(keyName))
+ {}
+ SimpleContent(const QJsonObject& json, QString keyName)
+ : value(fromJson<T>(json[keyName]))
+ , key(std::move(keyName))
+ {}
+ QJsonObject toJson() const
{
- public:
- using value_type = T;
-
- // The constructor is templated to enable perfect forwarding
- template <typename TT>
- SimpleContent(QString keyName, TT&& value)
- : value(std::forward<TT>(value)), key(std::move(keyName))
- {
- }
- SimpleContent(const QJsonObject& json, QString keyName)
- : value(fromJson<T>(json[keyName])), key(std::move(keyName))
- {
- }
- QJsonObject toJson() const
- {
- return { { key, QMatrixClient::toJson(value) } };
- }
+ return { { key, QMatrixClient::toJson(value) } };
+ }
- public:
- T value;
+ public:
+ T value;
- protected:
- QString key;
- };
- } // namespace EventContent
+ protected:
+ QString key;
+ };
+} // namespace EventContent
#define DEFINE_SIMPLE_STATE_EVENT(_Name, _TypeId, _ValueType, _ContentKey) \
class _Name : public StateEvent<EventContent::SimpleContent<_ValueType>> \
{ \
- public: \
+ public: \
using value_type = content_type::value_type; \
DEFINE_EVENT_TYPEID(_TypeId, _Name) \
- explicit _Name() : _Name(value_type()) {} \
+ explicit _Name() \
+ : _Name(value_type()) \
+ {} \
template <typename T> \
explicit _Name(T&& value) \
: StateEvent(typeId(), matrixTypeId(), \
QStringLiteral(#_ContentKey), std::forward<T>(value)) \
- { \
- } \
+ {} \
explicit _Name(QJsonObject obj) \
: StateEvent(typeId(), std::move(obj), \
QStringLiteral(#_ContentKey)) \
- { \
- } \
+ {} \
auto _ContentKey() const { return content().value; } \
}; \
REGISTER_EVENT_TYPE(_Name) \
// End of macro
- DEFINE_SIMPLE_STATE_EVENT(RoomNameEvent, "m.room.name", QString, name)
- DEFINE_EVENTTYPE_ALIAS(RoomName, RoomNameEvent)
- DEFINE_SIMPLE_STATE_EVENT(RoomAliasesEvent, "m.room.aliases", QStringList,
- aliases)
- DEFINE_EVENTTYPE_ALIAS(RoomAliases, RoomAliasesEvent)
- DEFINE_SIMPLE_STATE_EVENT(RoomCanonicalAliasEvent, "m.room.canonical_alias",
- QString, alias)
- DEFINE_EVENTTYPE_ALIAS(RoomCanonicalAlias, RoomCanonicalAliasEvent)
- DEFINE_SIMPLE_STATE_EVENT(RoomTopicEvent, "m.room.topic", QString, topic)
- DEFINE_EVENTTYPE_ALIAS(RoomTopic, RoomTopicEvent)
- DEFINE_SIMPLE_STATE_EVENT(EncryptionEvent, "m.room.encryption", QString,
- algorithm)
- DEFINE_EVENTTYPE_ALIAS(RoomEncryption, EncryptionEvent)
+DEFINE_SIMPLE_STATE_EVENT(RoomNameEvent, "m.room.name", QString, name)
+DEFINE_EVENTTYPE_ALIAS(RoomName, RoomNameEvent)
+DEFINE_SIMPLE_STATE_EVENT(RoomAliasesEvent, "m.room.aliases", QStringList,
+ aliases)
+DEFINE_EVENTTYPE_ALIAS(RoomAliases, RoomAliasesEvent)
+DEFINE_SIMPLE_STATE_EVENT(RoomCanonicalAliasEvent, "m.room.canonical_alias",
+ QString, alias)
+DEFINE_EVENTTYPE_ALIAS(RoomCanonicalAlias, RoomCanonicalAliasEvent)
+DEFINE_SIMPLE_STATE_EVENT(RoomTopicEvent, "m.room.topic", QString, topic)
+DEFINE_EVENTTYPE_ALIAS(RoomTopic, RoomTopicEvent)
+DEFINE_SIMPLE_STATE_EVENT(EncryptionEvent, "m.room.encryption", QString,
+ algorithm)
+DEFINE_EVENTTYPE_ALIAS(RoomEncryption, EncryptionEvent)
} // namespace QMatrixClient