Merge #17316: refactor: Replace all uses of boost::optional with our own Optional type

d314e8a818d4c162b1c7201533e6b600dcab2d91 refactor: Replace all uses of boost::optional with our own Optional type (Wladimir J. van der Laan)

Pull request description:

  Replace all uses of boost::optional with our own Optional type. Luckily, there aren't so many.

  After this:

  - `boost::optional` is no longer used directly (only through `Optional` which is an alias for it)
  - `boost/optional.hpp` is only included in one place

ACKs for top commit:
  MarcoFalke:
    ACK d314e8a818d4c162b1c7201533e6b600dcab2d91
  practicalswift:
    ACK d314e8a818d4c162b1c7201533e6b600dcab2d91 -- diff looks correct + satisfying to see incremental progress towards the goal of a Boost free future :)
  jtimon:
    ACK d314e8a818d4c162b1c7201533e6b600dcab2d91
  fanquake:
    ACK d314e8a818d4c162b1c7201533e6b600dcab2d91

Tree-SHA512: b43e0017af81b07b5851377cd09624f114510ac5b9018d037664b58ad0fc8e893e30946b61f8f5e21e39125925bf9998a81f2226b468aab2df653ee57ed3213d
This commit is contained in:
fanquake 2019-10-30 13:56:34 -04:00
commit 08e2947312
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1
5 changed files with 14 additions and 14 deletions

View File

