]>
Commit | Line | Data |
---|---|---|
6bd1d60c PW |
1 | // Copyright (c) 2015 The Bitcoin Core developers |
2 | // Distributed under the MIT software license, see the accompanying | |
bc909a7a | 3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php . |
6bd1d60c PW |
4 | |
5 | #ifndef BITCOIN_CORE_MEMUSAGE_H | |
6 | #define BITCOIN_CORE_MEMUSAGE_H | |
7 | ||
8 | #include "primitives/transaction.h" | |
9 | #include "primitives/block.h" | |
10 | #include "memusage.h" | |
11 | ||
12 | static inline size_t RecursiveDynamicUsage(const CScript& script) { | |
29a8ade7 | 13 | return memusage::DynamicUsage(*static_cast<const CScriptBase*>(&script)); |
6bd1d60c PW |
14 | } |
15 | ||
16 | static inline size_t RecursiveDynamicUsage(const COutPoint& out) { | |
17 | return 0; | |
18 | } | |
19 | ||
20 | static inline size_t RecursiveDynamicUsage(const CTxIn& in) { | |
21 | return RecursiveDynamicUsage(in.scriptSig) + RecursiveDynamicUsage(in.prevout); | |
22 | } | |
23 | ||
24 | static inline size_t RecursiveDynamicUsage(const CTxOut& out) { | |
25 | return RecursiveDynamicUsage(out.scriptPubKey); | |
26 | } | |
27 | ||
28 | static inline size_t RecursiveDynamicUsage(const CTransaction& tx) { | |
29 | size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout); | |
30 | for (std::vector<CTxIn>::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) { | |
31 | mem += RecursiveDynamicUsage(*it); | |
32 | } | |
33 | for (std::vector<CTxOut>::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) { | |
34 | mem += RecursiveDynamicUsage(*it); | |
35 | } | |
36 | return mem; | |
37 | } | |
38 | ||
39 | static inline size_t RecursiveDynamicUsage(const CMutableTransaction& tx) { | |
40 | size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout); | |
41 | for (std::vector<CTxIn>::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) { | |
42 | mem += RecursiveDynamicUsage(*it); | |
43 | } | |
44 | for (std::vector<CTxOut>::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) { | |
45 | mem += RecursiveDynamicUsage(*it); | |
46 | } | |
47 | return mem; | |
48 | } | |
49 | ||
50 | static inline size_t RecursiveDynamicUsage(const CBlock& block) { | |
51 | size_t mem = memusage::DynamicUsage(block.vtx) + memusage::DynamicUsage(block.vMerkleTree); | |
52 | for (std::vector<CTransaction>::const_iterator it = block.vtx.begin(); it != block.vtx.end(); it++) { | |
53 | mem += RecursiveDynamicUsage(*it); | |
54 | } | |
55 | return mem; | |
56 | } | |
57 | ||
58 | static inline size_t RecursiveDynamicUsage(const CBlockLocator& locator) { | |
59 | return memusage::DynamicUsage(locator.vHave); | |
60 | } | |
61 | ||
62 | #endif // BITCOIN_CORE_MEMUSAGE_H |