From 67d22c8e42b446f00f69dd5797f34a577c09ab81 Mon Sep 17 00:00:00 2001 From: Uli Schlachter Date: Fri, 12 Sep 2014 14:42:40 +0200 Subject: [PATCH] CTemplate: Switch from CSmartPtr to std::shared_ptr Signed-off-by: Uli Schlachter --- include/znc/Template.h | 13 +++++++------ src/Template.cpp | 10 +++++----- src/WebModules.cpp | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/znc/Template.h b/include/znc/Template.h index cdaa0ec3..7c25d6c0 100644 --- a/include/znc/Template.h +++ b/include/znc/Template.h @@ -18,9 +18,10 @@ #define _TEMPLATE_H #include -#include +#include #include #include +#include class CTemplate; @@ -124,7 +125,7 @@ public: Init(); } - CTemplate(const CSmartPtr& Options, CTemplate* pParent = NULL) : MCString(), m_spOptions(Options) { + CTemplate(const std::shared_ptr& Options, CTemplate* pParent = NULL) : MCString(), m_spOptions(Options) { Init(); m_pParent = pParent; } @@ -132,11 +133,11 @@ public: virtual ~CTemplate(); //! Class for implementing custom tags in subclasses - void AddTagHandler(CSmartPtr spTagHandler) { + void AddTagHandler(std::shared_ptr spTagHandler) { m_vspTagHandlers.push_back(spTagHandler); } - std::vector >& GetTagHandlers() { + std::vector >& GetTagHandlers() { if (m_pParent) { return m_pParent->GetTagHandlers(); } @@ -182,8 +183,8 @@ private: std::list > m_lsbPaths; std::map > m_mvLoops; std::vector m_vLoopContexts; - CSmartPtr m_spOptions; - std::vector > m_vspTagHandlers; + std::shared_ptr m_spOptions; + std::vector > m_vspTagHandlers; }; #endif // !_TEMPLATE_H diff --git a/src/Template.cpp b/src/Template.cpp index 760805b3..bb4e4ad4 100644 --- a/src/Template.cpp +++ b/src/Template.cpp @@ -581,14 +581,14 @@ bool CTemplate::Print(const CString& sFileName, ostream& oOut) { } } else if (bNotFound) { // Unknown tag that isn't being skipped... - vector >& vspTagHandlers = GetTagHandlers(); + vector >& vspTagHandlers = GetTagHandlers(); if (!vspTagHandlers.empty()) { // @todo this should go up to the top to grab handlers CTemplate* pTmpl = GetCurTemplate(); CString sCustomOutput; for (unsigned int j = 0; j < vspTagHandlers.size(); j++) { - CSmartPtr spTagHandler = vspTagHandlers[j]; + std::shared_ptr spTagHandler = vspTagHandlers[j]; if (spTagHandler->HandleTag(*pTmpl, sAction, sArgs, sCustomOutput)) { sOutput += sCustomOutput; @@ -826,14 +826,14 @@ CString CTemplate::GetValue(const CString& sArgs, bool bFromIf) { sRet = (it != end()) ? it->second : ""; } - vector >& vspTagHandlers = GetTagHandlers(); + vector >& vspTagHandlers = GetTagHandlers(); if (!vspTagHandlers.empty()) { // @todo this should go up to the top to grab handlers CTemplate* pTmpl = GetCurTemplate(); if (sRet.empty()) { for (unsigned int j = 0; j < vspTagHandlers.size(); j++) { - CSmartPtr spTagHandler = vspTagHandlers[j]; + std::shared_ptr spTagHandler = vspTagHandlers[j]; CString sCustomOutput; if (!bFromIf && spTagHandler->HandleVar(*pTmpl, sArgs.Token(0), sArgs.Token(1, true), sCustomOutput)) { @@ -847,7 +847,7 @@ CString CTemplate::GetValue(const CString& sArgs, bool bFromIf) { } for (unsigned int j = 0; j < vspTagHandlers.size(); j++) { - CSmartPtr spTagHandler = vspTagHandlers[j]; + std::shared_ptr spTagHandler = vspTagHandlers[j]; if (spTagHandler->HandleValue(*pTmpl, sRet, msArgs)) { break; diff --git a/src/WebModules.cpp b/src/WebModules.cpp index a7418b78..c5552811 100644 --- a/src/WebModules.cpp +++ b/src/WebModules.cpp @@ -188,7 +188,7 @@ void CWebAuth::Invalidate() { CWebSock::CWebSock(const CString& sURIPrefix) : CHTTPSock(NULL, sURIPrefix) { m_bPathsSet = false; - m_Template.AddTagHandler(new CZNCTagHandler(*this)); + m_Template.AddTagHandler(std::make_shared(*this)); } CWebSock::~CWebSock() {