EVMC
evmc::HostContext Class Reference

Wrapper around EVMC host context / host interface. More...

#include <evmc.hpp>

Inheritance diagram for evmc::HostContext:
evmc::HostInterface

Public Member Functions

 HostContext ()=default
 Default constructor for null Host context.
 
 HostContext (const evmc_host_interface &interface, evmc_host_context *ctx) noexcept
 Constructor from the EVMC Host primitives. More...
 
bool account_exists (const address &address) const noexcept final
 Check account existence callback function. More...
 
bytes32 get_storage (const address &address, const bytes32 &key) const noexcept final
 Get storage callback function. More...
 
evmc_storage_status set_storage (const address &address, const bytes32 &key, const bytes32 &value) noexcept final
 Set storage callback function. More...
 
uint256be get_balance (const address &address) const noexcept final
 Get balance callback function. More...
 
size_t get_code_size (const address &address) const noexcept final
 Get code size callback function. More...
 
bytes32 get_code_hash (const address &address) const noexcept final
 Get code hash callback function. More...
 
size_t copy_code (const address &address, size_t code_offset, uint8_t *buffer_data, size_t buffer_size) const noexcept final
 Copy code callback function. More...
 
bool selfdestruct (const address &addr, const address &beneficiary) noexcept final
 Selfdestruct callback function. More...
 
Result call (const evmc_message &message) noexcept final
 Call callback function. More...
 
evmc_tx_context get_tx_context () const noexcept final
 Get transaction context callback function. More...
 
bytes32 get_block_hash (int64_t number) const noexcept final
 Get block hash callback function. More...
 
void emit_log (const address &addr, const uint8_t *data, size_t data_size, const bytes32 topics[], size_t topics_count) noexcept final
 Emit log callback function. More...
 
evmc_access_status access_account (const address &address) noexcept final
 Access account callback function. More...
 
evmc_access_status access_storage (const address &address, const bytes32 &key) noexcept final
 Access storage callback function. More...
 
virtual bool account_exists (const address &addr) const noexcept=0
 Check account existence callback function. More...
 
virtual bytes32 get_storage (const address &addr, const bytes32 &key) const noexcept=0
 Get storage callback function. More...
 
virtual evmc_storage_status set_storage (const address &addr, const bytes32 &key, const bytes32 &value) noexcept=0
 Set storage callback function. More...
 
virtual uint256be get_balance (const address &addr) const noexcept=0
 Get balance callback function. More...
 
virtual size_t get_code_size (const address &addr) const noexcept=0
 Get code size callback function. More...
 
virtual bytes32 get_code_hash (const address &addr) const noexcept=0
 Get code hash callback function. More...
 
virtual size_t copy_code (const address &addr, size_t code_offset, uint8_t *buffer_data, size_t buffer_size) const noexcept=0
 Copy code callback function. More...
 
virtual bool selfdestruct (const address &addr, const address &beneficiary) noexcept=0
 Selfdestruct callback function. More...
 
virtual Result call (const evmc_message &msg) noexcept=0
 Call callback function. More...
 
virtual evmc_tx_context get_tx_context () const noexcept=0
 Get transaction context callback function. More...
 
virtual bytes32 get_block_hash (int64_t block_number) const noexcept=0
 Get block hash callback function. More...
 
virtual void emit_log (const address &addr, const uint8_t *data, size_t data_size, const bytes32 topics[], size_t num_topics) noexcept=0
 Emit log callback function. More...
 
virtual evmc_access_status access_account (const address &addr) noexcept=0
 Access account callback function. More...
 
virtual evmc_access_status access_storage (const address &addr, const bytes32 &key) noexcept=0
 Access storage callback function. More...
 

Detailed Description

Wrapper around EVMC host context / host interface.

To be used by VM implementations as better alternative to using evmc_host_context directly.

Definition at line 489 of file evmc.hpp.

Constructor & Destructor Documentation

◆ HostContext()

evmc::HostContext::HostContext ( const evmc_host_interface interface,
evmc_host_context ctx 
)
inlinenoexcept

Constructor from the EVMC Host primitives.

Parameters
interfaceThe reference to the Host interface.
ctxThe pointer to the Host context object. This parameter MAY be null.

Definition at line 501 of file evmc.hpp.

502 : host{&interface}, context{ctx}
503 {}

Member Function Documentation

◆ access_account()

evmc_access_status evmc::HostContext::access_account ( const address addr)
inlinefinalvirtualnoexcept

Access account callback function.

Implements evmc::HostInterface.

Definition at line 572 of file evmc.hpp.

573 {
574 return host->access_account(context, &address);
575 }
evmc_access_account_fn access_account
Access account callback function.
Definition: evmc.h:815

◆ access_storage()

evmc_access_status evmc::HostContext::access_storage ( const address addr,
const bytes32 key 
)
inlinefinalvirtualnoexcept

Access storage callback function.

Implements evmc::HostInterface.

Definition at line 577 of file evmc.hpp.

578 {
579 return host->access_storage(context, &address, &key);
580 }
evmc_access_storage_fn access_storage
Access storage callback function.
Definition: evmc.h:818

◆ account_exists()

