[refactor] Combine the ToString and ToPrivateString implementations

This commit is contained in:
Pieter Wuille 2018-11-02 20:47:50 -07:00
parent 24d3a7b3a9
commit 1eda33aabc

View file

@ -251,7 +251,7 @@ public:
return false; 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(); std::string extra = ToStringExtra();
size_t pos = extra.size() > 0 ? 1 : 0; size_t pos = extra.size() > 0 ? 1 : 0;
@ -259,13 +259,17 @@ public:
for (const auto& pubkey : m_pubkey_args) { for (const auto& pubkey : m_pubkey_args) {
if (pos++) ret += ","; if (pos++) ret += ",";
std::string tmp; 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); ret += std::move(tmp);
} }
if (m_script_arg) { if (m_script_arg) {
if (pos++) ret += ","; if (pos++) ret += ",";
std::string tmp; 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); ret += std::move(tmp);
} }
out = std::move(ret) + ")"; out = std::move(ret) + ")";
@ -274,20 +278,13 @@ public:
std::string ToString() const final std::string ToString() const final
{ {
std::string extra = ToStringExtra(); std::string ret;
size_t pos = extra.size() > 0 ? 1 : 0; ToStringHelper(nullptr, ret, false);
std::string ret = m_name + "(" + extra; return ret;
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) + ")";
} }
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<CScript>& output_scripts, FlatSigningProvider& out) const final bool Expand(int pos, const SigningProvider& arg, std::vector<CScript>& output_scripts, FlatSigningProvider& out) const final
{ {
std::vector<std::pair<CPubKey, KeyOriginInfo>> entries; std::vector<std::pair<CPubKey, KeyOriginInfo>> entries;