diff options
| author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-10-25 10:45:25 +0000 |
|---|---|---|
| committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-10-25 12:36:11 +0000 |
| commit | 5f397e441275d0e282a371bcdeed963c9a9b69f1 (patch) | |
| tree | 4ed5d4039320b142710befac10cbb7e816cfe173 /src/cryptonote_core/blockchain_storage.cpp | |
| parent | 0a5a5e859791b6ff0ced2a3f403eed71fb41dee2 (diff) | |
| download | monzero-core-5f397e441275d0e282a371bcdeed963c9a9b69f1.tar.gz monzero-core-5f397e441275d0e282a371bcdeed963c9a9b69f1.tar.xz monzero-core-5f397e441275d0e282a371bcdeed963c9a9b69f1.zip | |
Add functions to iterate through blocks, txes, outputs, key images
Diffstat (limited to 'src/cryptonote_core/blockchain_storage.cpp')
| -rw-r--r-- | src/cryptonote_core/blockchain_storage.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/cryptonote_core/blockchain_storage.cpp b/src/cryptonote_core/blockchain_storage.cpp index 4a4d348ba..16aaf7079 100644 --- a/src/cryptonote_core/blockchain_storage.cpp +++ b/src/cryptonote_core/blockchain_storage.cpp @@ -1890,3 +1890,41 @@ void blockchain_storage::set_enforce_dns_checkpoints(bool enforce_checkpoints) { m_enforce_dns_checkpoints = enforce_checkpoints; } +//------------------------------------------------------------------ +bool blockchain_storage::for_all_key_images(std::function<bool(const crypto::key_image&)> f) const +{ + for (key_images_container::const_iterator i = m_spent_keys.begin(); i != m_spent_keys.end(); ++i) { + if (!f(*i)) + return false; + } + return true; +} +//------------------------------------------------------------------ +bool blockchain_storage::for_all_blocks(std::function<bool(uint64_t, const block&)> f) const +{ + for (blocks_container::const_iterator i = m_blocks.begin(); i != m_blocks.end(); ++i) { + if (!f(i->height, i->bl)) + return false; + } + return true; +} +//------------------------------------------------------------------ +bool blockchain_storage::for_all_transactions(std::function<bool(const transaction&)> f) const +{ + for (transactions_container::const_iterator i = m_transactions.begin(); i != m_transactions.end(); ++i) { + if (!f(i->second.tx)) + return false; + } + return true; +} +//------------------------------------------------------------------ +bool blockchain_storage::for_all_outputs(std::function<bool(uint64_t, const crypto::hash&, size_t)> f) const +{ + for (outputs_container::const_iterator i = m_outputs.begin(); i != m_outputs.end(); ++i) { + for (size_t n = 0; n < i->second.size(); ++n) { + if (!f(i->first, i->second[n].first, i->second[n].second)) + return false; + } + } + return true; +} |
