From faa8f68943615785a2855676cf96e0e96f3cc6bd Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 4 Jan 2021 11:20:02 +0100 Subject: Replace boost::variant with std::variant --- src/key_io.cpp | 12 ++++-------- src/qt/addresstablemodel.cpp | 6 +++--- src/qt/coincontroldialog.cpp | 2 +- src/qt/signverifymessagedialog.cpp | 2 +- src/qt/transactionrecord.cpp | 2 +- src/rpc/util.cpp | 4 ++-- src/script/descriptor.cpp | 4 ++-- src/script/signingprovider.cpp | 8 ++++---- src/script/standard.cpp | 9 ++++----- src/script/standard.h | 6 ++---- src/test/script_standard_tests.cpp | 38 +++++++++++++++++++------------------- src/util/message.cpp | 2 +- src/wallet/rpcwallet.cpp | 14 +++++++------- src/wallet/test/wallet_tests.cpp | 6 +++--- src/wallet/wallet.cpp | 4 ++-- test/lint/lint-includes.sh | 3 --- 16 files changed, 56 insertions(+), 66 deletions(-) diff --git a/src/key_io.cpp b/src/key_io.cpp index d2f5be93f5..a270ede864 100644 --- a/src/key_io.cpp +++ b/src/key_io.cpp @@ -8,16 +8,12 @@ #include #include -#include -#include - +#include #include #include -#include -namespace -{ -class DestinationEncoder : public boost::static_visitor +namespace { +class DestinationEncoder { private: const CChainParams& m_params; @@ -209,7 +205,7 @@ std::string EncodeExtKey(const CExtKey& key) std::string EncodeDestination(const CTxDestination& dest) { - return boost::apply_visitor(DestinationEncoder(Params()), dest); + return std::visit(DestinationEncoder(Params()), dest); } CTxDestination DecodeDestination(const std::string& str) diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 665c8e6053..9485dc63de 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -11,7 +11,6 @@ #include #include -#include #include #include @@ -82,8 +81,9 @@ public: { for (const auto& address : wallet.getAddresses()) { - if (pk_hash_only && address.dest.type() != typeid(PKHash)) + if (pk_hash_only && !std::holds_alternative(address.dest)) { continue; + } AddressTableEntry::Type addressType = translateTransactionType( QString::fromStdString(address.purpose), address.is_mine); cachedAddressTable.append(AddressTableEntry(addressType, @@ -257,7 +257,7 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value, } else if(index.column() == Address) { CTxDestination newAddress = DecodeDestination(value.toString().toStdString()); // Refuse to set invalid address, set error status and return false - if(boost::get(&newAddress)) + if(std::get_if(&newAddress)) { editStatus = INVALID_ADDRESS; return false; diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 75fa970d37..08abef7866 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -455,7 +455,7 @@ void CoinControlDialog::updateLabels(CCoinControl& m_coin_control, WalletModel * else if(ExtractDestination(out.txout.scriptPubKey, address)) { CPubKey pubkey; - PKHash *pkhash = boost::get(&address); + PKHash* pkhash = std::get_if(&address); if (pkhash && model->wallet().getPubKey(out.txout.scriptPubKey, ToKeyID(*pkhash), pubkey)) { nBytesInputs += (pubkey.IsCompressed() ? 148 : 180); diff --git a/src/qt/signverifymessagedialog.cpp b/src/qt/signverifymessagedialog.cpp index 4835dd7954..6c110f0688 100644 --- a/src/qt/signverifymessagedialog.cpp +++ b/src/qt/signverifymessagedialog.cpp @@ -120,7 +120,7 @@ void SignVerifyMessageDialog::on_signMessageButton_SM_clicked() ui->statusLabel_SM->setText(tr("The entered address is invalid.") + QString(" ") + tr("Please check the address and try again.")); return; } - const PKHash* pkhash = boost::get(&destination); + const PKHash* pkhash = std::get_if(&destination); if (!pkhash) { ui->addressIn_SM->setValid(false); ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 06108f1d07..77fec93f0f 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -123,7 +123,7 @@ QList TransactionRecord::decomposeTransaction(const interface continue; } - if (!boost::get(&wtx.txout_address[nOut])) + if (!std::get_if(&wtx.txout_address[nOut])) { // Sent to Bitcoin Address sub.type = TransactionRecord::SendToAddress; diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index e377a80fbd..31072114da 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -209,7 +209,7 @@ CTxDestination AddAndGetMultisigDestination(const int required, const std::vecto return dest; } -class DescribeAddressVisitor : public boost::static_visitor +class DescribeAddressVisitor { public: explicit DescribeAddressVisitor() {} @@ -267,7 +267,7 @@ public: UniValue DescribeAddress(const CTxDestination& dest) { - return boost::apply_visitor(DescribeAddressVisitor(), dest); + return std::visit(DescribeAddressVisitor(), dest); } unsigned int ParseConfirmTarget(const UniValue& value, unsigned int max_target) diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp index e5ba9ba6d2..9e4b8a9dd6 100644 --- a/src/script/descriptor.cpp +++ b/src/script/descriptor.cpp @@ -565,7 +565,7 @@ public: Optional GetOutputType() const override { - switch (m_destination.which()) { + switch (m_destination.index()) { case 1 /* PKHash */: case 2 /* ScriptHash */: return OutputType::LEGACY; case 3 /* WitnessV0ScriptHash */: @@ -593,7 +593,7 @@ public: { CTxDestination dest; ExtractDestination(m_script, dest); - switch (dest.which()) { + switch (dest.index()) { case 1 /* PKHash */: case 2 /* ScriptHash */: return OutputType::LEGACY; case 3 /* WitnessV0ScriptHash */: diff --git a/src/script/signingprovider.cpp b/src/script/signingprovider.cpp index 26d081f853..9781ec32af 100644 --- a/src/script/signingprovider.cpp +++ b/src/script/signingprovider.cpp @@ -179,18 +179,18 @@ CKeyID GetKeyForDestination(const SigningProvider& store, const CTxDestination& { // Only supports destinations which map to single public keys, i.e. P2PKH, // P2WPKH, and P2SH-P2WPKH. - if (auto id = boost::get(&dest)) { + if (auto id = std::get_if(&dest)) { return ToKeyID(*id); } - if (auto witness_id = boost::get(&dest)) { + if (auto witness_id = std::get_if(&dest)) { return ToKeyID(*witness_id); } - if (auto script_hash = boost::get(&dest)) { + if (auto script_hash = std::get_if(&dest)) { CScript script; CScriptID script_id(*script_hash); CTxDestination inner_dest; if (store.GetCScript(script_id, script) && ExtractDestination(script, inner_dest)) { - if (auto inner_witness_id = boost::get(&inner_dest)) { + if (auto inner_witness_id = std::get_if(&inner_dest)) { return ToKeyID(*inner_witness_id); } } diff --git a/src/script/standard.cpp b/src/script/standard.cpp index 57d68c7ce9..7967c01858 100644 --- a/src/script/standard.cpp +++ b/src/script/standard.cpp @@ -261,9 +261,8 @@ bool ExtractDestinations(const CScript& scriptPubKey, TxoutType& typeRet, std::v return true; } -namespace -{ -class CScriptVisitor : public boost::static_visitor +namespace { +class CScriptVisitor { public: CScript operator()(const CNoDestination& dest) const @@ -300,7 +299,7 @@ public: CScript GetScriptForDestination(const CTxDestination& dest) { - return boost::apply_visitor(CScriptVisitor(), dest); + return std::visit(CScriptVisitor(), dest); } CScript GetScriptForRawPubKey(const CPubKey& pubKey) @@ -320,5 +319,5 @@ CScript GetScriptForMultisig(int nRequired, const std::vector& keys) } bool IsValidDestination(const CTxDestination& dest) { - return dest.which() != 0; + return dest.index() != 0; } diff --git a/src/script/standard.h b/src/script/standard.h index 4d1ef61964..d5d87392ad 100644 --- a/src/script/standard.h +++ b/src/script/standard.h @@ -9,10 +9,8 @@ #include