Introduce convenience type CTransactionRef

This commit is contained in:
Pieter Wuille
2016-11-10 17:34:17 -08:00
parent 1662b437b3
commit b4e4ba475a
16 changed files with 63 additions and 57 deletions

View File

@@ -73,7 +73,7 @@ class CBlock : public CBlockHeader
{
public:
// network and disk
std::vector<std::shared_ptr<const CTransaction>> vtx;
std::vector<CTransactionRef> vtx;
// memory only
mutable bool fChecked;

View File

@@ -475,6 +475,12 @@ struct CMutableTransaction
uint256 GetHash() const;
};
typedef std::shared_ptr<const CTransaction> CTransactionRef;
static inline CTransactionRef MakeTransactionRef() { return std::make_shared<const CTransaction>(); }
template <typename Tx> static inline CTransactionRef MakeTransactionRef(Tx&& txIn) { return std::make_shared<const CTransaction>(std::forward<Tx>(txIn)); }
static inline CTransactionRef MakeTransactionRef(const CTransactionRef& txIn) { return txIn; }
static inline CTransactionRef MakeTransactionRef(CTransactionRef&& txIn) { return std::move(txIn); }
/** Compute the weight of a transaction, as defined by BIP 141 */
int64_t GetTransactionWeight(const CTransaction &tx);