aboutsummaryrefslogtreecommitdiff
path: root/lib/networkaccessmanager.h
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-02 06:03:26 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-02 06:09:38 +0100
commit7d37d296f942ac993d041b4576ed52265170c4a8 (patch)
treebf36eca388b7fdc363ef21f4defa8ac9c449141d /lib/networkaccessmanager.h
parentd516280a2b38ccb060e4f7502b873e19b1559ed1 (diff)
downloadlibquotient-7d37d296f942ac993d041b4576ed52265170c4a8.tar.gz
libquotient-7d37d296f942ac993d041b4576ed52265170c4a8.zip
Add ImplPtr and makeImpl
The original (more complex and comprehensive) solution belongs to https://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html - this commit only provides a small wrapper for non-copyable Private class implementations common throughout libQuotient. Unlike the original, default initialisation is made explicit - you have to pass ZeroImpl<Private>() instead (and I firmly believe it's a good thing: normally pointers to Private should not remain nullptr). The reason ZeroImpl<> is not a template variable is quite simple: unique_ptr is non-copyable and so cannot be initialised from; while a template function will initialise the value in-place thanks to copy elision.
Diffstat (limited to 'lib/networkaccessmanager.h')
-rw-r--r--lib/networkaccessmanager.h8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/networkaccessmanager.h b/lib/networkaccessmanager.h
index d06f9736..5a9c134c 100644
--- a/lib/networkaccessmanager.h
+++ b/lib/networkaccessmanager.h
@@ -3,20 +3,18 @@
#pragma once
-#include "quotient_export.h"
+#include "util.h"
#include <QtNetwork/QNetworkAccessManager>
-#include <memory>
-
namespace Quotient {
class Room;
class Connection;
+
class QUOTIENT_API NetworkAccessManager : public QNetworkAccessManager {
Q_OBJECT
public:
NetworkAccessManager(QObject* parent = nullptr);
- ~NetworkAccessManager() override;
QList<QSslError> ignoredSslErrors() const;
void addIgnoredSslError(const QSslError& error);
@@ -33,6 +31,6 @@ private:
QIODevice* outgoingData = Q_NULLPTR) override;
class Private;
- std::unique_ptr<Private> d;
+ ImplPtr<Private> d;
};
} // namespace Quotient