aboutsummaryrefslogtreecommitdiff
path: root/lib/events/single_key_value.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/events/single_key_value.h')
-rw-r--r--lib/events/single_key_value.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/events/single_key_value.h b/lib/events/single_key_value.h
index 75ca8cd2..ca2bd331 100644
--- a/lib/events/single_key_value.h
+++ b/lib/events/single_key_value.h
@@ -5,13 +5,22 @@
namespace Quotient {
namespace EventContent {
- template <typename T, const QLatin1String* KeyStr>
+ template <typename T, const QLatin1String& KeyStr>
struct SingleKeyValue {
+ // NOLINTBEGIN(google-explicit-constructor): that check should learn
+ // about explicit(false)
+ QUO_IMPLICIT SingleKeyValue(const T& v = {})
+ : value { v }
+ {}
+ QUO_IMPLICIT SingleKeyValue(T&& v)
+ : value { std::move(v) }
+ {}
+ // NOLINTEND(google-explicit-constructor)
T value;
};
} // namespace EventContent
-template <typename ValueT, const QLatin1String* KeyStr>
+template <typename ValueT, const QLatin1String& KeyStr>
struct JsonConverter<EventContent::SingleKeyValue<ValueT, KeyStr>> {
using content_type = EventContent::SingleKeyValue<ValueT, KeyStr>;
static content_type load(const QJsonValue& jv)
@@ -22,6 +31,6 @@ struct JsonConverter<EventContent::SingleKeyValue<ValueT, KeyStr>> {
{
return { { JsonKey, toJson(c.value) } };
}
- static inline const auto JsonKey = toSnakeCase(*KeyStr);
+ static inline const auto JsonKey = toSnakeCase(KeyStr);
};
} // namespace Quotient