EVMC
evmc::VM Class Reference

The VM instance. More...

#include <evmc.hpp>

Public Member Functions

 VM (evmc_vm *vm) noexcept
 Converting constructor from evmc_vm.
 
 ~VM () noexcept
 Destructor responsible for automatically destroying the VM instance.
 
 VM (const VM &)=delete
 
VMoperator= (const VM &)=delete
 
 VM (VM &&other) noexcept
 Move constructor.
 
VMoperator= (VM &&other) noexcept
 Move assignment operator.
 
 VM (evmc_vm *vm, std::initializer_list< std::pair< const char *, const char * >> options) noexcept
 The constructor that captures a VM instance and configures the instance with the provided list of options.
 
 operator bool () const noexcept
 Checks if contains a valid pointer to the VM instance.
 
bool is_abi_compatible () const noexcept
 Checks whenever the VM instance is ABI compatible with the current EVMC API.
 
char const * name () const noexcept
 The name of the EVMC VM implementation. More...
 
char const * version () const noexcept
 The version of the EVMC VM implementation, e.g. More...
 
bool has_capability (evmc_capabilities capability) const noexcept
 Checks if the VM has the given capability.
 
evmc_capabilities_flagset get_capabilities () const noexcept
 A method returning capabilities supported by the VM instance. More...
 
evmc_set_option_result set_option (const char name[], const char value[]) noexcept
 Sets the option for the VM, if the feature is supported by the VM. More...
 
result execute (const evmc_host_interface &host, evmc_host_context *ctx, evmc_revision rev, const evmc_message &msg, const uint8_t *code, size_t code_size) noexcept
 Executes code in the VM instance. More...
 
result execute (Host &host, evmc_revision rev, const evmc_message &msg, const uint8_t *code, size_t code_size) noexcept
 Convenient variant of the VM::execute() that takes reference to evmc::Host class.
 
result execute (evmc_revision rev, const evmc_message &msg, const uint8_t *code, size_t code_size) noexcept
 Executes code without the Host context. More...
 
evmc_vmget_raw_pointer () const noexcept
 Returns the pointer to C EVMC struct representing the VM. More...
 

Detailed Description

The VM instance.

This is a RAII wrapper for evmc_vm, and object of this type automatically destroys the VM instance.

Definition at line 641 of file evmc.hpp.

Member Function Documentation

◆ execute() [1/2]

result evmc::VM::execute ( const evmc_host_interface host,
evmc_host_context ctx,
evmc_revision  rev,
const evmc_message msg,
const uint8_t *  code,
size_t  code_size 
)
inlinenoexcept

Executes code in the VM instance.

See also
evmc_execute_fn.

Definition at line 707 of file evmc.hpp.

713  {
714  return result{m_instance->execute(m_instance, &host, ctx, rev, &msg, code, code_size)};
715  }
The EVM code execution result.
Definition: evmc.hpp:366
evmc_execute_fn execute
Pointer to function executing a code by the VM instance.
Definition: evmc.h:1017

◆ execute() [2/2]

result evmc::VM::execute ( evmc_revision  rev,
const evmc_message msg,
const uint8_t *  code,
size_t  code_size 
)
inlinenoexcept

Executes code without the Host context.

The same as execute(const evmc_host_interface&, evmc_host_context*, evmc_revision, const evmc_message&, const uint8_t*, size_t), but without providing the Host context and interface. This method is for experimental precompiles support where execution is guaranteed not to require any Host access.

Definition at line 735 of file evmc.hpp.

739  {
740  return result{
741  m_instance->execute(m_instance, nullptr, nullptr, rev, &msg, code, code_size)};
742  }

◆ get_capabilities()

evmc_capabilities_flagset evmc::VM::get_capabilities ( ) const
inlinenoexcept

A method returning capabilities supported by the VM instance.

The value returned MAY change when different options are set via the set_option() method.

A Client SHOULD only rely on the value returned if it has queried it after it has called the set_option().

This is a mandatory method and MUST NOT be set to NULL.

Definition at line 695 of file evmc.hpp.

696  {
697  return m_instance->get_capabilities(m_instance);
698  }
evmc_get_capabilities_fn get_capabilities
A method returning capabilities supported by the VM instance.
Definition: evmc.h:1029

◆ get_raw_pointer()

evmc_vm* evmc::VM::get_raw_pointer ( ) const
inlinenoexcept

Returns the pointer to C EVMC struct representing the VM.

Gives access to the C EVMC VM struct to allow advanced interaction with the VM not supported by the C++ interface. Use as the last resort. This object still owns the VM after returning the pointer. The returned pointer MAY be null.

Definition at line 749 of file evmc.hpp.

749 { return m_instance; }

◆ name()

char const* evmc::VM::name ( ) const
inlinenoexcept

The name of the EVMC VM implementation.

It MUST be a NULL-terminated not empty string. The content MUST be UTF-8 encoded (this implies ASCII encoding is also allowed).

Definition at line 683 of file evmc.hpp.

683 { return m_instance->name; }
const char * name
The name of the EVMC VM implementation.
Definition: evmc.h:995

◆ set_option()

evmc_set_option_result evmc::VM::set_option ( const char  name[],
const char  value[] 
)
inlinenoexcept

Sets the option for the VM, if the feature is supported by the VM.

See also
evmc_set_option_fn

Definition at line 701 of file evmc.hpp.

702  {
703  return evmc_set_option(m_instance, name, value);
704  }
char const * name() const noexcept
The name of the EVMC VM implementation.
Definition: evmc.hpp:683
static enum evmc_set_option_result evmc_set_option(struct evmc_vm *vm, char const *name, char const *value)
Sets the option for the VM, if the feature is supported by the VM.
Definition: helpers.h:73

◆ version()

char const* evmc::VM::version ( ) const
inlinenoexcept

The version of the EVMC VM implementation, e.g.

"1.2.3b4".

It MUST be a NULL-terminated not empty string. The content MUST be UTF-8 encoded (this implies ASCII encoding is also allowed).

Definition at line 686 of file evmc.hpp.

686 { return m_instance->version; }
const char * version
The version of the EVMC VM implementation, e.g.
Definition: evmc.h:1003

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