bool evmc::HostContext::account_exists ( const address addr) const
inlinefinalvirtualnoexcept

Check account existence callback function.

Implements evmc::HostInterface.

Definition at line 505 of file evmc.hpp.

506 {
507 return host->account_exists(context, &address);
508 }
evmc_account_exists_fn account_exists
Check account existence callback function.
Definition: evmc.h:779

◆ call()

Result evmc::HostContext::call ( const evmc_message msg)
inlinefinalvirtualnoexcept

Call callback function.

Implements evmc::HostInterface.

Definition at line 550 of file evmc.hpp.

551 {
552 return Result{host->call(context, &message)};
553 }
evmc_call_fn call
Call callback function.
Definition: evmc.h:803

◆ copy_code()

size_t evmc::HostContext::copy_code ( const address addr,
size_t  code_offset,
uint8_t *  buffer_data,
size_t  buffer_size 
) const
inlinefinalvirtualnoexcept

Copy code callback function.

Implements evmc::HostInterface.

Definition at line 537 of file evmc.hpp.

541 {
542 return host->copy_code(context, &address, code_offset, buffer_data, buffer_size);
543 }
evmc_copy_code_fn copy_code
Copy code callback function.
Definition: evmc.h:797

◆ emit_log()

void evmc::HostContext::emit_log ( const address addr,
const uint8_t *  data,
size_t  data_size,
const bytes32  topics[],
size_t  num_topics 
)
inlinefinalvirtualnoexcept

Emit log callback function.

Implements evmc::HostInterface.

Definition at line 563 of file evmc.hpp.

568 {
569 host->emit_log(context, &addr, data, data_size, topics, topics_count);
570 }
evmc_emit_log_fn emit_log
Emit log callback function.
Definition: evmc.h:812

◆ get_balance()

uint256be evmc::HostContext::get_balance ( const address addr) const
inlinefinalvirtualnoexcept

Get balance callback function.

Implements evmc::HostInterface.

Definition at line 522 of file evmc.hpp.

523 {
524 return host->get_balance(context, &address);
525 }
evmc_get_balance_fn get_balance
Get balance callback function.
Definition: evmc.h:788

◆ get_block_hash()

bytes32 evmc::HostContext::get_block_hash ( int64_t  block_number) const
inlinefinalvirtualnoexcept

Get block hash callback function.

Implements evmc::HostInterface.

Definition at line 558 of file evmc.hpp.

559 {
560 return host->get_block_hash(context, number);
561 }
evmc_get_block_hash_fn get_block_hash
Get block hash callback function.
Definition: evmc.h:809

◆ get_code_hash()

bytes32 evmc::HostContext::get_code_hash ( const address addr) const
inlinefinalvirtualnoexcept

Get code hash callback function.

Implements evmc::HostInterface.

Definition at line 532 of file evmc.hpp.

533 {
534 return host->get_code_hash(context, &address);
535 }
evmc_get_code_hash_fn get_code_hash
Get code hash callback function.
Definition: evmc.h:794

◆ get_code_size()

size_t evmc::HostContext::get_code_size ( const address addr) const
inlinefinalvirtualnoexcept

Get code size callback function.

Implements evmc::HostInterface.

Definition at line 527 of file evmc.hpp.

528 {
529 return host->get_code_size(context, &address);
530 }
evmc_get_code_size_fn get_code_size
Get code size callback function.
Definition: evmc.h:791

◆ get_storage()

bytes32 evmc::HostContext::get_storage ( const address addr,
const bytes32 key 
) const
inlinefinalvirtualnoexcept

Get storage callback function.

Implements evmc::HostInterface.

Definition at line 510 of file evmc.hpp.

511 {
512 return host->get_storage(context, &address, &key);
513 }
evmc_get_storage_fn get_storage
Get storage callback function.
Definition: evmc.h:782

◆ get_tx_context()

evmc_tx_context evmc::HostContext::get_tx_context ( ) const
inlinefinalvirtualnoexcept

Get transaction context callback function.

Implements evmc::HostInterface.

Definition at line 556 of file evmc.hpp.

556{ return host->get_tx_context(context); }
evmc_get_tx_context_fn get_tx_context
Get transaction context callback function.
Definition: evmc.h:806

◆ selfdestruct()

bool evmc::HostContext::selfdestruct ( const address addr,
const address beneficiary 
)
inlinefinalvirtualnoexcept

Selfdestruct callback function.

Implements evmc::HostInterface.

Definition at line 545 of file evmc.hpp.

546 {
547 return host->selfdestruct(context, &addr, &beneficiary);
548 }
evmc_selfdestruct_fn selfdestruct
Selfdestruct callback function.
Definition: evmc.h:800

◆ set_storage()

evmc_storage_status evmc::HostContext::set_storage ( const address addr,
const bytes32 key,
const bytes32 value 
)
inlinefinalvirtualnoexcept

Set storage callback function.

Implements evmc::HostInterface.

Definition at line 515 of file evmc.hpp.

518 {
519 return host->set_storage(context, &address, &key, &value);
520 }
evmc_set_storage_fn set_storage
Set storage callback function.
Definition: evmc.h:785

The documentation for this class was generated from the following file: