Ethereum  PoC-8
The C++ Implementation of Ethereum
EVMC.h
Go to the documentation of this file.
1 // Aleth: Ethereum C++ client, tools and libraries.
2 // Copyright 2019 cpp-ethereum Authors.
3 // Licensed under the GNU General Public License v3.
4 
5 #pragma once
6 
7 #include <libevm/VMFace.h>
8 
9 #include <evmc/evmc.hpp>
10 
11 namespace dev
12 {
13 namespace eth
14 {
16 class EVMC : public evmc::vm, public VMFace
17 {
18 public:
19  explicit EVMC(evmc_instance* _instance) noexcept;
20 
21  owning_bytes_ref exec(u256& io_gas, ExtVMFace& _ext, OnOpFunc const& _onOp) final;
22 };
23 } // namespace eth
24 } // namespace dev
dev::eth::OnOpFunc
std::function< void(uint64_t, uint64_t, Instruction, bigint, bigint, bigint, VMFace const *, ExtVMFace const *)> OnOpFunc
Definition: ExtVMFace.h:115
dev::eth::EVMC
The wrapper implementing the VMFace interface with a EVMC VM as a backend.
Definition: EVMC.h:17
VMFace.h
dev::eth::EVMC::EVMC
EVMC(evmc_instance *_instance) noexcept
Definition: EVMC.cpp:33
dev::eth::owning_bytes_ref
Definition: ExtVMFace.h:58
dev::eth::VMFace
EVM Virtual Machine interface.
Definition: VMFace.h:64
dev::eth::ExtVMFace
Interface and null implementation of the class for specifying VM externalities.
Definition: ExtVMFace.h:204
dev::eth::EVMC::exec
owning_bytes_ref exec(u256 &io_gas, ExtVMFace &_ext, OnOpFunc const &_onOp) final
VM implementation.
Definition: EVMC.cpp:58
dev::u256
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition: Common.h:121
dev
Definition: Address.cpp:21