aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar staticfox2016-08-06 21:08:24 -0400
committerGravatar staticfox2016-08-07 23:12:47 -0400
commit2ceba3c866356522ab72ef0e9bea363e7b801385 (patch)
tree351640564483aa0da9635f2766c2e41a70d37067 /src
parentKviIrcConnectionAsyncData: Move to std::set (diff)
downloadKVIrc-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.cpp40
-rw-r--r--src/kvilib/ext/KviProxyDataBase.h15
-rw-r--r--src/kvilib/irc/KviIrcServer.cpp8
-rw-r--r--src/modules/options/OptionsWidget_proxy.cpp21
-rw-r--r--src/modules/options/OptionsWidget_servers.cpp7
-rw-r--r--src/modules/proxydb/libkviproxydb.cpp12
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;
}