From 9835f76939eef4218a87bbf33dacfaf4206476fd Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 13:39:18 +0000 Subject: [PATCH] Use std::variant to save a bit of RAM --- include/znc/Translation.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/znc/Translation.h b/include/znc/Translation.h index f830e3d2..3673493b 100644 --- a/include/znc/Translation.h +++ b/include/znc/Translation.h @@ -19,6 +19,7 @@ #include #include +#include struct CTranslationInfo { static std::map GetTranslations(); @@ -83,20 +84,18 @@ class CDelayedTranslation { class COptionalTranslation { public: - COptionalTranslation(const CString& sText) - : m_bTranslating(false), m_sText(sText) {} + COptionalTranslation(const CString& sText) : m_text(sText) {} COptionalTranslation(const char* s) : COptionalTranslation(CString(s)) {} - COptionalTranslation(const CDelayedTranslation& dTranslation) - : m_bTranslating(true), m_dTranslation(dTranslation) {} + COptionalTranslation(const CDelayedTranslation& dTranslation) : m_text(dTranslation) {} CString Resolve() const { - return m_bTranslating ? m_dTranslation.Resolve() : m_sText; + if (m_text.index() == 0) { + return std::get<0>(m_text); + } + return std::get<1>(m_text).Resolve(); } private: - bool m_bTranslating; - // TODO switch to std::variant after C++17 - CString m_sText; - CDelayedTranslation m_dTranslation; + std::variant m_text; }; // Used by everything except modules.