Add block::clone () function
This commit is contained in:
parent
da7c15bd47
commit
8f97f87828
2 changed files with 33 additions and 2 deletions
|
|
@ -210,7 +210,7 @@ nano::block_hash nano::block::full_hash () const
|
|||
|
||||
nano::block_sideband const & nano::block::sideband () const
|
||||
{
|
||||
debug_assert (sideband_m.is_initialized ());
|
||||
release_assert (sideband_m.is_initialized ());
|
||||
return *sideband_m;
|
||||
}
|
||||
|
||||
|
|
@ -569,6 +569,11 @@ nano::send_block::send_block (bool & error_a, boost::property_tree::ptree const
|
|||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<nano::block> nano::send_block::clone () const
|
||||
{
|
||||
return std::make_shared<nano::send_block> (*this);
|
||||
}
|
||||
|
||||
bool nano::send_block::operator== (nano::block const & other_a) const
|
||||
{
|
||||
return blocks_equal (*this, other_a);
|
||||
|
|
@ -758,6 +763,11 @@ nano::open_block::open_block (bool & error_a, boost::property_tree::ptree const
|
|||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<nano::block> nano::open_block::clone () const
|
||||
{
|
||||
return std::make_shared<nano::open_block> (*this);
|
||||
}
|
||||
|
||||
void nano::open_block::generate_hash (blake2b_state & hash_a) const
|
||||
{
|
||||
hashables.hash (hash_a);
|
||||
|
|
@ -1029,6 +1039,11 @@ nano::change_block::change_block (bool & error_a, boost::property_tree::ptree co
|
|||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<nano::block> nano::change_block::clone () const
|
||||
{
|
||||
return std::make_shared<nano::change_block> (*this);
|
||||
}
|
||||
|
||||
void nano::change_block::generate_hash (blake2b_state & hash_a) const
|
||||
{
|
||||
hashables.hash (hash_a);
|
||||
|
|
@ -1326,6 +1341,11 @@ nano::state_block::state_block (bool & error_a, boost::property_tree::ptree cons
|
|||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<nano::block> nano::state_block::clone () const
|
||||
{
|
||||
return std::make_shared<nano::state_block> (*this);
|
||||
}
|
||||
|
||||
void nano::state_block::generate_hash (blake2b_state & hash_a) const
|
||||
{
|
||||
nano::uint256_union preamble (static_cast<uint64_t> (nano::block_type::state));
|
||||
|
|
@ -1792,6 +1812,11 @@ nano::receive_block::receive_block (bool & error_a, boost::property_tree::ptree
|
|||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<nano::block> nano::receive_block::clone () const
|
||||
{
|
||||
return std::make_shared<nano::receive_block> (*this);
|
||||
}
|
||||
|
||||
void nano::receive_block::generate_hash (blake2b_state & hash_a) const
|
||||
{
|
||||
hashables.hash (hash_a);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ namespace nano
|
|||
class block
|
||||
{
|
||||
public:
|
||||
virtual ~block () = default;
|
||||
// Return a digest of the hashables in this block.
|
||||
nano::block_hash const & hash () const;
|
||||
// Return a digest of hashables and non-hashables in this block.
|
||||
|
|
@ -46,10 +47,10 @@ public:
|
|||
virtual nano::block_type type () const = 0;
|
||||
virtual nano::signature const & block_signature () const = 0;
|
||||
virtual void signature_set (nano::signature const &) = 0;
|
||||
virtual ~block () = default;
|
||||
virtual bool valid_predecessor (nano::block const &) const = 0;
|
||||
static size_t size (nano::block_type);
|
||||
virtual nano::work_version work_version () const;
|
||||
virtual std::shared_ptr<nano::block> clone () const = 0;
|
||||
// If there are any changes to the hashables, call this to update the cached hash
|
||||
void refresh ();
|
||||
bool is_send () const noexcept;
|
||||
|
|
@ -138,6 +139,7 @@ public:
|
|||
bool operator== (nano::block const &) const override;
|
||||
bool operator== (nano::send_block const &) const;
|
||||
bool valid_predecessor (nano::block const &) const override;
|
||||
std::shared_ptr<nano::block> clone () const override;
|
||||
send_hashables hashables;
|
||||
nano::signature signature;
|
||||
uint64_t work;
|
||||
|
|
@ -192,6 +194,7 @@ public:
|
|||
bool operator== (nano::block const &) const override;
|
||||
bool operator== (nano::receive_block const &) const;
|
||||
bool valid_predecessor (nano::block const &) const override;
|
||||
std::shared_ptr<nano::block> clone () const override;
|
||||
receive_hashables hashables;
|
||||
nano::signature signature;
|
||||
uint64_t work;
|
||||
|
|
@ -247,6 +250,7 @@ public:
|
|||
bool operator== (nano::block const &) const override;
|
||||
bool operator== (nano::open_block const &) const;
|
||||
bool valid_predecessor (nano::block const &) const override;
|
||||
std::shared_ptr<nano::block> clone () const override;
|
||||
nano::open_hashables hashables;
|
||||
nano::signature signature;
|
||||
uint64_t work;
|
||||
|
|
@ -302,6 +306,7 @@ public:
|
|||
bool operator== (nano::block const &) const override;
|
||||
bool operator== (nano::change_block const &) const;
|
||||
bool valid_predecessor (nano::block const &) const override;
|
||||
std::shared_ptr<nano::block> clone () const override;
|
||||
nano::change_hashables hashables;
|
||||
nano::signature signature;
|
||||
uint64_t work;
|
||||
|
|
@ -368,6 +373,7 @@ public:
|
|||
bool operator== (nano::block const &) const override;
|
||||
bool operator== (nano::state_block const &) const;
|
||||
bool valid_predecessor (nano::block const &) const override;
|
||||
std::shared_ptr<nano::block> clone () const override;
|
||||
nano::state_hashables hashables;
|
||||
nano::signature signature;
|
||||
uint64_t work;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue