[network/ruqola] src/core/messages: Use std::make_unique => avoiding to delete by hand
Laurent Montel <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 963b0b03668dc6c9a95a3bb4517cf4218113a7fd by Laurent Montel.
Committed on 13/08/2026 at 19:28.
Pushed by mlaurent into branch 'master'.
Use std::make_unique => avoiding to delete by hand
M +2 -2 src/core/messages/block/blocks.cpp
M +2 -1 src/core/messages/block/blocks.h
M +2 -2 src/core/messages/channels.cpp
M +2 -1 src/core/messages/channels.h
M +9 -18 src/core/messages/message.cpp
M +2 -2 src/core/messages/messageattachments.cpp
M +2 -1 src/core/messages/messageattachments.h
M +2 -2 src/core/messages/messageencrypted.cpp
M +2 -1 src/core/messages/messageencrypted.h
M +2 -2 src/core/messages/messagepinned.cpp
M +2 -1 src/core/messages/messagepinned.h
M +2 -2 src/core/messages/messagetranslations.cpp
M +2 -1 src/core/messages/messagetranslations.h
M +2 -2 src/core/messages/messageurls.cpp
M +2 -1 src/core/messages/messageurls.h
M +2 -2 src/core/messages/reactions.cpp
M +2 -1 src/core/messages/reactions.h
M +2 -2 src/core/messages/replies.cpp
M +2 -1 src/core/messages/replies.h
https://invent.kde.org/network/ruqola/-/commit/963b0b03668dc6c9a95a3bb4517cf4218113a7fd
diff --git a/src/core/messages/block/blocks.cpp b/src/core/messages/block/blocks.cpp
index 5b7cf2adeb..43e5cba88e 100644
--- a/src/core/messages/block/blocks.cpp
+++ b/src/core/messages/block/blocks.cpp
@@ -92,14 +92,14 @@ QJsonArray Blocks::serialize(const Blocks &blocks)
return blockArray;
}
-Blocks *Blocks::deserialize(const QJsonArray &blocksArray)
+std::unique_ptr<Blocks> Blocks::deserialize(const QJsonArray &blocksArray)
{
QList<Block> blocks;
for (int i = 0, total = blocksArray.count(); i < total; ++i) {
const Block block = Block::deserialize(blocksArray.at(i).toObject());
blocks.append(std::move(block));
}
- auto final = new Blocks;
+ auto final = std::make_unique<Blocks>();
final->setBlocks(blocks);
return final;
}
diff --git a/src/core/messages/block/blocks.h b/src/core/messages/block/blocks.h
index f95a6a7dda..7a6ad4b018 100644
--- a/src/core/messages/block/blocks.h
+++ b/src/core/messages/block/blocks.h
@@ -9,6 +9,7 @@
#include "block.h"
#include "libruqolacore_export.h"
#include <QList>
+#include <memory>
class LIBRUQOLACORE_EXPORT Blocks : public QSharedData
{
public:
@@ -24,7 +25,7 @@ public:
[[nodiscard]] bool operator==(const Blocks &other) const;
[[nodiscard]] static QJsonArray serialize(const Blocks &reactions);
- [[nodiscard]] static Blocks *deserialize(const QJsonArray &o);
+ [[nodiscard]] static std::unique_ptr<Blocks> deserialize(const QJsonArray &o);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/channels.cpp b/src/core/messages/channels.cpp
index f3807fe162..c9c134ecda 100644
--- a/src/core/messages/channels.cpp
+++ b/src/core/messages/channels.cpp
@@ -84,7 +84,7 @@ QJsonArray Channels::serialize(const Channels &channels)
return array;
}
-Channels *Channels::deserialize(const QJsonArray &channelsArray)
+std::unique_ptr<Channels> Channels::deserialize(const QJsonArray &channelsArray)
{
QList<ChannelInfo> channels;
const int total = channelsArray.count();
@@ -98,7 +98,7 @@ Channels *Channels::deserialize(const QJsonArray &channelsArray)
};
channels.append(info);
}
- auto final = new Channels;
+ auto final = std::make_unique<Channels>();
final->setChannels(channels);
return final;
}
diff --git a/src/core/messages/channels.h b/src/core/messages/channels.h
index 3700d81506..0c6fbae8cf 100644
--- a/src/core/messages/channels.h
+++ b/src/core/messages/channels.h
@@ -10,6 +10,7 @@
#include <QList>
#include <QObject>
#include <QSharedData>
+#include <memory>
class LIBRUQOLACORE_EXPORT Channels : public QSharedData
{
public:
@@ -32,7 +33,7 @@ public:
[[nodiscard]] bool operator==(const Channels &other) const;
[[nodiscard]] static QJsonArray serialize(const Channels &channels);
- [[nodiscard]] static Channels *deserialize(const QJsonArray &o);
+ [[nodiscard]] static std::unique_ptr<Channels> deserialize(const QJsonArray &o);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/message.cpp b/src/core/messages/message.cpp
index 0372010057..06d30dafb8 100644
--- a/src/core/messages/message.cpp
+++ b/src/core/messages/message.cpp
@@ -1176,9 +1176,8 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
message.mMessageStarred.setIsStarred(o["starred"_L1].toBool());
if (o.contains("pinnedMessage"_L1)) {
- const MessagePinned *const pinned = MessagePinned::deserialize(o["pinnedMessage"_L1].toObject());
+ const auto pinned = MessagePinned::deserialize(o["pinnedMessage"_L1].toObject());
message.setMessagePinned(*pinned);
- delete pinned;
}
message.mRole = o["role"_L1].toString();
@@ -1190,30 +1189,26 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
if (o.contains("attachments"_L1)) {
const QJsonArray attachmentsArray = o.value("attachments"_L1).toArray();
- const MessageAttachments *const attachments = MessageAttachments::deserialize(attachmentsArray, message.messageId());
+ const auto attachments = MessageAttachments::deserialize(attachmentsArray, message.messageId());
message.setAttachments(*attachments);
- delete attachments;
}
if (o.contains("urls"_L1)) {
const QJsonArray urlsArray = o.value("urls"_L1).toArray();
- const MessageUrls *const urls = MessageUrls::deserialize(urlsArray, message.messageId());
+ const auto urls = MessageUrls::deserialize(urlsArray, message.messageId());
message.setUrls(*urls);
- delete urls;
}
if (o.contains("reactions"_L1)) {
const QJsonObject reactionsArray = o.value("reactions"_L1).toObject();
- const Reactions *const reaction = Reactions::deserialize(reactionsArray, emojiManager);
+ const auto reaction = Reactions::deserialize(reactionsArray, emojiManager);
message.setReactions(*reaction);
- delete reaction;
}
if (o.contains("replies"_L1)) {
const QJsonArray repliesArray = o.value("replies"_L1).toArray();
- const Replies *const replies = Replies::deserialize(repliesArray);
+ const auto replies = Replies::deserialize(repliesArray);
message.setReplies(*replies);
- delete replies;
}
QMap<QString, QByteArray> mentions;
@@ -1226,16 +1221,14 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
if (o.contains("channels"_L1)) {
const QJsonArray channelsArray = o.value("channels"_L1).toArray();
- const Channels *const channels = Channels::deserialize(channelsArray);
+ const auto channels = Channels::deserialize(channelsArray);
message.setChannels(*channels);
- delete channels;
}
if (o.contains("blocks"_L1)) {
const QJsonArray blocksArray = o.value("blocks"_L1).toArray();
- const Blocks *const blocks = Blocks::deserialize(blocksArray);
+ const auto blocks = Blocks::deserialize(blocksArray);
message.setBlocks(*blocks);
- delete blocks;
}
if (o.contains("localTranslation"_L1)) {
@@ -1244,16 +1237,14 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
}
if (o.contains("messageTranslation"_L1)) {
- const MessageTranslations *const translation = MessageTranslations::deserialize(o["messageTranslation"_L1].toArray());
+ const auto translation = MessageTranslations::deserialize(o["messageTranslation"_L1].toArray());
message.setMessageTranslation(*translation);
- delete translation;
}
if (o.contains("content"_L1)) {
const QJsonObject contentObj = o.value("content"_L1).toObject();
- const MessageEncrypted *const encrypted = MessageEncrypted::deserialize(contentObj);
+ const auto encrypted = MessageEncrypted::deserialize(contentObj);
message.setMessageEncrypted(*encrypted);
- delete encrypted;
}
return message;
diff --git a/src/core/messages/messageattachments.cpp b/src/core/messages/messageattachments.cpp
index 01b6ef36c1..96ddf182c5 100644
--- a/src/core/messages/messageattachments.cpp
+++ b/src/core/messages/messageattachments.cpp
@@ -76,7 +76,7 @@ QJsonArray MessageAttachments::serialize(const MessageAttachments &attachments)
return array;
}
-MessageAttachments *MessageAttachments::deserialize(const QJsonArray &attachmentsArray, const QByteArray &messageId)
+std::unique_ptr<MessageAttachments> MessageAttachments::deserialize(const QJsonArray &attachmentsArray, const QByteArray &messageId)
{
QList<MessageAttachment> attachmentList;
for (int i = 0; i < attachmentsArray.count(); ++i) {
@@ -87,7 +87,7 @@ MessageAttachments *MessageAttachments::deserialize(const QJsonArray &attachment
attachmentList.append(std::move(att));
}
}
- auto final = new MessageAttachments;
+ auto final = std::make_unique<MessageAttachments>();
final->setMessageAttachments(attachmentList);
return final;
}
diff --git a/src/core/messages/messageattachments.h b/src/core/messages/messageattachments.h
index 12759e16ba..e29ef47d03 100644
--- a/src/core/messages/messageattachments.h
+++ b/src/core/messages/messageattachments.h
@@ -10,6 +10,7 @@
#include "messageattachment.h"
#include <QList>
#include <QSharedData>
+#include <memory>
class LIBRUQOLACORE_EXPORT MessageAttachments : public QSharedData
{
public:
@@ -25,7 +26,7 @@ public:
[[nodiscard]] bool operator==(const MessageAttachments &other) const;
[[nodiscard]] static QJsonArray serialize(const MessageAttachments &attachments);
- [[nodiscard]] static MessageAttachments *deserialize(const QJsonArray &o, const QByteArray &messageId);
+ [[nodiscard]] static std::unique_ptr<MessageAttachments> deserialize(const QJsonArray &o, const QByteArray &messageId);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/messageencrypted.cpp b/src/core/messages/messageencrypted.cpp
index fe341e157c..5d9074fc51 100644
--- a/src/core/messages/messageencrypted.cpp
+++ b/src/core/messages/messageencrypted.cpp
@@ -211,9 +211,9 @@ QDebug operator<<(QDebug d, const MessageEncrypted &t)
return d;
}
-MessageEncrypted *MessageEncrypted::deserialize(const QJsonObject &o)
+std::unique_ptr<MessageEncrypted> MessageEncrypted::deserialize(const QJsonObject &o)
{
- MessageEncrypted *encrypted = new MessageEncrypted;
+ auto encrypted = std::make_unique<MessageEncrypted>();
encrypted->setAlgorithm(o["algorithm"_L1].toString().toLatin1());
encrypted->setCiphertext(o["ciphertext"_L1].toString());
encrypted->setIv(o["iv"_L1].toString().toLatin1());
diff --git a/src/core/messages/messageencrypted.h b/src/core/messages/messageencrypted.h
index 9ff4c85b80..b5977fd43f 100644
--- a/src/core/messages/messageencrypted.h
+++ b/src/core/messages/messageencrypted.h
@@ -8,6 +8,7 @@
#include "libruqolacore_export.h"
#include <QSharedData>
+#include <memory>
class QJsonObject;
class QDebug;
@@ -22,7 +23,7 @@ public:
void parse(const QJsonObject &o);
[[nodiscard]] static QJsonObject serialize(const MessageEncrypted &message);
- [[nodiscard]] static MessageEncrypted *deserialize(const QJsonObject &o);
+ [[nodiscard]] static std::unique_ptr<MessageEncrypted> deserialize(const QJsonObject &o);
[[nodiscard]] bool isValid() const;
diff --git a/src/core/messages/messagepinned.cpp b/src/core/messages/messagepinned.cpp
index ade415c2a9..826c83b480 100644
--- a/src/core/messages/messagepinned.cpp
+++ b/src/core/messages/messagepinned.cpp
@@ -82,9 +82,9 @@ QDebug operator<<(QDebug d, const MessagePinned &t)
return d;
}
-MessagePinned *MessagePinned::deserialize(const QJsonObject &o)
+std::unique_ptr<MessagePinned> MessagePinned::deserialize(const QJsonObject &o)
{
- MessagePinned *pinned = new MessagePinned;
+ auto pinned = std::make_unique<MessagePinned>();
pinned->setPinned(o["pinned"_L1].toBool());
pinned->setPinnedBy(o["pinnedBy"_L1].toString());
return pinned;
diff --git a/src/core/messages/messagepinned.h b/src/core/messages/messagepinned.h
index 9166d2220f..1e7d68d809 100644
--- a/src/core/messages/messagepinned.h
+++ b/src/core/messages/messagepinned.h
@@ -8,6 +8,7 @@
#include "libruqolacore_export.h"
#include <QSharedData>
+#include <memory>
class QJsonObject;
class QDebug;
@@ -28,7 +29,7 @@ public:
void parse(const QJsonObject &o);
[[nodiscard]] static QJsonObject serialize(const MessagePinned &message);
- [[nodiscard]] static MessagePinned *deserialize(const QJsonObject &o);
+ [[nodiscard]] static std::unique_ptr<MessagePinned> deserialize(const QJsonObject &o);
[[nodiscard]] bool isValid() const;
diff --git a/src/core/messages/messagetranslations.cpp b/src/core/messages/messagetranslations.cpp
index 3da1e8bd35..eb01388d9e 100644
--- a/src/core/messages/messagetranslations.cpp
+++ b/src/core/messages/messagetranslations.cpp
@@ -76,9 +76,9 @@ QJsonArray MessageTranslations::serialize(const MessageTranslations &translation
return array;
}
-MessageTranslations *MessageTranslations::deserialize(const QJsonArray &array)
+std::unique_ptr<MessageTranslations> MessageTranslations::deserialize(const QJsonArray &array)
{
- MessageTranslations *translationMessage = new MessageTranslations;
+ auto translationMessage = std::make_unique<MessageTranslations>();
QMap<QString, QString> translationStrings;
for (int i = 0, total = array.count(); i < total; ++i) {
const QJsonObject o = array.at(i).toObject();
diff --git a/src/core/messages/messagetranslations.h b/src/core/messages/messagetranslations.h
index ceb46d429b..1f28bd78cf 100644
--- a/src/core/messages/messagetranslations.h
+++ b/src/core/messages/messagetranslations.h
@@ -8,6 +8,7 @@
#include "libruqolacore_export.h"
#include <QMap>
+#include <memory>
class QJsonArray;
class QJsonObject;
class LIBRUQOLACORE_EXPORT MessageTranslations : public QSharedData
@@ -25,7 +26,7 @@ public:
[[nodiscard]] QString translatedStringFromLanguage(const QString &lang) const;
[[nodiscard]] static QJsonArray serialize(const MessageTranslations &translation);
- [[nodiscard]] static MessageTranslations *deserialize(const QJsonArray &o);
+ [[nodiscard]] static std::unique_ptr<MessageTranslations> deserialize(const QJsonArray &o);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/messageurls.cpp b/src/core/messages/messageurls.cpp
index d1f0cb4bec..04e2514235 100644
--- a/src/core/messages/messageurls.cpp
+++ b/src/core/messages/messageurls.cpp
@@ -76,7 +76,7 @@ QJsonArray MessageUrls::serialize(const MessageUrls &urls)
return urlArray;
}
-MessageUrls *MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteArray &messageId)
+std::unique_ptr<MessageUrls> MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteArray &messageId)
{
QList<MessageUrl> urls;
for (int i = 0; i < urlsArray.count(); ++i) {
@@ -88,7 +88,7 @@ MessageUrls *MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteAr
}
}
- auto final = new MessageUrls;
+ auto final = std::make_unique<MessageUrls>();
final->setMessageUrls(urls);
return final;
}
diff --git a/src/core/messages/messageurls.h b/src/core/messages/messageurls.h
index b70e5a3d96..5d848e4d6f 100644
--- a/src/core/messages/messageurls.h
+++ b/src/core/messages/messageurls.h
@@ -10,6 +10,7 @@
#include "messageurl.h"
#include <QList>
#include <QSharedData>
+#include <memory>
class LIBRUQOLACORE_EXPORT MessageUrls : public QSharedData
{
public:
@@ -25,7 +26,7 @@ public:
[[nodiscard]] bool operator==(const MessageUrls &other) const;
[[nodiscard]] static QJsonArray serialize(const MessageUrls &urls);
- [[nodiscard]] static MessageUrls *deserialize(const QJsonArray &o, const QByteArray &messageId);
+ [[nodiscard]] static std::unique_ptr<MessageUrls> deserialize(const QJsonArray &o, const QByteArray &messageId);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/reactions.cpp b/src/core/messages/reactions.cpp
index 5b9374f575..ef5fbdd636 100644
--- a/src/core/messages/reactions.cpp
+++ b/src/core/messages/reactions.cpp
@@ -88,7 +88,7 @@ QJsonObject Reactions::serialize(const Reactions &reactions)
return obj;
}
-Reactions *Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
+std::unique_ptr<Reactions> Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
{
QList<Reaction> reacts;
const QStringList lst = o.keys();
@@ -110,7 +110,7 @@ Reactions *Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManag
}
users.clear();
}
- auto final = new Reactions;
+ auto final = std::make_unique<Reactions>();
final->setReactions(reacts);
return final;
}
diff --git a/src/core/messages/reactions.h b/src/core/messages/reactions.h
index a6009b078c..1c4b13242b 100644
--- a/src/core/messages/reactions.h
+++ b/src/core/messages/reactions.h
@@ -10,6 +10,7 @@
#include "reaction.h"
#include <QList>
#include <QSharedData>
+#include <memory>
class EmojiManager;
class LIBRUQOLACORE_EXPORT Reactions : public QSharedData
{
@@ -26,7 +27,7 @@ public:
[[nodiscard]] bool operator==(const Reactions &other) const;
[[nodiscard]] static QJsonObject serialize(const Reactions &reactions);
- [[nodiscard]] static Reactions *deserialize(const QJsonObject &o, EmojiManager *emojiManager = nullptr);
+ [[nodiscard]] static std::unique_ptr<Reactions> deserialize(const QJsonObject &o, EmojiManager *emojiManager = nullptr);
[[nodiscard]] bool isEmpty() const;
diff --git a/src/core/messages/replies.cpp b/src/core/messages/replies.cpp
index 0302eda298..4fbe54f789 100644
--- a/src/core/messages/replies.cpp
+++ b/src/core/messages/replies.cpp
@@ -66,14 +66,14 @@ QJsonArray Replies::serialize(const Replies &replies)
return QJsonArray::fromStringList(serialize);
}
-Replies *Replies::deserialize(const QJsonArray &repliesArray)
+std::unique_ptr<Replies> Replies::deserialize(const QJsonArray &repliesArray)
{
QList<QByteArray> replies;
replies.reserve(repliesArray.count());
for (int i = 0, total = repliesArray.count(); i < total; ++i) {
replies.append(repliesArray.at(i).toString().toLatin1());
}
- auto final = new Replies;
+ auto final = std::make_unique<Replies>();
final->setReplies(replies);
return final;
}
diff --git a/src/core/messages/replies.h b/src/core/messages/replies.h
index 06574a93e4..58cd6e5596 100644
--- a/src/core/messages/replies.h
+++ b/src/core/messages/replies.h
@@ -10,6 +10,7 @@
#include <QList>
#include <QMetaType>
#include <QSharedData>
+#include <memory>
class QJsonArray;
class LIBRUQOLACORE_EXPORT Replies : public QSharedData
{
@@ -23,7 +24,7 @@ public:
[[nodiscard]] bool operator==(const Replies &other) const;
[[nodiscard]] static QJsonArray serialize(const Replies &channels);
- [[nodiscard]] static Replies *deserialize(const QJsonArray &o);
+ [[nodiscard]] static std::unique_ptr<Replies> deserialize(const QJsonArray &o);
[[nodiscard]] bool isEmpty() const;