@ -387,7 +387,7 @@ struct PSBTOutput
/** A version of CTransaction with the PSBT format*/ /** A version of CTransaction with the PSBT format*/
struct PartiallySignedTransaction struct PartiallySignedTransaction
{ {
boost::optional<CMutableTransaction> tx; Optional<CMutableTransaction> tx;
std::vector<PSBTInput> inputs; std::vector<PSBTInput> inputs;
std::vector<PSBTOutput> outputs; std::vector<PSBTOutput> outputs;
std::map<std::vector<unsigned char>, std::vector<unsigned char>> unknown; std::map<std::vector<unsigned char>, std::vector<unsigned char>> unknown;

View File

@ -8,6 +8,7 @@
#include <consensus/consensus.h> #include <consensus/consensus.h>
#include <consensus/tx_verify.h> #include <consensus/tx_verify.h>
#include <consensus/validation.h> #include <consensus/validation.h>
#include <optional.h>
#include <validation.h> #include <validation.h>
#include <policy/policy.h> #include <policy/policy.h>
#include <policy/fees.h> #include <policy/fees.h>
@ -155,7 +156,7 @@ bool CTxMemPool::CalculateMemPoolAncestors(const CTxMemPoolEntry &entry, setEntr
// GetMemPoolParents() is only valid for entries in the mempool, so we // GetMemPoolParents() is only valid for entries in the mempool, so we
// iterate mapTx to find parents. // iterate mapTx to find parents.
for (unsigned int i = 0; i < tx.vin.size(); i++) { for (unsigned int i = 0; i < tx.vin.size(); i++) {
boost::optional<txiter> piter = GetIter(tx.vin[i].prevout.hash); Optional<txiter> piter = GetIter(tx.vin[i].prevout.hash);
if (piter) { if (piter) {
parentHashes.insert(*piter); parentHashes.insert(*piter);
if (parentHashes.size() + 1 > limitAncestorCount) { if (parentHashes.size() + 1 > limitAncestorCount) {
@ -860,11 +861,11 @@ const CTransaction* CTxMemPool::GetConflictTx(const COutPoint& prevout) const
return it == mapNextTx.end() ? nullptr : it->second; return it == mapNextTx.end() ? nullptr : it->second;
} }
boost::optional<CTxMemPool::txiter> CTxMemPool::GetIter(const uint256& txid) const Optional<CTxMemPool::txiter> CTxMemPool::GetIter(const uint256& txid) const
{ {
auto it = mapTx.find(txid); auto it = mapTx.find(txid);
if (it != mapTx.end()) return it; if (it != mapTx.end()) return it;
return boost::optional<txiter>{}; return Optional<txiter>{};
} }
CTxMemPool::setEntries CTxMemPool::GetIterSet(const std::set<uint256>& hashes) const CTxMemPool::setEntries CTxMemPool::GetIterSet(const std::set<uint256>& hashes) const

View File

@ -17,6 +17,7 @@
#include <coins.h> #include <coins.h>
#include <crypto/siphash.h> #include <crypto/siphash.h>
#include <indirectmap.h> #include <indirectmap.h>
#include <optional.h>
#include <policy/feerate.h> #include <policy/feerate.h>
#include <primitives/transaction.h> #include <primitives/transaction.h>
#include <sync.h> #include <sync.h>
@ -602,7 +603,7 @@ public:
const CTransaction* GetConflictTx(const COutPoint& prevout) const EXCLUSIVE_LOCKS_REQUIRED(cs); const CTransaction* GetConflictTx(const COutPoint& prevout) const EXCLUSIVE_LOCKS_REQUIRED(cs);
/** Returns an iterator to the given hash, if found */ /** Returns an iterator to the given hash, if found */
boost::optional<txiter> GetIter(const uint256& txid) const EXCLUSIVE_LOCKS_REQUIRED(cs); Optional<txiter> GetIter(const uint256& txid) const EXCLUSIVE_LOCKS_REQUIRED(cs);
/** Translate a set of hashes into a set of pool iterators to avoid repeated lookups */ /** Translate a set of hashes into a set of pool iterators to avoid repeated lookups */
setEntries GetIterSet(const std::set<uint256>& hashes) const EXCLUSIVE_LOCKS_REQUIRED(cs); setEntries GetIterSet(const std::set<uint256>& hashes) const EXCLUSIVE_LOCKS_REQUIRED(cs);

View File

@ -5,13 +5,12 @@
#ifndef BITCOIN_WALLET_COINCONTROL_H #ifndef BITCOIN_WALLET_COINCONTROL_H
#define BITCOIN_WALLET_COINCONTROL_H #define BITCOIN_WALLET_COINCONTROL_H
#include <optional.h>
#include <policy/feerate.h> #include <policy/feerate.h>
#include <policy/fees.h> #include <policy/fees.h>
#include <primitives/transaction.h> #include <primitives/transaction.h>
#include <wallet/wallet.h> #include <wallet/wallet.h>
#include <boost/optional.hpp>
const int DEFAULT_MIN_DEPTH = 0; const int DEFAULT_MIN_DEPTH = 0;
const int DEFAULT_MAX_DEPTH = 9999999; const int DEFAULT_MAX_DEPTH = 9999999;
@ -22,7 +21,7 @@ public:
//! Custom change destination, if not set an address is generated //! Custom change destination, if not set an address is generated
CTxDestination destChange; CTxDestination destChange;
//! Override the default change type if set, ignored if destChange is set //! Override the default change type if set, ignored if destChange is set
boost::optional<OutputType> m_change_type; Optional<OutputType> m_change_type;
//! If false, allows unselected inputs, but requires all selected inputs be used //! If false, allows unselected inputs, but requires all selected inputs be used
bool fAllowOtherInputs; bool fAllowOtherInputs;
//! Includes watch only addresses which are solvable //! Includes watch only addresses which are solvable
@ -30,11 +29,11 @@ public:
//! Override automatic min/max checks on fee, m_feerate must be set if true //! Override automatic min/max checks on fee, m_feerate must be set if true
bool fOverrideFeeRate; bool fOverrideFeeRate;
//! Override the wallet's m_pay_tx_fee if set //! Override the wallet's m_pay_tx_fee if set
boost::optional<CFeeRate> m_feerate; Optional<CFeeRate> m_feerate;
//! Override the default confirmation target if set //! Override the default confirmation target if set
boost::optional<unsigned int> m_confirm_target; Optional<unsigned int> m_confirm_target;
//! Override the wallet's m_signal_rbf if set //! Override the wallet's m_signal_rbf if set
boost::optional<bool> m_signal_bip125_rbf; Optional<bool> m_signal_bip125_rbf;
//! Avoid partial use of funds sent to a given address //! Avoid partial use of funds sent to a given address
bool m_avoid_partial_spends; bool m_avoid_partial_spends;
//! Forbids inclusion of dirty (previously used) addresses //! Forbids inclusion of dirty (previously used) addresses

View File

@ -4,11 +4,10 @@
#include <wallet/coinselection.h> #include <wallet/coinselection.h>
#include <optional.h>
#include <util/system.h> #include <util/system.h>
#include <util/moneystr.h> #include <util/moneystr.h>
#include <boost/optional.hpp>
// Descending order comparator // Descending order comparator
struct { struct {
bool operator()(const OutputGroup& a, const OutputGroup& b) const bool operator()(const OutputGroup& a, const OutputGroup& b) const
@ -219,7 +218,7 @@ bool KnapsackSolver(const CAmount& nTargetValue, std::vector<OutputGroup>& group
nValueRet = 0; nValueRet = 0;
// List of values less than target // List of values less than target
boost::optional<OutputGroup> lowest_larger; Optional<OutputGroup> lowest_larger;
std::vector<OutputGroup> applicable_groups; std::vector<OutputGroup> applicable_groups;
CAmount nTotalLower = 0; CAmount nTotalLower = 0;