From 1eda33aabc15b905a1e23ffab648ecf2a8f5322b Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 2 Nov 2018 20:47:50 -0700 Subject: [refactor] Combine the ToString and ToPrivateString implementations --- src/script/descriptor.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src/script') diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp index 44e6112f2d..adb5d20edb 100644 --- a/src/script/descriptor.cpp +++ b/src/script/descriptor.cpp @@ -251,7 +251,7 @@ public: return false; } - bool ToPrivateString(const SigningProvider& arg, std::string& out) const final + bool ToStringHelper(const SigningProvider* arg, std::string& out, bool priv) const { std::string extra = ToStringExtra(); size_t pos = extra.size() > 0 ? 1 : 0; @@ -259,13 +259,17 @@ public: for (const auto& pubkey : m_pubkey_args) { if (pos++) ret += ","; std::string tmp; - if (!pubkey->ToPrivateString(arg, tmp)) return false; + if (priv) { + if (!pubkey->ToPrivateString(*arg, tmp)) return false; + } else { + tmp = pubkey->ToString(); + } ret += std::move(tmp); } if (m_script_arg) { if (pos++) ret += ","; std::string tmp; - if (!m_script_arg->ToPrivateString(arg, tmp)) return false; + if (!m_script_arg->ToStringHelper(arg, tmp, priv)) return false; ret += std::move(tmp); } out = std::move(ret) + ")"; @@ -274,20 +278,13 @@ public: std::string ToString() const final { - std::string extra = ToStringExtra(); - size_t pos = extra.size() > 0 ? 1 : 0; - std::string ret = m_name + "(" + extra; - for (const auto& pubkey : m_pubkey_args) { - if (pos++) ret += ","; - ret += pubkey->ToString(); - } - if (m_script_arg) { - if (pos++) ret += ","; - ret += m_script_arg->ToString(); - } - return std::move(ret) + ")"; + std::string ret; + ToStringHelper(nullptr, ret, false); + return ret; } + bool ToPrivateString(const SigningProvider& arg, std::string& out) const override final { return ToStringHelper(&arg, out, true); } + bool Expand(int pos, const SigningProvider& arg, std::vector& output_scripts, FlatSigningProvider& out) const final { std::vector> entries; -- cgit v1.2.3