diff options
| author | 2016-08-06 21:08:24 -0400 | |
|---|---|---|
| committer | 2016-08-07 23:12:47 -0400 | |
| commit | 2ceba3c866356522ab72ef0e9bea363e7b801385 (patch) | |
| tree | 351640564483aa0da9635f2766c2e41a70d37067 /src | |
| parent | KviIrcConnectionAsyncData: Move to std::set (diff) | |
| download | KVIrc-2ceba3c866356522ab72ef0e9bea363e7b801385.tar.gz KVIrc-2ceba3c866356522ab72ef0e9bea363e7b801385.tar.bz2 KVIrc-2ceba3c866356522ab72ef0e9bea363e7b801385.zip | |
KviProxyDatabase: Move to vector and unique pointers
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/ext/KviProxyDataBase.cpp | 40 | ||||
| -rw-r--r-- | src/kvilib/ext/KviProxyDataBase.h | 15 | ||||
| -rw-r--r-- | src/kvilib/irc/KviIrcServer.cpp | 8 | ||||
| -rw-r--r-- | src/modules/options/OptionsWidget_proxy.cpp | 21 | ||||
| -rw-r--r-- | src/modules/options/OptionsWidget_servers.cpp | 7 | ||||
| -rw-r--r-- | src/modules/proxydb/libkviproxydb.cpp | 12 |
6 files changed, 47 insertions, 56 deletions
diff --git a/src/kvilib/ext/KviProxyDataBase.cpp b/src/kvilib/ext/KviProxyDataBase.cpp index 2fed69f3b..419b42d4a 100644 --- a/src/kvilib/ext/KviProxyDataBase.cpp +++ b/src/kvilib/ext/KviProxyDataBase.cpp @@ -26,21 +26,9 @@ #include "KviConfigurationFile.h" #include "KviProxy.h" -KviProxyDataBase::KviProxyDataBase() -{ - m_pProxyList = new KviPointerList<KviProxy>; - m_pProxyList->setAutoDelete(true); - m_pCurrentProxy = nullptr; -} - -KviProxyDataBase::~KviProxyDataBase() -{ - delete m_pProxyList; -} - void KviProxyDataBase::updateProxyIp(const char * proxy, const char * ip) { - for(KviProxy * prx = m_pProxyList->first(); prx; prx = m_pProxyList->next()) + for(auto & prx : m_pProxyList) { if(QString::compare(proxy, prx->m_szHostname, Qt::CaseInsensitive)) { @@ -52,17 +40,17 @@ void KviProxyDataBase::updateProxyIp(const char * proxy, const char * ip) KviProxy * KviProxyDataBase::findProxy(const KviProxy * pProxy, bool bName) { - for(KviProxy * p = m_pProxyList->first(); p; p = m_pProxyList->next()) + for(auto & p : m_pProxyList) { if(bName) { if(QString::compare(p->m_szHostname, pProxy->m_szHostname, Qt::CaseInsensitive)) - return p; + return p.get(); } else { if(QString::compare(p->m_szHostname, pProxy->m_szHostname, Qt::CaseInsensitive) && (p->m_uPort == pProxy->m_uPort) && (p->protocol() == pProxy->protocol()) && (p->isIPv6() == pProxy->isIPv6())) - return p; + return p.get(); } } return nullptr; @@ -70,9 +58,7 @@ KviProxy * KviProxyDataBase::findProxy(const KviProxy * pProxy, bool bName) void KviProxyDataBase::clear() { - delete m_pProxyList; - m_pProxyList = new KviPointerList<KviProxy>; - m_pProxyList->setAutoDelete(true); + m_pProxyList.clear(); m_pCurrentProxy = nullptr; } @@ -85,7 +71,7 @@ void KviProxyDataBase::load(const QString & filename) for(unsigned int i = 0; i < nEntries; i++) { - KviProxy * p = new KviProxy(); + std::unique_ptr<KviProxy> p(new KviProxy()); KviCString tmp(KviCString::Format, "%u_Hostname", i); p->m_szHostname = cfg.readEntry(tmp.ptr(), "proxy.example.net"); tmp.sprintf("%u_Port", i); @@ -105,12 +91,12 @@ void KviProxyDataBase::load(const QString & filename) p->m_bIsIPv6 = cfg.readBoolEntry(tmp.ptr(), false); tmp.sprintf("%u_Current", i); if(cfg.readBoolEntry(tmp.ptr(), false)) - m_pCurrentProxy = p; - m_pProxyList->append(p); + m_pCurrentProxy = p.get(); + m_pProxyList.push_back(std::move(p)); } - if(!m_pCurrentProxy) - m_pCurrentProxy = m_pProxyList->first(); + if(!m_pCurrentProxy && !m_pProxyList.empty()) + m_pCurrentProxy = m_pProxyList.front().get(); } void KviProxyDataBase::save(const QString & filename) @@ -119,11 +105,11 @@ void KviProxyDataBase::save(const QString & filename) cfg.clear(); - cfg.writeEntry("Entries", m_pProxyList->count()); + cfg.writeEntry("Entries", static_cast<unsigned>(m_pProxyList.size())); int i = 0; - for(KviProxy * p = m_pProxyList->first(); p; p = m_pProxyList->next()) + for(auto & p : m_pProxyList) { KviCString tmp(KviCString::Format, "%u_Hostname", i); cfg.writeEntry(tmp.ptr(), p->m_szHostname); @@ -155,7 +141,7 @@ void KviProxyDataBase::save(const QString & filename) tmp.sprintf("%u_IsIPv6", i); cfg.writeEntry(tmp.ptr(), p->m_bIsIPv6); tmp.sprintf("%u_Current", i); - if(m_pCurrentProxy == p) + if(m_pCurrentProxy == p.get()) cfg.writeEntry(tmp.ptr(), true); i++; } diff --git a/src/kvilib/ext/KviProxyDataBase.h b/src/kvilib/ext/KviProxyDataBase.h index 98bc3ca3f..af3982112 100644 --- a/src/kvilib/ext/KviProxyDataBase.h +++ b/src/kvilib/ext/KviProxyDataBase.h @@ -24,29 +24,30 @@ // //============================================================================= +#include "KviProxy.h" #include "kvi_settings.h" -#include "KviPointerList.h" -class KviProxy; +#include <memory> +#include <utility> +#include <vector> class KVILIB_API KviProxyDataBase { public: - KviProxyDataBase(); - ~KviProxyDataBase(); + KviProxyDataBase() : m_pCurrentProxy() {}; private: - KviPointerList<KviProxy> * m_pProxyList; + std::vector<std::unique_ptr<KviProxy>> m_pProxyList; KviProxy * m_pCurrentProxy; public: void clear(); - KviPointerList<KviProxy> * proxyList() { return m_pProxyList; }; + std::vector<std::unique_ptr<KviProxy>> & proxyList() { return m_pProxyList; }; KviProxy * currentProxy() { return m_pCurrentProxy; }; KviProxy * findProxy(const KviProxy * pProxy, bool bName); void updateProxyIp(const char * proxy, const char * ip); void setCurrentProxy(KviProxy * prx) { m_pCurrentProxy = prx; }; - void insertProxy(KviProxy * prx) { m_pProxyList->append(prx); }; + void insertProxy(std::unique_ptr<KviProxy> prx) { m_pProxyList.push_back(std::move(prx)); }; void load(const QString & filename); void save(const QString & filename); }; diff --git a/src/kvilib/irc/KviIrcServer.cpp b/src/kvilib/irc/KviIrcServer.cpp index 67c4012b6..4eeeadf90 100644 --- a/src/kvilib/irc/KviIrcServer.cpp +++ b/src/kvilib/irc/KviIrcServer.cpp @@ -30,6 +30,8 @@ #include "KviTimeUtils.h" #include "KviProxyDataBase.h" +#include <memory> +#include <vector> #include <stdlib.h> // This is not allowed on windows unless we force the symbol to be undefined @@ -58,11 +60,11 @@ KviProxy * KviIrcServer::proxyServer(KviProxyDataBase * pDb) int i = 0; if(proxy() < 0) return nullptr; - KviPointerList<KviProxy> * proxylist = pDb->proxyList(); - for(KviProxy * pProxy = proxylist->first(); pProxy; pProxy = proxylist->next()) + std::vector<std::unique_ptr<KviProxy>> & proxylist = pDb->proxyList(); + for(auto & pProxy : proxylist) { if(i == proxy()) - return pProxy; + return pProxy.get(); i++; } return nullptr; diff --git a/src/modules/options/OptionsWidget_proxy.cpp b/src/modules/options/OptionsWidget_proxy.cpp index 8cc7fe108..52a8f63d1 100644 --- a/src/modules/options/OptionsWidget_proxy.cpp +++ b/src/modules/options/OptionsWidget_proxy.cpp @@ -43,6 +43,9 @@ #include <QToolButton> #include <QMenu> +#include <memory> +#include <vector> + ProxyOptionsTreeWidgetItem::ProxyOptionsTreeWidgetItem(QTreeWidget * parent, const QPixmap & pm, KviProxy * prx) : QTreeWidgetItem(parent) { @@ -161,12 +164,12 @@ void OptionsWidget_proxy::fillProxyList() { ProxyOptionsTreeWidgetItem * prx; - KviPointerList<KviProxy> * l = g_pProxyDataBase->proxyList(); + std::vector<std::unique_ptr<KviProxy>> & l = g_pProxyDataBase->proxyList(); - for(KviProxy * p = l->first(); p; p = l->next()) + for(auto & p : l) { - prx = new ProxyOptionsTreeWidgetItem(m_pTreeWidget, *(g_pIconManager->getSmallIcon(KviIconManager::Proxy)), p); - if(p == g_pProxyDataBase->currentProxy()) + prx = new ProxyOptionsTreeWidgetItem(m_pTreeWidget, *(g_pIconManager->getSmallIcon(KviIconManager::Proxy)), p.get()); + if(p.get() == g_pProxyDataBase->currentProxy()) { prx->setSelected(true); m_pTreeWidget->setCurrentItem(prx); @@ -316,16 +319,16 @@ void OptionsWidget_proxy::commit() QString tmp = it->text(0); if(!tmp.isEmpty()) { - KviProxy * prx = new KviProxy(*(it->m_pProxyData)); - g_pProxyDataBase->insertProxy(prx); + std::unique_ptr<KviProxy> prx(new KviProxy(*(it->m_pProxyData))); + g_pProxyDataBase->insertProxy(std::move(prx)); if(it == m_pLastEditedItem) - g_pProxyDataBase->setCurrentProxy(prx); + g_pProxyDataBase->setCurrentProxy(prx.get()); } } - if(!g_pProxyDataBase->currentProxy()) - g_pProxyDataBase->setCurrentProxy(g_pProxyDataBase->proxyList()->first()); + if(!g_pProxyDataBase->currentProxy() && !g_pProxyDataBase->proxyList().empty()) + g_pProxyDataBase->setCurrentProxy(g_pProxyDataBase->proxyList().front().get()); KviOptionsWidget::commit(); } diff --git a/src/modules/options/OptionsWidget_servers.cpp b/src/modules/options/OptionsWidget_servers.cpp index a00724c98..a1fb87aad 100644 --- a/src/modules/options/OptionsWidget_servers.cpp +++ b/src/modules/options/OptionsWidget_servers.cpp @@ -67,6 +67,9 @@ #include <QShortcut> #include <QMenu> +#include <memory> +#include <vector> + #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) || defined(COMPILE_ON_MAC) #include <QStyleFactory> #endif //COMPILE_ON_WINDOWS || COMPILE_ON_MINGW @@ -791,9 +794,9 @@ IrcServerDetailsWidget::IrcServerDetailsWidget(QWidget * par, KviIrcServer * s) m_pProxyEditor->addItem(__tr2qs_ctx("Default", "options")); m_pProxyEditor->addItem(__tr2qs_ctx("Direct Connection", "options")); - KviPointerList<KviProxy> * proxylist = g_pProxyDataBase->proxyList(); + std::vector<std::unique_ptr<KviProxy>> & proxylist = g_pProxyDataBase->proxyList(); - for(KviProxy * p = proxylist->first(); p; p = proxylist->next()) + for(auto & p : proxylist) { m_pProxyEditor->insertItem(m_pProxyEditor->count(), QString("%1:%2").arg(p->hostName()).arg(p->port())); } diff --git a/src/modules/proxydb/libkviproxydb.cpp b/src/modules/proxydb/libkviproxydb.cpp index 3dbd5c845..6ccfc7634 100644 --- a/src/modules/proxydb/libkviproxydb.cpp +++ b/src/modules/proxydb/libkviproxydb.cpp @@ -295,19 +295,16 @@ static bool proxydb_kvs_cmd_addProxy(KviKvsModuleCommandCall * c) return false; } - KviProxy * pProxy = new KviProxy(); + std::unique_ptr<KviProxy> pProxy(new KviProxy()); pProxy->setHostname(szProxy); - KviProxy * pRecord = g_pProxyDataBase->findProxy(pProxy, true); + KviProxy * pRecord = g_pProxyDataBase->findProxy(pProxy.get(), true); if(pRecord) { if(c->switches()->find('q', "quiet")) - { - delete pProxy; return true; - } + c->error(__tr2qs_ctx("The specified proxy already exists", "serverdb")); - delete pProxy; return false; } @@ -342,12 +339,11 @@ static bool proxydb_kvs_cmd_addProxy(KviKvsModuleCommandCall * c) else { c->error(__tr2qs_ctx("The specified protocol doesn't exist", "serverdb")); - delete pProxy; return false; } } - g_pProxyDataBase->insertProxy(pProxy); + g_pProxyDataBase->insertProxy(std::move(pProxy)); return true; } |
