From 65596031acaf7d4f277bd75758bb1c551501ce86 Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Mon, 26 Sep 2016 14:49:48 +0200 Subject: Use const std::unique_ptr for pimpl idiom usage All our pimpl idiom usage used std::shared_ptr due to being written in C++03. Now we use C++11 and const std::unique_ptr is more sensible. Test-Information: Builds on macOS 10.12 and unit tests pass. Change-Id: I1b9b3fbb22e337d53ae71e5a5e03118998cc3376 diff --git a/Sluift/ITunesInterface.h b/Sluift/ITunesInterface.h index a2cd06a..d09982b 100644 --- a/Sluift/ITunesInterface.h +++ b/Sluift/ITunesInterface.h @@ -35,6 +35,6 @@ namespace Swift { private: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Sluift/ITunesInterface.mm b/Sluift/ITunesInterface.mm index 7493d10..33cf1ca 100644 --- a/Sluift/ITunesInterface.mm +++ b/Sluift/ITunesInterface.mm @@ -25,7 +25,7 @@ struct ITunesInterface::Private { iTunesApplication* iTunes; }; -ITunesInterface::ITunesInterface() : p(std::make_shared()) { +ITunesInterface::ITunesInterface() : p(new Private()) { } ITunesInterface::~ITunesInterface() { diff --git a/SwifTools/Application/CocoaApplication.h b/SwifTools/Application/CocoaApplication.h index a3e281c..4b366c6 100644 --- a/SwifTools/Application/CocoaApplication.h +++ b/SwifTools/Application/CocoaApplication.h @@ -1,11 +1,13 @@ /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once +#include + namespace Swift { class CocoaApplication { public: @@ -14,6 +16,6 @@ namespace Swift { private: class Private; - Private* d; + const std::unique_ptr d; }; } diff --git a/SwifTools/Application/CocoaApplication.mm b/SwifTools/Application/CocoaApplication.mm index f879014..f058ed4 100644 --- a/SwifTools/Application/CocoaApplication.mm +++ b/SwifTools/Application/CocoaApplication.mm @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + #include #include @@ -10,15 +16,13 @@ class CocoaApplication::Private { NSAutoreleasePool* autoReleasePool_; }; -CocoaApplication::CocoaApplication() { - d = new CocoaApplication::Private(); +CocoaApplication::CocoaApplication() : d(new Private()) { NSApplicationLoad(); d->autoReleasePool_ = [[NSAutoreleasePool alloc] init]; } CocoaApplication::~CocoaApplication() { [d->autoReleasePool_ release]; - delete d; } } diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.h b/SwifTools/AutoUpdater/SparkleAutoUpdater.h index c3394f7..1242128 100644 --- a/SwifTools/AutoUpdater/SparkleAutoUpdater.h +++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include @@ -27,6 +28,6 @@ namespace Swift { private: class Private; - Private* d; + const unique_ptr d; }; } diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm index 7e06b2f..76de34b 100644 --- a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm +++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm @@ -21,9 +21,7 @@ class SparkleAutoUpdater::Private { bool restartToUpdate = false; }; -SparkleAutoUpdater::SparkleAutoUpdater(const std::string& url) { - d = new Private; - +SparkleAutoUpdater::SparkleAutoUpdater(const std::string& url) : d(new Private()) { d->updater = [SUUpdater sharedUpdater]; [d->updater retain]; @@ -45,7 +43,6 @@ SparkleAutoUpdater::SparkleAutoUpdater(const std::string& url) { SparkleAutoUpdater::~SparkleAutoUpdater() { [d->updater release]; - delete d; SWIFT_LOG(warning) << std::endl; } diff --git a/SwifTools/Notifier/GrowlNotifier.h b/SwifTools/Notifier/GrowlNotifier.h index cbfe3e9..1b5f191 100644 --- a/SwifTools/Notifier/GrowlNotifier.h +++ b/SwifTools/Notifier/GrowlNotifier.h @@ -6,6 +6,8 @@ #pragma once +#include + #include #include @@ -36,6 +38,6 @@ namespace Swift { private: class Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/SwifTools/Notifier/GrowlNotifier.mm b/SwifTools/Notifier/GrowlNotifier.mm index 1356805..4ca53f7 100644 --- a/SwifTools/Notifier/GrowlNotifier.mm +++ b/SwifTools/Notifier/GrowlNotifier.mm @@ -32,8 +32,7 @@ class GrowlNotifier::Private { boost::intrusive_ptr delegate; }; -GrowlNotifier::GrowlNotifier(const std::string& name) { - p = std::make_shared(); +GrowlNotifier::GrowlNotifier(const std::string& name) : p(new Private()){ p->delegate = boost::intrusive_ptr([[GrowlNotifierDelegate alloc] init], false); p->delegate.get().notifier = this; p->delegate.get().name = std2NSString(name); diff --git a/SwifTools/Notifier/NotificationCenterNotifier.h b/SwifTools/Notifier/NotificationCenterNotifier.h index 19eb944..838971c 100644 --- a/SwifTools/Notifier/NotificationCenterNotifier.h +++ b/SwifTools/Notifier/NotificationCenterNotifier.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include @@ -32,7 +33,7 @@ public: private: class Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/SwifTools/Notifier/NotificationCenterNotifier.mm b/SwifTools/Notifier/NotificationCenterNotifier.mm index 35c740a..1538186 100644 --- a/SwifTools/Notifier/NotificationCenterNotifier.mm +++ b/SwifTools/Notifier/NotificationCenterNotifier.mm @@ -39,8 +39,7 @@ class NotificationCenterNotifier::Private { boost::intrusive_ptr delegate; }; -NotificationCenterNotifier::NotificationCenterNotifier() { - p = std::make_shared(); +NotificationCenterNotifier::NotificationCenterNotifier() : p(new Private()) { p->delegate = boost::intrusive_ptr([[NotificationCenterNotifierDelegate alloc] init], false); [p->delegate.get() setNotifier: this]; diff --git a/SwifTools/URIHandler/MacOSXURIHandler.h b/SwifTools/URIHandler/MacOSXURIHandler.h index afa4c6c..8136fa7 100644 --- a/SwifTools/URIHandler/MacOSXURIHandler.h +++ b/SwifTools/URIHandler/MacOSXURIHandler.h @@ -1,11 +1,13 @@ /* - * Copyright (c) 2011 Isode Limited. + * Copyright (c) 2011-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once +#include + #include namespace Swift { @@ -19,6 +21,6 @@ namespace Swift { private: class Private; - Private* p; + const std::unique_ptr p; }; } diff --git a/SwifTools/URIHandler/MacOSXURIHandler.mm b/SwifTools/URIHandler/MacOSXURIHandler.mm index 6285e12..ae7dc44 100644 --- a/SwifTools/URIHandler/MacOSXURIHandler.mm +++ b/SwifTools/URIHandler/MacOSXURIHandler.mm @@ -44,14 +44,12 @@ class MacOSXURIHandler::Private { MacOSXURIEventHandler* eventHandler; }; -MacOSXURIHandler::MacOSXURIHandler() { - p = new Private(); +MacOSXURIHandler::MacOSXURIHandler() : p(new Private()) { p->eventHandler = [[MacOSXURIEventHandler alloc] initWithHandler: this]; } MacOSXURIHandler::~MacOSXURIHandler() { [p->eventHandler release]; - delete p; } void MacOSXURIHandler::start() { diff --git a/Swift/QtUI/CocoaApplicationActivateHelper.h b/Swift/QtUI/CocoaApplicationActivateHelper.h index c7aa5b3..83fa886 100644 --- a/Swift/QtUI/CocoaApplicationActivateHelper.h +++ b/Swift/QtUI/CocoaApplicationActivateHelper.h @@ -1,11 +1,13 @@ /* - * Copyright (c) 2012 Isode Limited. + * Copyright (c) 2012-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once +#include + #include namespace Swift { @@ -23,6 +25,6 @@ namespace Swift { private: struct Private; - Private* p; + const std::unique_ptr p; }; } diff --git a/Swift/QtUI/CocoaApplicationActivateHelper.mm b/Swift/QtUI/CocoaApplicationActivateHelper.mm index 4d4409d..2bd985a 100644 --- a/Swift/QtUI/CocoaApplicationActivateHelper.mm +++ b/Swift/QtUI/CocoaApplicationActivateHelper.mm @@ -6,6 +6,8 @@ #include +#include + #include #include @@ -31,8 +33,7 @@ struct CocoaApplicationActivateHelper::Private { bool initialized; }; -CocoaApplicationActivateHelper::CocoaApplicationActivateHelper() { - p = new Private(); +CocoaApplicationActivateHelper::CocoaApplicationActivateHelper() : p(new Private()) { p->delegate = [[CocoaApplicationActivateHelperDelegate alloc] init]; p->initialized = false; qApp->installEventFilter(this); @@ -41,7 +42,6 @@ CocoaApplicationActivateHelper::CocoaApplicationActivateHelper() { CocoaApplicationActivateHelper::~CocoaApplicationActivateHelper() { [[NSAppleEventManager sharedAppleEventManager] removeEventHandlerForEventClass:kCoreEventClass andEventID:kAEReopenApplication]; [p->delegate release]; - delete p; } bool CocoaApplicationActivateHelper::eventFilter(QObject* object, QEvent* event) { diff --git a/Swiften/Compress/ZLibCodecompressor.cpp b/Swiften/Compress/ZLibCodecompressor.cpp index a9929a8..344e6b7 100644 --- a/Swiften/Compress/ZLibCodecompressor.cpp +++ b/Swiften/Compress/ZLibCodecompressor.cpp @@ -22,7 +22,7 @@ namespace Swift { static const size_t CHUNK_SIZE = 1024; // If you change this, also change the unittest -ZLibCodecompressor::ZLibCodecompressor() : p(std::make_shared()) { +ZLibCodecompressor::ZLibCodecompressor() : p(new Private()) { memset(&p->stream, 0, sizeof(z_stream)); p->stream.zalloc = Z_NULL; p->stream.zfree = Z_NULL; diff --git a/Swiften/Compress/ZLibCodecompressor.h b/Swiften/Compress/ZLibCodecompressor.h index 641b7a3..8bc5d88 100644 --- a/Swiften/Compress/ZLibCodecompressor.h +++ b/Swiften/Compress/ZLibCodecompressor.h @@ -6,6 +6,8 @@ #pragma once +#include + #include #include @@ -20,6 +22,6 @@ namespace Swift { protected: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Swiften/Crypto/WindowsCryptoProvider.cpp b/Swiften/Crypto/WindowsCryptoProvider.cpp index 61ac03e..513941f 100644 --- a/Swiften/Crypto/WindowsCryptoProvider.cpp +++ b/Swiften/Crypto/WindowsCryptoProvider.cpp @@ -190,8 +190,7 @@ namespace { } } -WindowsCryptoProvider::WindowsCryptoProvider() { - p = std::make_shared(); +WindowsCryptoProvider::WindowsCryptoProvider() : p(new Private()){ if (!CryptAcquireContext(&p->context, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { assert(false); } diff --git a/Swiften/Crypto/WindowsCryptoProvider.h b/Swiften/Crypto/WindowsCryptoProvider.h index ddf7ffa..f446027 100644 --- a/Swiften/Crypto/WindowsCryptoProvider.h +++ b/Swiften/Crypto/WindowsCryptoProvider.h @@ -27,6 +27,6 @@ namespace Swift { private: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Swiften/Network/MiniUPnPInterface.cpp b/Swiften/Network/MiniUPnPInterface.cpp index 94305b9..9006ceb 100644 --- a/Swiften/Network/MiniUPnPInterface.cpp +++ b/Swiften/Network/MiniUPnPInterface.cpp @@ -32,7 +32,7 @@ struct MiniUPnPInterface::Private { IGDdatas data; }; -MiniUPnPInterface::MiniUPnPInterface() : p(std::make_shared()) { +MiniUPnPInterface::MiniUPnPInterface() : p(new Private()) { p->isValid = false; int error = 0; #if MINIUPNPC_API_VERSION > 14 diff --git a/Swiften/Network/MiniUPnPInterface.h b/Swiften/Network/MiniUPnPInterface.h index ea956d9..89457b8 100644 --- a/Swiften/Network/MiniUPnPInterface.h +++ b/Swiften/Network/MiniUPnPInterface.h @@ -28,6 +28,6 @@ namespace Swift { private: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Swiften/Network/NATPMPInterface.cpp b/Swiften/Network/NATPMPInterface.cpp index c811212..5e0b3b3 100644 --- a/Swiften/Network/NATPMPInterface.cpp +++ b/Swiften/Network/NATPMPInterface.cpp @@ -30,7 +30,7 @@ struct NATPMPInterface::Private { natpmp_t natpmp; }; -NATPMPInterface::NATPMPInterface() : p(std::make_shared()) { +NATPMPInterface::NATPMPInterface() : p(new Private()) { initnatpmp(&p->natpmp, 0, 0); } diff --git a/Swiften/Network/NATPMPInterface.h b/Swiften/Network/NATPMPInterface.h index 80f619c..e1666c8 100644 --- a/Swiften/Network/NATPMPInterface.h +++ b/Swiften/Network/NATPMPInterface.h @@ -28,6 +28,6 @@ namespace Swift { private: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Swiften/Parser/ExpatParser.cpp b/Swiften/Parser/ExpatParser.cpp index 80cfe76..77d959c 100644 --- a/Swiften/Parser/ExpatParser.cpp +++ b/Swiften/Parser/ExpatParser.cpp @@ -6,9 +6,9 @@ #include -#include - #include +#include +#include #include diff --git a/Swiften/Parser/ExpatParser.h b/Swiften/Parser/ExpatParser.h index 6580a7a..12df463 100644 --- a/Swiften/Parser/ExpatParser.h +++ b/Swiften/Parser/ExpatParser.h @@ -25,6 +25,6 @@ namespace Swift { private: struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } diff --git a/Swiften/Parser/LibXMLParser.cpp b/Swiften/Parser/LibXMLParser.cpp index a880141..be0a92d 100644 --- a/Swiften/Parser/LibXMLParser.cpp +++ b/Swiften/Parser/LibXMLParser.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include diff --git a/Swiften/Parser/LibXMLParser.h b/Swiften/Parser/LibXMLParser.h index e63a628..9f752ce 100644 --- a/Swiften/Parser/LibXMLParser.h +++ b/Swiften/Parser/LibXMLParser.h @@ -28,6 +28,6 @@ namespace Swift { static bool initialized; struct Private; - std::shared_ptr p; + const std::unique_ptr p; }; } -- cgit v0.10.2-6-g49f6