mirror of
https://github.com/status-im/evmc.git
synced 2025-02-22 07:58:19 +00:00
184 lines
170 KiB
HTML
184 lines
170 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.13"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>EVMC: include/evmc/evmc.hpp Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">EVMC
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.13 -->
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('',false,false,'search.php','Search');
|
|
});
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('evmc_8hpp_source.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">evmc.hpp</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="evmc_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* EVMC: Ethereum Client-VM Connector API.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright 2018-2019 The EVMC Authors.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> */</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <<a class="code" href="evmc_8h.html">evmc/evmc.h</a>></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <<a class="code" href="helpers_8h.html">evmc/helpers.h</a>></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <initializer_list></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <utility></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="namespaceevmc.html"> 16</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceevmc.html">evmc</a></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="structevmc_1_1address.html"> 21</a></span> <span class="keyword">struct </span><a class="code" href="structevmc_1_1address.html">address</a> : <a class="code" href="structevmc__address.html">evmc_address</a></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="structevmc_1_1address.html#a4efaacdd8a0de3a347b845a5b134bd47"> 26</a></span>  constexpr <a class="code" href="structevmc_1_1address.html#a4efaacdd8a0de3a347b845a5b134bd47">address</a>(<a class="code" href="structevmc__address.html">evmc_address</a> init = {}) noexcept : <a class="code" href="structevmc__address.html">evmc_address</a>{init} {}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="structevmc_1_1address.html#aa58c7cf24b9fd2419a287e0329d75af2"> 32</a></span>  constexpr <span class="keyword">explicit</span> <a class="code" href="structevmc_1_1address.html#aa58c7cf24b9fd2419a287e0329d75af2">address</a>(uint64_t v) noexcept</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  : <a class="code" href="structevmc__address.html">evmc_address</a>{{0,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  0,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  0,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  0,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  0,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  0,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  0,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  0,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  0,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  0,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  0,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  0,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 56),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  static_cast<uint8_t>(v >> 48),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 40),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  static_cast<uint8_t>(v >> 32),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 24),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  static_cast<uint8_t>(v >> 16),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 8),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  static_cast<uint8_t>(v >> 0)}}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  constexpr <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="keyword">operator</span> bool() <span class="keyword">const</span> noexcept;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structevmc_1_1bytes32.html"> 62</a></span> <span class="keyword">struct </span><a class="code" href="structevmc_1_1bytes32.html">bytes32</a> : <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structevmc_1_1bytes32.html#a6403d03e29edb4f87fb272cdbde1cdc6"> 67</a></span>  constexpr <a class="code" href="structevmc_1_1bytes32.html#a6403d03e29edb4f87fb272cdbde1cdc6">bytes32</a>(<a class="code" href="structevmc__bytes32.html">evmc_bytes32</a> init = {}) noexcept : <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a>{init} {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structevmc_1_1bytes32.html#acf31b9ad2a8140d04eddc560fccf005b"> 73</a></span>  constexpr <span class="keyword">explicit</span> <a class="code" href="structevmc_1_1bytes32.html#acf31b9ad2a8140d04eddc560fccf005b">bytes32</a>(uint64_t v) noexcept</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  : <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a>{{0,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  0,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  0,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  0,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  0,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  0,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  0,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  0,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  0,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  0,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  0,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  0,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  0,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  0,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  0,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  0,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  0,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  0,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  0,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  0,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  0,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  0,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  0,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  0,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 56),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  static_cast<uint8_t>(v >> 48),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 40),</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  static_cast<uint8_t>(v >> 32),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 24),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  static_cast<uint8_t>(v >> 16),</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(v >> 8),</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  static_cast<uint8_t>(v >> 0)}}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {}</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  constexpr <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="keyword">operator</span> bool() <span class="keyword">const</span> noexcept;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> };</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a92bc6b73f1ce3a2b2eea018cf902c4da"> 113</a></span> <span class="keyword">using</span> <a class="code" href="structevmc_1_1bytes32.html">uint256be</a> = <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb"> 117</a></span> constexpr <span class="keyword">inline</span> uint64_t <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(<span class="keyword">const</span> uint8_t* <a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>) noexcept</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[0]} << 56) | (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[1]} << 48) | (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[2]} << 40) |</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[3]} << 32) | (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[4]} << 24) | (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[5]} << 16) |</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  (uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[6]} << 8) | uint64_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[7]};</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956"> 125</a></span> constexpr <span class="keyword">inline</span> uint32_t <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(<span class="keyword">const</span> uint8_t* <a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>) noexcept</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> (uint32_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[0]} << 24) | (uint32_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[1]} << 16) | (uint32_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[2]} << 8) |</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  uint32_t{<a class="code" href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">bytes</a>[3]};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">namespace </span>fnv</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="evmc_8hpp.html#ae84e3cac71791be23e06c9a113f373d4"> 133</a></span> constexpr <span class="keyword">auto</span> <a class="code" href="evmc_8hpp.html#ae84e3cac71791be23e06c9a113f373d4">prime</a> = 0x100000001b3; </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="evmc_8hpp.html#a5e866562fb1d26d46ec0bb750e762237"> 134</a></span> constexpr <span class="keyword">auto</span> <a class="code" href="evmc_8hpp.html#a5e866562fb1d26d46ec0bb750e762237">offset_basis</a> = 0xcbf29ce484222325; </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="evmc_8hpp.html#abd837c95e6df5b1f485f429e3b75050f"> 137</a></span> constexpr <span class="keyword">inline</span> uint64_t <a class="code" href="evmc_8hpp.html#abd837c95e6df5b1f485f429e3b75050f">fnv1a_by64</a>(uint64_t h, uint64_t x) noexcept</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> (h ^ x) * prime;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> } <span class="comment">// namespace fnv</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a3f6b3b885e1053cebe81913583212e70"> 145</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a3f6b3b885e1053cebe81913583212e70">operator==</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// TODO: Report bug in clang keeping unnecessary bswap.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) &&</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) &&</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(&a.bytes[16]) == <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(&b.bytes[16]);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="namespaceevmc.html#acef96efd7f9847cc089834dff73054bd"> 154</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#acef96efd7f9847cc089834dff73054bd">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> !(a == b);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a0a5557fb3dc3c04da6ef466ec3bb4d4c"> 160</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a0a5557fb3dc3c04da6ef466ec3bb4d4c">operator<</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) ||</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) &&</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) ||</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) &&</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(&a.bytes[16]) < <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(&b.bytes[16]))));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a44333e715985f766f2493b20ed665fbd"> 170</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a44333e715985f766f2493b20ed665fbd">operator></a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> b < a;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespaceevmc.html#ac0dc436fe57925210dcd0481a79e9784"> 176</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#ac0dc436fe57925210dcd0481a79e9784">operator<=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> !(b < a);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="namespaceevmc.html#aa1739e6e990dbd1fd3d30b249b1d0d58"> 182</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#aa1739e6e990dbd1fd3d30b249b1d0d58">operator>=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& b) noexcept</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> !(a < b);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a338b7c7a6dd5c12c0e37e5e8ef729100"> 188</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a3f6b3b885e1053cebe81913583212e70">operator==</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) &&</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) &&</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[16]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[16]) &&</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[24]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[24]);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a5917d256b4c67912a47d3a54f849f751"> 197</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#acef96efd7f9847cc089834dff73054bd">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> !(a == b);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a4a0c61db81ebf11230c1506f7fc9e003"> 203</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a0a5557fb3dc3c04da6ef466ec3bb4d4c">operator<</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) ||</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[0]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[0]) &&</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) ||</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[8]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[8]) &&</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[16]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[16]) ||</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  (<a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[16]) == <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[16]) &&</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&a.bytes[24]) < <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&b.bytes[24]))))));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a04835f698b6a2a5d2fbc3f8234518aed"> 215</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#a44333e715985f766f2493b20ed665fbd">operator></a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> b < a;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a8580df251c76ac9b0a1561cbfda93274"> 221</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#ac0dc436fe57925210dcd0481a79e9784">operator<=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> !(b < a);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="namespaceevmc.html#ad830a8c519d4baf674a220480efc8ad3"> 227</a></span> constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#aa1739e6e990dbd1fd3d30b249b1d0d58">operator>=</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& b) noexcept</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> !(a < b);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24"> 233</a></span> constexpr <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24">is_zero</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& a) noexcept</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> a == <a class="code" href="structevmc_1_1address.html">address</a>{};</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structevmc_1_1address.html#a25c8ad356e94fd5ec048a0b37e3de0b0"> 238</a></span> constexpr address::operator bool() const noexcept</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> !<a class="code" href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24">is_zero</a>(*<span class="keyword">this</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a2277f8eca7df22f45a4476d3fe6342fe"> 244</a></span> constexpr <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24">is_zero</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& a) noexcept</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> a == <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>{};</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structevmc_1_1bytes32.html#a3b9c7873f62eec5ba22de9cdcf90587e"> 249</a></span> constexpr bytes32::operator bool() const noexcept</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> !<a class="code" href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24">is_zero</a>(*<span class="keyword">this</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">namespace </span>literals</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">namespace </span>internal</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> constexpr <span class="keywordtype">size_t</span> length(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) noexcept</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> (*s != <span class="charliteral">'\0'</span>) ? length(s + 1) + 1 : 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> constexpr <span class="keywordtype">int</span> from_hex(<span class="keywordtype">char</span> c) noexcept</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> (c >= <span class="charliteral">'a'</span> && c <= <span class="charliteral">'f'</span>) ? c - (<span class="charliteral">'a'</span> - 10) :</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  (c >= <span class="charliteral">'A'</span> && c <= <span class="charliteral">'F'</span>) ? c - (<span class="charliteral">'A'</span> - 10) : c - <span class="charliteral">'0'</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> constexpr uint8_t byte(<span class="keyword">const</span> <span class="keywordtype">char</span>* s, <span class="keywordtype">size_t</span> i) noexcept</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>((from_hex(s[2 * i]) << 4) | from_hex(s[2 * i + 1]));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> T from_hex(<span class="keyword">const</span> <span class="keywordtype">char</span>*) noexcept;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> constexpr <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> from_hex<bytes32>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) noexcept</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {{byte(s, 0), byte(s, 1), byte(s, 2), byte(s, 3), byte(s, 4), byte(s, 5), byte(s, 6),</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  byte(s, 7), byte(s, 8), byte(s, 9), byte(s, 10), byte(s, 11), byte(s, 12), byte(s, 13),</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  byte(s, 14), byte(s, 15), byte(s, 16), byte(s, 17), byte(s, 18), byte(s, 19), byte(s, 20),</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  byte(s, 21), byte(s, 22), byte(s, 23), byte(s, 24), byte(s, 25), byte(s, 26), byte(s, 27),</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  byte(s, 28), byte(s, 29), byte(s, 30), byte(s, 31)}}};</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> constexpr <a class="code" href="structevmc_1_1address.html">address</a> from_hex<address>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) noexcept</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {{byte(s, 0), byte(s, 1), byte(s, 2), byte(s, 3), byte(s, 4), byte(s, 5), byte(s, 6),</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  byte(s, 7), byte(s, 8), byte(s, 9), byte(s, 10), byte(s, 11), byte(s, 12), byte(s, 13),</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  byte(s, 14), byte(s, 15), byte(s, 16), byte(s, 17), byte(s, 18), byte(s, 19)}}};</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> constexpr T from_literal(<span class="keyword">const</span> <span class="keywordtype">char</span>* s)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> (s[0] == <span class="charliteral">'0'</span> && s[1] == <span class="charliteral">'\0'</span>) ?</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  T{} :</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  !(s[0] == <span class="charliteral">'0'</span> && s[1] == <span class="charliteral">'x'</span>) ?</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">throw</span> <span class="stringliteral">"literal must be in hexadecimal notation"</span> :</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  (length(s + 2) != <span class="keyword">sizeof</span>(T) * 2) ? <span class="keywordflow">throw</span> <span class="stringliteral">"literal must match the result type size"</span> :</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  from_hex<T>(s + 2);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> } <span class="comment">// namespace internal</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="evmc_8hpp.html#a128bb7b0e024d8e14a08f0c317abe1e6"> 310</a></span> constexpr <a class="code" href="structevmc_1_1address.html">address</a> <span class="keyword">operator</span><span class="stringliteral">""</span>_address(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) noexcept</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">return</span> internal::from_literal<address>(s);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="evmc_8hpp.html#a668cad5d0b53b8bb34937f53734e8e69"> 316</a></span> constexpr <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> <span class="keyword">operator</span><span class="stringliteral">""</span>_bytes32(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) noexcept</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> internal::from_literal<bytes32>(s);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> } <span class="comment">// namespace literals</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword">using namespace </span>literals;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="namespaceevmc.html#a9843b267dc279832b0ff9578b7dacdb7"> 325</a></span> constexpr <span class="keyword">auto</span> <a class="code" href="namespaceevmc.html#a9843b267dc279832b0ff9578b7dacdb7">make_result</a> = <a class="code" href="group__helpers.html#ga1eb1facc9b5ddacda368ffdeb89d1a20">evmc_make_result</a>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html"> 331</a></span> <span class="keyword">class </span><a class="code" href="classevmc_1_1result.html">result</a> : <span class="keyword">private</span> <a class="code" href="structevmc__result.html">evmc_result</a></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">using</span> <a class="code" href="structevmc__result.html#ae7f37ff7c9cfa3b58af2c89f4d610522">evmc_result::create_address</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">using</span> <a class="code" href="structevmc__result.html#af8478c93dbcc3cb2876037c5a5afd4c0">evmc_result::gas_left</a>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keyword">using</span> <a class="code" href="structevmc__result.html#a61978e85f9d795a7b9695b9cbf1748d6">evmc_result::output_data</a>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">using</span> <a class="code" href="structevmc__result.html#a93bb7419aff492cdef754421c6d74e26">evmc_result::output_size</a>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">using</span> <a class="code" href="structevmc__result.html#a759c4aaa4a1c002f5a8be09ccb0b6a1c">evmc_result::status_code</a>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#add9ddebaace1c5d35784cfc6966d8aa8"> 349</a></span>  <a class="code" href="classevmc_1_1result.html#add9ddebaace1c5d35784cfc6966d8aa8">result</a>(<a class="code" href="group__EVMC.html#ga4c0be97f333c050ff45321fcaa34d920">evmc_status_code</a> _status_code,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  int64_t _gas_left,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">const</span> uint8_t* _output_data,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">size_t</span> _output_size) noexcept</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  : <a class="code" href="structevmc__result.html">evmc_result</a>{<a class="code" href="namespaceevmc.html#a9843b267dc279832b0ff9578b7dacdb7">make_result</a>(_status_code, _gas_left, _output_data, _output_size)}</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {}</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#a4753030d0491d94c2b64b15f025d5055"> 357</a></span>  <span class="keyword">explicit</span> <a class="code" href="classevmc_1_1result.html#a4753030d0491d94c2b64b15f025d5055">result</a>(<a class="code" href="structevmc__result.html">evmc_result</a> <span class="keyword">const</span>& res) noexcept : <a class="code" href="structevmc__result.html">evmc_result</a>{res} {}</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#aee479c5093974fed2ec14f33bafcfd32"> 360</a></span>  <a class="code" href="classevmc_1_1result.html#aee479c5093974fed2ec14f33bafcfd32">~result</a>() noexcept</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (release != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  release(<span class="keyword">this</span>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#aeb05e759733ffba8140aef6b7a8dd550"> 367</a></span>  <a class="code" href="classevmc_1_1result.html#aeb05e759733ffba8140aef6b7a8dd550">result</a>(<a class="code" href="classevmc_1_1result.html">result</a>&& other) noexcept : <a class="code" href="structevmc__result.html">evmc_result</a>{other}</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  other.<a class="code" href="structevmc__result.html#a8727ff83d372ab0067bcf6656d30b0ed">release</a> = <span class="keyword">nullptr</span>; <span class="comment">// Disable releasing of the rvalue object.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#a2a68d0dc6232c3ec44f07ad50bc83b66"> 378</a></span>  <a class="code" href="classevmc_1_1result.html">result</a>& <a class="code" href="classevmc_1_1result.html#a2a68d0dc6232c3ec44f07ad50bc83b66">operator=</a>(<a class="code" href="classevmc_1_1result.html">result</a>&& other) noexcept</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  this->~<a class="code" href="classevmc_1_1result.html">result</a>(); <span class="comment">// Release this object.</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">static_cast<</span><a class="code" href="structevmc__result.html">evmc_result</a>&<span class="keyword">></span>(*this) = other; <span class="comment">// Copy data.</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  other.<a class="code" href="structevmc__result.html#a8727ff83d372ab0067bcf6656d30b0ed">release</a> = <span class="keyword">nullptr</span>; <span class="comment">// Disable releasing of the rvalue object.</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classevmc_1_1result.html#a3b924b2e8ee361277753810ad65930c2"> 394</a></span>  <a class="code" href="structevmc__result.html">evmc_result</a> <a class="code" href="classevmc_1_1result.html#a3b924b2e8ee361277753810ad65930c2">release_raw</a>() noexcept</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">const</span> <span class="keyword">auto</span> out = <a class="code" href="structevmc__result.html">evmc_result</a>{*<span class="keyword">this</span>}; <span class="comment">// Copy data.</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  this->release = <span class="keyword">nullptr</span>; <span class="comment">// Disable releasing of this object.</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> };</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classevmc_1_1HostInterface.html"> 404</a></span> <span class="keyword">class </span><a class="code" href="classevmc_1_1HostInterface.html">HostInterface</a></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">virtual</span> ~<a class="code" href="classevmc_1_1HostInterface.html">HostInterface</a>() noexcept = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> account_exists(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">virtual</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> get_storage(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& key) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">virtual</span> <a class="code" href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a> set_storage(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& key,</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& value) noexcept = 0;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">virtual</span> <a class="code" href="structevmc_1_1bytes32.html">uint256be</a> get_balance(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> get_code_size(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">virtual</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> get_code_hash(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> copy_code(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordtype">size_t</span> code_offset,</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  uint8_t* buffer_data,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordtype">size_t</span> buffer_size) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> selfdestruct(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& beneficiary) noexcept = 0;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">virtual</span> <a class="code" href="classevmc_1_1result.html">result</a> call(<span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>& msg) noexcept = 0;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">virtual</span> <a class="code" href="structevmc__tx__context.html">evmc_tx_context</a> get_tx_context() <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keyword">virtual</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> get_block_hash(int64_t block_number) <span class="keyword">const</span> noexcept = 0;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> emit_log(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr,</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">const</span> uint8_t* data,</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> topics[],</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">size_t</span> num_topics) noexcept = 0;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> };</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html"> 459</a></span> <span class="keyword">class </span><a class="code" href="classevmc_1_1HostContext.html">HostContext</a> : <span class="keyword">public</span> <a class="code" href="classevmc_1_1HostInterface.html">HostInterface</a></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keyword">const</span> <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a>* host = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="structevmc__host__context.html">evmc_host_context</a>* context = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">mutable</span> <a class="code" href="structevmc__tx__context.html">evmc_tx_context</a> tx_context = {};</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="classevmc_1_1HostContext.html">HostContext</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a3c2eeff87915c8aa8652c5dc2a17f51a"> 472</a></span>  <a class="code" href="classevmc_1_1HostContext.html#a3c2eeff87915c8aa8652c5dc2a17f51a">HostContext</a>(<span class="keyword">const</span> <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a>& interface, <a class="code" href="structevmc__host__context.html">evmc_host_context</a>* ctx) noexcept</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  : host{&interface}, context{ctx}</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {}</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> </div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a08a0b1cc1f03aff697e9344865047e56"> 476</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classevmc_1_1HostContext.html#a08a0b1cc1f03aff697e9344865047e56">account_exists</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#ac3b71b9670621dd55e8bc047cd289e1a">account_exists</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#afb6bc0d98a19cf760ef9e886366e4108"> 481</a></span>  <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> <a class="code" href="classevmc_1_1HostContext.html#afb6bc0d98a19cf760ef9e886366e4108">get_storage</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>, <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& key) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#a1cfd339e26ceaba522aece2e1a06c6ef">get_storage</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>, &key);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#accce7c534c0f1e50f70d52a50d2ff659"> 486</a></span>  <a class="code" href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a> <a class="code" href="classevmc_1_1HostContext.html#accce7c534c0f1e50f70d52a50d2ff659">set_storage</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>,</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& key,</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a>& value) noexcept <span class="keyword">final</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#ad24670503f09df720cc008e361a91277">set_storage</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>, &key, &value);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a2e50fd490162237ac04f26cbd8c9e916"> 493</a></span>  <a class="code" href="structevmc_1_1bytes32.html">uint256be</a> <a class="code" href="classevmc_1_1HostContext.html#a2e50fd490162237ac04f26cbd8c9e916">get_balance</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#acfb80d38a19c3c5a267a68520dae8020">get_balance</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a278e6c530fce8397b1dc2de07ba0b26d"> 498</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classevmc_1_1HostContext.html#a278e6c530fce8397b1dc2de07ba0b26d">get_code_size</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#a35897228fa9270f59b7fca4bc373e860">get_code_size</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a06c2f1a5f29be3384b4e48c70198b563"> 503</a></span>  <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> <a class="code" href="classevmc_1_1HostContext.html#a06c2f1a5f29be3384b4e48c70198b563">get_code_hash</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#a058d2f129c4f4e840258127137801eaf">get_code_hash</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a62742a0675d8675dd8ee155b5def02dc"> 508</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classevmc_1_1HostContext.html#a62742a0675d8675dd8ee155b5def02dc">copy_code</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& <a class="code" href="structevmc_1_1address.html">address</a>,</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordtype">size_t</span> code_offset,</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  uint8_t* buffer_data,</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordtype">size_t</span> buffer_size) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#a21b53f1aea01f97eeb29ff5d3b5910ea">copy_code</a>(context, &<a class="code" href="structevmc_1_1address.html">address</a>, code_offset, buffer_data, buffer_size);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a150580ee3efd12661656c4e3ab350457"> 516</a></span>  <span class="keywordtype">void</span> <a class="code" href="classevmc_1_1HostContext.html#a150580ee3efd12661656c4e3ab350457">selfdestruct</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr, <span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& beneficiary) noexcept <span class="keyword">final</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  host-><a class="code" href="structevmc__host__interface.html#a189b040cb7db22778e81d4eb19e87849">selfdestruct</a>(context, &addr, &beneficiary);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#a47884bf60bd9f503300fae10bdc058f2"> 521</a></span>  <a class="code" href="classevmc_1_1result.html">result</a> <a class="code" href="classevmc_1_1HostContext.html#a47884bf60bd9f503300fae10bdc058f2">call</a>(<span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>& message) noexcept <span class="keyword">final</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1result.html">result</a>{host-><a class="code" href="structevmc__host__interface.html#a0acd6def9c08159acccfba9f9cbf9ca9">call</a>(context, &message)};</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#af51f231f8607e7a506a25d8b21874cd1"> 532</a></span>  <a class="code" href="structevmc__tx__context.html">evmc_tx_context</a> <a class="code" href="classevmc_1_1HostContext.html#af51f231f8607e7a506a25d8b21874cd1">get_tx_context</a>() const noexcept final</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span> (tx_context.<a class="code" href="structevmc__tx__context.html#a2391863eab970821d67a08341d9d3440">block_timestamp</a> == 0)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  tx_context = host-><a class="code" href="structevmc__host__interface.html#aecdea81d0643b6988e2dc6f57c936ffe">get_tx_context</a>(context);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">return</span> tx_context;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#ac7ce942550fee4d6e801af880484e271"> 539</a></span>  <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> <a class="code" href="classevmc_1_1HostContext.html#ac7ce942550fee4d6e801af880484e271">get_block_hash</a>(int64_t number) <span class="keyword">const</span> noexcept <span class="keyword">final</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">return</span> host-><a class="code" href="structevmc__host__interface.html#a9cdde67ef20f42f60d3b8949230e8852">get_block_hash</a>(context, number);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classevmc_1_1HostContext.html#acb1f7dabab3134e4ac80f9f6ada590a9"> 544</a></span>  <span class="keywordtype">void</span> <a class="code" href="classevmc_1_1HostContext.html#acb1f7dabab3134e4ac80f9f6ada590a9">emit_log</a>(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">address</a>& addr,</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keyword">const</span> uint8_t* data,</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">bytes32</a> topics[],</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordtype">size_t</span> topics_count) noexcept <span class="keyword">final</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  host-><a class="code" href="structevmc__host__interface.html#aaa3feda20b9b50381a359b2d4f591f0c">emit_log</a>(context, &addr, data, data_size, topics, topics_count);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> };</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classevmc_1_1Host.html"> 560</a></span> <span class="keyword">class </span><a class="code" href="classevmc_1_1Host.html">Host</a> : <span class="keyword">public</span> <a class="code" href="classevmc_1_1HostInterface.html">HostInterface</a></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a>& get_interface() noexcept;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classevmc_1_1Host.html#a88e3d8fc81ad0462ba15751e331bcdce"> 569</a></span>  <a class="code" href="structevmc__host__context.html">evmc_host_context</a>* <a class="code" href="classevmc_1_1Host.html#a88e3d8fc81ad0462ba15751e331bcdce">to_context</a>() noexcept { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structevmc__host__context.html">evmc_host_context</a>*<span class="keyword">></span>(<span class="keyword">this</span>); }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> DerivedClass = Host></div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da"> 576</a></span>  <span class="keyword">static</span> DerivedClass* <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">from_context</a>(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* context) noexcept</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Get pointer of the Host base class.</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">auto</span>* h = <span class="keyword">reinterpret_cast<</span><a class="code" href="classevmc_1_1Host.html">Host</a>*<span class="keyword">></span>(context);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">// Additional downcast, only possible if DerivedClass inherits from Host.</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>DerivedClass*<span class="keyword">></span>(h);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> };</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html"> 591</a></span> <span class="keyword">class </span><a class="code" href="classevmc_1_1VM.html">VM</a></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classevmc_1_1VM.html">VM</a>() noexcept = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#af5cd9f6bcaced56a086d515b4f5faf69"> 597</a></span>  <span class="keyword">explicit</span> <a class="code" href="classevmc_1_1VM.html#af5cd9f6bcaced56a086d515b4f5faf69">VM</a>(<a class="code" href="structevmc__vm.html">evmc_vm</a>* vm) noexcept : m_instance{vm} {}</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a6e8e28e22d24f5d6a0c6c3a8eb1346c3"> 600</a></span>  <a class="code" href="classevmc_1_1VM.html#a6e8e28e22d24f5d6a0c6c3a8eb1346c3">~VM</a>() noexcept</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">if</span> (m_instance != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  m_instance->destroy(m_instance);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="classevmc_1_1VM.html">VM</a>(<span class="keyword">const</span> <a class="code" href="classevmc_1_1VM.html">VM</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="classevmc_1_1VM.html">VM</a>& operator=(<span class="keyword">const</span> <a class="code" href="classevmc_1_1VM.html">VM</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> </div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a95954b9cd734a4d78a66e18457106c77"> 610</a></span>  <a class="code" href="classevmc_1_1VM.html#a95954b9cd734a4d78a66e18457106c77">VM</a>(<a class="code" href="classevmc_1_1VM.html">VM</a>&& other) noexcept : m_instance{other.m_instance} { other.m_instance = <span class="keyword">nullptr</span>; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a640e6149ac253146f9c1b5fb6eea7b1b"> 613</a></span>  <a class="code" href="classevmc_1_1VM.html">VM</a>& <a class="code" href="classevmc_1_1VM.html#a640e6149ac253146f9c1b5fb6eea7b1b">operator=</a>(<a class="code" href="classevmc_1_1VM.html">VM</a>&& other) noexcept</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  this->~<a class="code" href="classevmc_1_1VM.html">VM</a>();</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  m_instance = other.m_instance;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  other.m_instance = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keyword">inline</span> <a class="code" href="classevmc_1_1VM.html">VM</a>(<a class="code" href="structevmc__vm.html">evmc_vm</a>* vm,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  std::initializer_list<std::pair<const char*, const char*>> options) noexcept;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a24c7c914fff957be50c1e664357c50dd"> 627</a></span>  <span class="keyword">explicit</span> <span class="keyword">operator</span> bool() const noexcept { <span class="keywordflow">return</span> m_instance != <span class="keyword">nullptr</span>; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00630"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a8cee9f8a5a406b52f2bdd99d6e534c08"> 630</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classevmc_1_1VM.html#a8cee9f8a5a406b52f2bdd99d6e534c08">is_abi_compatible</a>() const noexcept { <span class="keywordflow">return</span> m_instance->abi_version == <a class="code" href="group__EVMC.html#gga06fc87d81c62e9abb8790b6e5713c55ba1db9144f8af4e62865f0c003c07a02bc">EVMC_ABI_VERSION</a>; }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#afe7c8d9a7bb8920f24f57660cc33c9ab"> 633</a></span>  <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classevmc_1_1VM.html#afe7c8d9a7bb8920f24f57660cc33c9ab">name</a>() const noexcept { <span class="keywordflow">return</span> m_instance->name; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> </div><div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a1ca3e1a9067fe6494f848babe0f57080"> 636</a></span>  <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classevmc_1_1VM.html#a1ca3e1a9067fe6494f848babe0f57080">version</a>() const noexcept { <span class="keywordflow">return</span> m_instance->version; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00639"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a8ee88b1b96be2a2f47c8ecd7893b8511"> 639</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classevmc_1_1VM.html#a8ee88b1b96be2a2f47c8ecd7893b8511">has_capability</a>(<a class="code" href="group__EVMC.html#ga44f9ecb88cf6422a0072936494fd6ac7">evmc_capabilities</a> capability) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> (<a class="code" href="example__vm_8c.html#a50f89a54757a1c5a5639b1a25dc36b24">get_capabilities</a>() & static_cast<evmc_capabilities_flagset>(capability)) != 0;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#ad08fc10da254a640703044ed7b92a814"> 645</a></span>  <a class="code" href="group__EVMC.html#ga714bc8ca946adc759403fe072bdd2aa0">evmc_capabilities_flagset</a> <a class="code" href="classevmc_1_1VM.html#ad08fc10da254a640703044ed7b92a814">get_capabilities</a>() const noexcept</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">return</span> m_instance->get_capabilities(m_instance);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a3e118af16cec04356833a6ce0e9e947f"> 651</a></span>  <a class="code" href="group__EVMC.html#ga28d9f527bda67277bccccc100e32260a">evmc_set_option_result</a> <a class="code" href="classevmc_1_1VM.html#a3e118af16cec04356833a6ce0e9e947f">set_option</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> name[], <span class="keyword">const</span> <span class="keywordtype">char</span> value[]) noexcept</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">return</span> <a class="code" href="group__helpers.html#gaee14c6797a91ae328e43b4f4916f6004">evmc_set_option</a>(m_instance, name, value);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#aca5b7630cdd84e7b37ade8a972536caa"> 657</a></span>  <a class="code" href="classevmc_1_1result.html">result</a> <a class="code" href="classevmc_1_1VM.html#aca5b7630cdd84e7b37ade8a972536caa">execute</a>(<span class="keyword">const</span> <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a>& host,</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <a class="code" href="structevmc__host__context.html">evmc_host_context</a>* ctx,</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a> rev,</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>& msg,</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keyword">const</span> uint8_t* code,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordtype">size_t</span> code_size) noexcept</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1result.html">result</a>{m_instance->execute(m_instance, &host, ctx, rev, &msg, code, code_size)};</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a3d3c358f94ce2f0099cb4258fc7567b9"> 668</a></span>  <a class="code" href="classevmc_1_1result.html">result</a> <a class="code" href="classevmc_1_1VM.html#a3d3c358f94ce2f0099cb4258fc7567b9">execute</a>(<a class="code" href="classevmc_1_1Host.html">Host</a>& host,</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a> rev,</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>& msg,</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keyword">const</span> uint8_t* code,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordtype">size_t</span> code_size) noexcept</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">return</span> <a class="code" href="example__vm_8c.html#a0cbe68a4a210c8227ceeb03789786b9c">execute</a>(<a class="code" href="classevmc_1_1Host.html#afb96540fea288f02d83f01e185a78374">Host::get_interface</a>(), host.to_context(), rev, msg, code, code_size);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00685"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a1ef134cf83d1f9f47d4ea05f905825d5"> 685</a></span>  <a class="code" href="classevmc_1_1result.html">result</a> <a class="code" href="classevmc_1_1VM.html#a1ef134cf83d1f9f47d4ea05f905825d5">execute</a>(<a class="code" href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a> rev,</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>& msg,</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keyword">const</span> uint8_t* code,</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordtype">size_t</span> code_size) noexcept</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1result.html">result</a>{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  m_instance->execute(m_instance, <span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>, rev, &msg, code, code_size)};</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> </div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a59fc2653af66eaa143d3ecfd97d32132"> 699</a></span>  <a class="code" href="structevmc__vm.html">evmc_vm</a>* <a class="code" href="classevmc_1_1VM.html#a59fc2653af66eaa143d3ecfd97d32132">get_raw_pointer</a>() const noexcept { <span class="keywordflow">return</span> m_instance; }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <a class="code" href="structevmc__vm.html">evmc_vm</a>* m_instance = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> };</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classevmc_1_1VM.html#a686778d05e3f8ca3a17b7134ab94f324"> 705</a></span> <span class="keyword">inline</span> VM::VM(<a class="code" href="structevmc__vm.html">evmc_vm</a>* vm,</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  std::initializer_list<std::pair<const char*, const char*>> options) noexcept</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  : m_instance{vm}</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="comment">// This constructor is implemented outside of the class definition to workaround a doxygen bug.</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& option : options)</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="example__vm_8c.html#af797672c8f7215833fb7958adae8bc87">set_option</a>(option.first, option.second);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> </div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> </div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="keyword">namespace </span>internal</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> account_exists(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr) noexcept</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->account_exists(*addr);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="keyword">inline</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a> get_storage(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h,</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keyword">const</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a>* key) noexcept</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_storage(*addr, *key);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> </div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="keyword">inline</span> <a class="code" href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a> set_storage(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr,</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keyword">const</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a>* key,</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keyword">const</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a>* value) noexcept</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->set_storage(*addr, *key, *value);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="keyword">inline</span> <a class="code" href="structevmc__bytes32.html">evmc_uint256be</a> get_balance(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr) noexcept</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_balance(*addr);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> </div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> get_code_size(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr) noexcept</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_code_size(*addr);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> }</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="keyword">inline</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a> get_code_hash(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr) noexcept</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_code_hash(*addr);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> }</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> copy_code(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h,</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr,</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordtype">size_t</span> code_offset,</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  uint8_t* buffer_data,</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordtype">size_t</span> buffer_size) noexcept</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->copy_code(*addr, code_offset, buffer_data, buffer_size);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> selfdestruct(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h,</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr,</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* beneficiary) noexcept</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->selfdestruct(*addr, *beneficiary);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="keyword">inline</span> <a class="code" href="structevmc__result.html">evmc_result</a> call(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, <span class="keyword">const</span> <a class="code" href="structevmc__message.html">evmc_message</a>* msg) noexcept</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->call(*msg).release_raw();</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="keyword">inline</span> <a class="code" href="structevmc__tx__context.html">evmc_tx_context</a> get_tx_context(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h) noexcept</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_tx_context();</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> }</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">inline</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a> get_block_hash(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h, int64_t block_number) noexcept</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">return</span> <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->get_block_hash(block_number);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> emit_log(<a class="code" href="structevmc__host__context.html">evmc_host_context</a>* h,</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">const</span> <a class="code" href="structevmc__address.html">evmc_address</a>* addr,</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keyword">const</span> uint8_t* data,</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keyword">const</span> <a class="code" href="structevmc__bytes32.html">evmc_bytes32</a> topics[],</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordtype">size_t</span> num_topics) noexcept</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">Host::from_context</a>(h)->emit_log(*addr, data, data_size, static_cast<const bytes32*>(topics),</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  num_topics);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> } <span class="comment">// namespace internal</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classevmc_1_1Host.html#afb96540fea288f02d83f01e185a78374"> 795</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a>& <a class="code" href="classevmc_1_1Host.html#afb96540fea288f02d83f01e185a78374">Host::get_interface</a>() noexcept</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keyword">static</span> constexpr <a class="code" href="structevmc__host__interface.html">evmc_host_interface</a> interface{</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  ::evmc::internal::account_exists, ::evmc::internal::get_storage,</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  ::evmc::internal::set_storage, ::evmc::internal::get_balance,</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  ::evmc::internal::get_code_size, ::evmc::internal::get_code_hash,</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  ::evmc::internal::copy_code, ::evmc::internal::selfdestruct,</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  ::evmc::internal::call, ::evmc::internal::get_tx_context,</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  ::evmc::internal::get_block_hash, ::evmc::internal::emit_log};</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">return</span> interface;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> }</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> } <span class="comment">// namespace evmc</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> </div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="keyword">struct </span>hash<evmc::<a class="code" href="structevmc_1_1address.html">address</a>></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  constexpr <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> <a class="code" href="structevmc_1_1address.html">evmc::address</a>& s) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  {</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keyword">using namespace </span>evmc;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">using namespace </span>fnv;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(fnv1a_by64(</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  fnv1a_by64(fnv1a_by64(fnv::offset_basis, <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__address.html#ab43a790ce0efb282b7ed7eafff8ed614">bytes</a>[0])), <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__address.html#ab43a790ce0efb282b7ed7eafff8ed614">bytes</a>[8])),</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <a class="code" href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">load32be</a>(&s.<a class="code" href="structevmc__address.html#ab43a790ce0efb282b7ed7eafff8ed614">bytes</a>[16])));</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> };</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="keyword">struct </span>hash<evmc::<a class="code" href="structevmc_1_1bytes32.html">bytes32</a>></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  constexpr <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> <a class="code" href="structevmc_1_1bytes32.html">evmc::bytes32</a>& s) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keyword">using namespace </span>evmc;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keyword">using namespace </span>fnv;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  fnv1a_by64(fnv1a_by64(fnv1a_by64(fnv1a_by64(fnv::offset_basis, <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__bytes32.html#a695eaf3c428daee54ce15c8252edc133">bytes</a>[0])),</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__bytes32.html#a695eaf3c428daee54ce15c8252edc133">bytes</a>[8])),</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__bytes32.html#a695eaf3c428daee54ce15c8252edc133">bytes</a>[16])),</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="code" href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">load64be</a>(&s.<a class="code" href="structevmc__bytes32.html#a695eaf3c428daee54ce15c8252edc133">bytes</a>[24])));</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> };</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> } <span class="comment">// namespace std</span></div><div class="ttc" id="example__vm_8c_html_af797672c8f7215833fb7958adae8bc87"><div class="ttname"><a href="example__vm_8c.html#af797672c8f7215833fb7958adae8bc87">set_option</a></div><div class="ttdeci">static enum evmc_set_option_result set_option(struct evmc_vm *instance, const char *name, const char *value)</div><div class="ttdoc">Example VM options. </div><div class="ttdef"><b>Definition:</b> <a href="example__vm_8c_source.html#l00046">example_vm.c:46</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_aeb05e759733ffba8140aef6b7a8dd550"><div class="ttname"><a href="classevmc_1_1result.html#aeb05e759733ffba8140aef6b7a8dd550">evmc::result::result</a></div><div class="ttdeci">result(result &&other) noexcept</div><div class="ttdoc">Move constructor. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00367">evmc.hpp:367</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_ad24670503f09df720cc008e361a91277"><div class="ttname"><a href="structevmc__host__interface.html#ad24670503f09df720cc008e361a91277">evmc_host_interface::set_storage</a></div><div class="ttdeci">evmc_set_storage_fn set_storage</div><div class="ttdoc">Set storage callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00630">evmc.h:630</a></div></div>
|
|
<div class="ttc" id="group__helpers_html_ga1eb1facc9b5ddacda368ffdeb89d1a20"><div class="ttname"><a href="group__helpers.html#ga1eb1facc9b5ddacda368ffdeb89d1a20">evmc_make_result</a></div><div class="ttdeci">static struct evmc_result evmc_make_result(enum evmc_status_code status_code, int64_t gas_left, const uint8_t *output_data, size_t output_size)</div><div class="ttdoc">Creates the result from the provided arguments. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.html#l00121">helpers.h:121</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a3d3c358f94ce2f0099cb4258fc7567b9"><div class="ttname"><a href="classevmc_1_1VM.html#a3d3c358f94ce2f0099cb4258fc7567b9">evmc::VM::execute</a></div><div class="ttdeci">result execute(Host &host, evmc_revision rev, const evmc_message &msg, const uint8_t *code, size_t code_size) noexcept</div><div class="ttdoc">Convenient variant of the VM::execute() that takes reference to evmc::Host class. ...</div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00668">evmc.hpp:668</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a1d1fb7e5ab2dd58ca3e15947bc54d15a"><div class="ttname"><a href="namespaceevmc.html#a1d1fb7e5ab2dd58ca3e15947bc54d15a">evmc::bytes</a></div><div class="ttdeci">std::basic_string< uint8_t > bytes</div><div class="ttdoc">The string of bytes. </div><div class="ttdef"><b>Definition:</b> <a href="mocked__host_8hpp_source.html#l00015">mocked_host.hpp:15</a></div></div>
|
|
<div class="ttc" id="example__vm_8c_html_a50f89a54757a1c5a5639b1a25dc36b24"><div class="ttname"><a href="example__vm_8c.html#a50f89a54757a1c5a5639b1a25dc36b24">get_capabilities</a></div><div class="ttdeci">static evmc_capabilities_flagset get_capabilities(struct evmc_vm *vm)</div><div class="ttdoc">The example implementation of the evmc_vm::get_capabilities() method. </div><div class="ttdef"><b>Definition:</b> <a href="example__vm_8c_source.html#l00036">example_vm.c:36</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a189b040cb7db22778e81d4eb19e87849"><div class="ttname"><a href="structevmc__host__interface.html#a189b040cb7db22778e81d4eb19e87849">evmc_host_interface::selfdestruct</a></div><div class="ttdeci">evmc_selfdestruct_fn selfdestruct</div><div class="ttdoc">Selfdestruct callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00645">evmc.h:645</a></div></div>
|
|
<div class="ttc" id="evmc_8hpp_html_a5e866562fb1d26d46ec0bb750e762237"><div class="ttname"><a href="evmc_8hpp.html#a5e866562fb1d26d46ec0bb750e762237">evmc::fnv::offset_basis</a></div><div class="ttdeci">constexpr auto offset_basis</div><div class="ttdoc">The 64-bit FNV offset basis. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00134">evmc.hpp:134</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_aca5b7630cdd84e7b37ade8a972536caa"><div class="ttname"><a href="classevmc_1_1VM.html#aca5b7630cdd84e7b37ade8a972536caa">evmc::VM::execute</a></div><div class="ttdeci">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</div><div class="ttdoc">Executes code in the VM instance. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00657">evmc.hpp:657</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1Host_html_afc5947c7b6170f7a0ed01dbffecfc9da"><div class="ttname"><a href="classevmc_1_1Host.html#afc5947c7b6170f7a0ed01dbffecfc9da">evmc::Host::from_context</a></div><div class="ttdeci">static DerivedClass * from_context(evmc_host_context *context) noexcept</div><div class="ttdoc">Converts the opaque host context pointer back to the original Host object. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00576">evmc.hpp:576</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_ga4c0be97f333c050ff45321fcaa34d920"><div class="ttname"><a href="group__EVMC.html#ga4c0be97f333c050ff45321fcaa34d920">evmc_status_code</a></div><div class="ttdeci">evmc_status_code</div><div class="ttdoc">The execution status code. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00211">evmc.h:211</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_ac0dc436fe57925210dcd0481a79e9784"><div class="ttname"><a href="namespaceevmc.html#ac0dc436fe57925210dcd0481a79e9784">evmc::operator<=</a></div><div class="ttdeci">constexpr bool operator<=(const address &a, const address &b) noexcept</div><div class="ttdoc">The "less than or equal to" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00176">evmc.hpp:176</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a1ca3e1a9067fe6494f848babe0f57080"><div class="ttname"><a href="classevmc_1_1VM.html#a1ca3e1a9067fe6494f848babe0f57080">evmc::VM::version</a></div><div class="ttdeci">char const * version() const noexcept</div><div class="ttdoc">The version of the EVMC VM implementation, e.g. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00636">evmc.hpp:636</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_gae012fd6b8e5c23806b507c2d3e9fb1aa"><div class="ttname"><a href="group__EVMC.html#gae012fd6b8e5c23806b507c2d3e9fb1aa">evmc_storage_status</a></div><div class="ttdeci">evmc_storage_status</div><div class="ttdoc">The effect of an attempt to modify a contract storage item. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00459">evmc.h:459</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a59fc2653af66eaa143d3ecfd97d32132"><div class="ttname"><a href="classevmc_1_1VM.html#a59fc2653af66eaa143d3ecfd97d32132">evmc::VM::get_raw_pointer</a></div><div class="ttdeci">evmc_vm * get_raw_pointer() const noexcept</div><div class="ttdoc">Returns the pointer to C EVMC struct representing the VM. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00699">evmc.hpp:699</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_a3b924b2e8ee361277753810ad65930c2"><div class="ttname"><a href="classevmc_1_1result.html#a3b924b2e8ee361277753810ad65930c2">evmc::result::release_raw</a></div><div class="ttdeci">evmc_result release_raw() noexcept</div><div class="ttdoc">Releases the ownership and returns the raw copy of evmc_result. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00394">evmc.hpp:394</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html"><div class="ttname"><a href="classevmc_1_1result.html">evmc::result</a></div><div class="ttdoc">The EVM code execution result. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00331">evmc.hpp:331</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_aee479c5093974fed2ec14f33bafcfd32"><div class="ttname"><a href="classevmc_1_1result.html#aee479c5093974fed2ec14f33bafcfd32">evmc::result::~result</a></div><div class="ttdeci">~result() noexcept</div><div class="ttdoc">Destructor responsible for automatically releasing attached resources. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00360">evmc.hpp:360</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1bytes32_html"><div class="ttname"><a href="structevmc_1_1bytes32.html">evmc::bytes32</a></div><div class="ttdoc">The fixed size array of 32 bytes for storing 256-bit EVM values. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00062">evmc.hpp:62</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_a759c4aaa4a1c002f5a8be09ccb0b6a1c"><div class="ttname"><a href="structevmc__result.html#a759c4aaa4a1c002f5a8be09ccb0b6a1c">evmc_result::status_code</a></div><div class="ttdeci">enum evmc_status_code status_code</div><div class="ttdoc">The execution status code. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00343">evmc.h:343</a></div></div>
|
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00809">evmc.hpp:809</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a47884bf60bd9f503300fae10bdc058f2"><div class="ttname"><a href="classevmc_1_1HostContext.html#a47884bf60bd9f503300fae10bdc058f2">evmc::HostContext::call</a></div><div class="ttdeci">result call(const evmc_message &message) noexcept final</div><div class="ttdoc">Call callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00521">evmc.hpp:521</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a1ef134cf83d1f9f47d4ea05f905825d5"><div class="ttname"><a href="classevmc_1_1VM.html#a1ef134cf83d1f9f47d4ea05f905825d5">evmc::VM::execute</a></div><div class="ttdeci">result execute(evmc_revision rev, const evmc_message &msg, const uint8_t *code, size_t code_size) noexcept</div><div class="ttdoc">Executes code without the Host context. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00685">evmc.hpp:685</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a640e6149ac253146f9c1b5fb6eea7b1b"><div class="ttname"><a href="classevmc_1_1VM.html#a640e6149ac253146f9c1b5fb6eea7b1b">evmc::VM::operator=</a></div><div class="ttdeci">VM & operator=(VM &&other) noexcept</div><div class="ttdoc">Move assignment operator. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00613">evmc.hpp:613</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a95954b9cd734a4d78a66e18457106c77"><div class="ttname"><a href="classevmc_1_1VM.html#a95954b9cd734a4d78a66e18457106c77">evmc::VM::VM</a></div><div class="ttdeci">VM(VM &&other) noexcept</div><div class="ttdoc">Move constructor. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00610">evmc.hpp:610</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_afe7c8d9a7bb8920f24f57660cc33c9ab"><div class="ttname"><a href="classevmc_1_1VM.html#afe7c8d9a7bb8920f24f57660cc33c9ab">evmc::VM::name</a></div><div class="ttdeci">char const * name() const noexcept</div><div class="ttdoc">The name of the EVMC VM implementation. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00633">evmc.hpp:633</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_ad08fc10da254a640703044ed7b92a814"><div class="ttname"><a href="classevmc_1_1VM.html#ad08fc10da254a640703044ed7b92a814">evmc::VM::get_capabilities</a></div><div class="ttdeci">evmc_capabilities_flagset get_capabilities() const noexcept</div><div class="ttdoc">The example implementation of the evmc_vm::get_capabilities() method. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00645">evmc.hpp:645</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_add9ddebaace1c5d35784cfc6966d8aa8"><div class="ttname"><a href="classevmc_1_1result.html#add9ddebaace1c5d35784cfc6966d8aa8">evmc::result::result</a></div><div class="ttdeci">result(evmc_status_code _status_code, int64_t _gas_left, const uint8_t *_output_data, size_t _output_size) noexcept</div><div class="ttdoc">Creates the result from the provided arguments. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00349">evmc.hpp:349</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_afc53d0e831bda94fbf31a64d224c8d24"><div class="ttname"><a href="namespaceevmc.html#afc53d0e831bda94fbf31a64d224c8d24">evmc::is_zero</a></div><div class="ttdeci">constexpr bool is_zero(const address &a) noexcept</div><div class="ttdoc">Checks if the given address is the zero address. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00233">evmc.hpp:233</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a6e8e28e22d24f5d6a0c6c3a8eb1346c3"><div class="ttname"><a href="classevmc_1_1VM.html#a6e8e28e22d24f5d6a0c6c3a8eb1346c3">evmc::VM::~VM</a></div><div class="ttdeci">~VM() noexcept</div><div class="ttdoc">Destructor responsible for automatically destroying the VM instance. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00600">evmc.hpp:600</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1address_html_aa58c7cf24b9fd2419a287e0329d75af2"><div class="ttname"><a href="structevmc_1_1address.html#aa58c7cf24b9fd2419a287e0329d75af2">evmc::address::address</a></div><div class="ttdeci">constexpr address(uint64_t v) noexcept</div><div class="ttdoc">Converting constructor from unsigned integer value. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00032">evmc.hpp:32</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1bytes32_html_a6403d03e29edb4f87fb272cdbde1cdc6"><div class="ttname"><a href="structevmc_1_1bytes32.html#a6403d03e29edb4f87fb272cdbde1cdc6">evmc::bytes32::bytes32</a></div><div class="ttdeci">constexpr bytes32(evmc_bytes32 init={}) noexcept</div><div class="ttdoc">Default and converting constructor. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00067">evmc.hpp:67</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_a4753030d0491d94c2b64b15f025d5055"><div class="ttname"><a href="classevmc_1_1result.html#a4753030d0491d94c2b64b15f025d5055">evmc::result::result</a></div><div class="ttdeci">result(evmc_result const &res) noexcept</div><div class="ttdoc">Converting constructor from raw evmc_result. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00357">evmc.hpp:357</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_a8727ff83d372ab0067bcf6656d30b0ed"><div class="ttname"><a href="structevmc__result.html#a8727ff83d372ab0067bcf6656d30b0ed">evmc_result::release</a></div><div class="ttdeci">evmc_release_result_fn release</div><div class="ttdoc">The method releasing all resources associated with the result object. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00392">evmc.h:392</a></div></div>
|
|
<div class="ttc" id="evmc_8h_html"><div class="ttname"><a href="evmc_8h.html">evmc.h</a></div><div class="ttdoc">EVMC: Ethereum Client-VM Connector API. </div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a08a0b1cc1f03aff697e9344865047e56"><div class="ttname"><a href="classevmc_1_1HostContext.html#a08a0b1cc1f03aff697e9344865047e56">evmc::HostContext::account_exists</a></div><div class="ttdeci">bool account_exists(const address &address) const noexcept final</div><div class="ttdoc">Check account existence callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00476">evmc.hpp:476</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a8cee9f8a5a406b52f2bdd99d6e534c08"><div class="ttname"><a href="classevmc_1_1VM.html#a8cee9f8a5a406b52f2bdd99d6e534c08">evmc::VM::is_abi_compatible</a></div><div class="ttdeci">bool is_abi_compatible() const noexcept</div><div class="ttdoc">Checks whenever the VM instance is ABI compatible with the current EVMC API. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00630">evmc.hpp:630</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_acb1f7dabab3134e4ac80f9f6ada590a9"><div class="ttname"><a href="classevmc_1_1HostContext.html#acb1f7dabab3134e4ac80f9f6ada590a9">evmc::HostContext::emit_log</a></div><div class="ttdeci">void emit_log(const address &addr, const uint8_t *data, size_t data_size, const bytes32 topics[], size_t topics_count) noexcept final</div><div class="ttdoc">Emit log callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00544">evmc.hpp:544</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_af51f231f8607e7a506a25d8b21874cd1"><div class="ttname"><a href="classevmc_1_1HostContext.html#af51f231f8607e7a506a25d8b21874cd1">evmc::HostContext::get_tx_context</a></div><div class="ttdeci">evmc_tx_context get_tx_context() const noexcept final</div><div class="ttdoc">Get transaction context callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00532">evmc.hpp:532</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a44333e715985f766f2493b20ed665fbd"><div class="ttname"><a href="namespaceevmc.html#a44333e715985f766f2493b20ed665fbd">evmc::operator></a></div><div class="ttdeci">constexpr bool operator>(const address &a, const address &b) noexcept</div><div class="ttdoc">The "greater than" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00170">evmc.hpp:170</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_aa1739e6e990dbd1fd3d30b249b1d0d58"><div class="ttname"><a href="namespaceevmc.html#aa1739e6e990dbd1fd3d30b249b1d0d58">evmc::operator>=</a></div><div class="ttdeci">constexpr bool operator>=(const address &a, const address &b) noexcept</div><div class="ttdoc">The "greater than or equal to" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00182">evmc.hpp:182</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a2e48df8e1f6ed52ac2925683826e3956"><div class="ttname"><a href="namespaceevmc.html#a2e48df8e1f6ed52ac2925683826e3956">evmc::load32be</a></div><div class="ttdeci">constexpr uint32_t load32be(const uint8_t *bytes) noexcept</div><div class="ttdoc">Loads 32 bits / 4 bytes of data from the given bytes array in big-endian order. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00125">evmc.hpp:125</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_af5cd9f6bcaced56a086d515b4f5faf69"><div class="ttname"><a href="classevmc_1_1VM.html#af5cd9f6bcaced56a086d515b4f5faf69">evmc::VM::VM</a></div><div class="ttdeci">VM(evmc_vm *vm) noexcept</div><div class="ttdoc">Converting constructor from evmc_vm. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00597">evmc.hpp:597</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a9843b267dc279832b0ff9578b7dacdb7"><div class="ttname"><a href="namespaceevmc.html#a9843b267dc279832b0ff9578b7dacdb7">evmc::make_result</a></div><div class="ttdeci">constexpr auto make_result</div><div class="ttdoc">Alias for evmc_make_result(). </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00325">evmc.hpp:325</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_accce7c534c0f1e50f70d52a50d2ff659"><div class="ttname"><a href="classevmc_1_1HostContext.html#accce7c534c0f1e50f70d52a50d2ff659">evmc::HostContext::set_storage</a></div><div class="ttdeci">evmc_storage_status set_storage(const address &address, const bytes32 &key, const bytes32 &value) noexcept final</div><div class="ttdoc">Set storage callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00486">evmc.hpp:486</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a21b53f1aea01f97eeb29ff5d3b5910ea"><div class="ttname"><a href="structevmc__host__interface.html#a21b53f1aea01f97eeb29ff5d3b5910ea">evmc_host_interface::copy_code</a></div><div class="ttdeci">evmc_copy_code_fn copy_code</div><div class="ttdoc">Copy code callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00642">evmc.h:642</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a278e6c530fce8397b1dc2de07ba0b26d"><div class="ttname"><a href="classevmc_1_1HostContext.html#a278e6c530fce8397b1dc2de07ba0b26d">evmc::HostContext::get_code_size</a></div><div class="ttdeci">size_t get_code_size(const address &address) const noexcept final</div><div class="ttdoc">Get code size callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00498">evmc.hpp:498</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a9cdde67ef20f42f60d3b8949230e8852"><div class="ttname"><a href="structevmc__host__interface.html#a9cdde67ef20f42f60d3b8949230e8852">evmc_host_interface::get_block_hash</a></div><div class="ttdeci">evmc_get_block_hash_fn get_block_hash</div><div class="ttdoc">Get block hash callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00654">evmc.h:654</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a3e118af16cec04356833a6ce0e9e947f"><div class="ttname"><a href="classevmc_1_1VM.html#a3e118af16cec04356833a6ce0e9e947f">evmc::VM::set_option</a></div><div class="ttdeci">evmc_set_option_result set_option(const char name[], const char value[]) noexcept</div><div class="ttdoc">Sets the option for the VM, if the feature is supported by the VM. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00651">evmc.hpp:651</a></div></div>
|
|
<div class="ttc" id="structevmc__bytes32_html_a695eaf3c428daee54ce15c8252edc133"><div class="ttname"><a href="structevmc__bytes32.html#a695eaf3c428daee54ce15c8252edc133">evmc_bytes32::bytes</a></div><div class="ttdeci">uint8_t bytes[32]</div><div class="ttdoc">The 32 bytes. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00059">evmc.h:59</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_a93bb7419aff492cdef754421c6d74e26"><div class="ttname"><a href="structevmc__result.html#a93bb7419aff492cdef754421c6d74e26">evmc_result::output_size</a></div><div class="ttdeci">size_t output_size</div><div class="ttdoc">The size of the output data. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00371">evmc.h:371</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_af8478c93dbcc3cb2876037c5a5afd4c0"><div class="ttname"><a href="structevmc__result.html#af8478c93dbcc3cb2876037c5a5afd4c0">evmc_result::gas_left</a></div><div class="ttdeci">int64_t gas_left</div><div class="ttdoc">The amount of gas left after the execution. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00351">evmc.h:351</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1Host_html_afb96540fea288f02d83f01e185a78374"><div class="ttname"><a href="classevmc_1_1Host.html#afb96540fea288f02d83f01e185a78374">evmc::Host::get_interface</a></div><div class="ttdeci">static const evmc_host_interface & get_interface() noexcept</div><div class="ttdoc">Provides access to the global host interface. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00795">evmc.hpp:795</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html"><div class="ttname"><a href="classevmc_1_1VM.html">evmc::VM</a></div><div class="ttdoc">The VM instance. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00591">evmc.hpp:591</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_gga06fc87d81c62e9abb8790b6e5713c55ba1db9144f8af4e62865f0c003c07a02bc"><div class="ttname"><a href="group__EVMC.html#gga06fc87d81c62e9abb8790b6e5713c55ba1db9144f8af4e62865f0c003c07a02bc">EVMC_ABI_VERSION</a></div><div class="ttdoc">The EVMC ABI version number of the interface declared in this file. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00047">evmc.h:47</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_ae7f37ff7c9cfa3b58af2c89f4d610522"><div class="ttname"><a href="structevmc__result.html#ae7f37ff7c9cfa3b58af2c89f4d610522">evmc_result::create_address</a></div><div class="ttdeci">evmc_address create_address</div><div class="ttdoc">The address of the contract created by create instructions. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00403">evmc.h:403</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html"><div class="ttname"><a href="structevmc__host__interface.html">evmc_host_interface</a></div><div class="ttdoc">The Host interface. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00621">evmc.h:621</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a2e50fd490162237ac04f26cbd8c9e916"><div class="ttname"><a href="classevmc_1_1HostContext.html#a2e50fd490162237ac04f26cbd8c9e916">evmc::HostContext::get_balance</a></div><div class="ttdeci">uint256be get_balance(const address &address) const noexcept final</div><div class="ttdoc">Get balance callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00493">evmc.hpp:493</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a35897228fa9270f59b7fca4bc373e860"><div class="ttname"><a href="structevmc__host__interface.html#a35897228fa9270f59b7fca4bc373e860">evmc_host_interface::get_code_size</a></div><div class="ttdeci">evmc_get_code_size_fn get_code_size</div><div class="ttdoc">Get code size callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00636">evmc.h:636</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a1cfd339e26ceaba522aece2e1a06c6ef"><div class="ttname"><a href="structevmc__host__interface.html#a1cfd339e26ceaba522aece2e1a06c6ef">evmc_host_interface::get_storage</a></div><div class="ttdeci">evmc_get_storage_fn get_storage</div><div class="ttdoc">Get storage callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00627">evmc.h:627</a></div></div>
|
|
<div class="ttc" id="structevmc__vm_html"><div class="ttname"><a href="structevmc__vm.html">evmc_vm</a></div><div class="ttdoc">The VM instance. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00855">evmc.h:855</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_ga714bc8ca946adc759403fe072bdd2aa0"><div class="ttname"><a href="group__EVMC.html#ga714bc8ca946adc759403fe072bdd2aa0">evmc_capabilities_flagset</a></div><div class="ttdeci">uint32_t evmc_capabilities_flagset</div><div class="ttdoc">Alias for unsigned integer representing a set of bit flags of EVMC capabilities. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00836">evmc.h:836</a></div></div>
|
|
<div class="ttc" id="structevmc__host__context_html"><div class="ttname"><a href="structevmc__host__context.html">evmc_host_context</a></div><div class="ttdoc">The opaque data type representing the Host execution context. </div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a62742a0675d8675dd8ee155b5def02dc"><div class="ttname"><a href="classevmc_1_1HostContext.html#a62742a0675d8675dd8ee155b5def02dc">evmc::HostContext::copy_code</a></div><div class="ttdeci">size_t copy_code(const address &address, size_t code_offset, uint8_t *buffer_data, size_t buffer_size) const noexcept final</div><div class="ttdoc">Copy code callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00508">evmc.hpp:508</a></div></div>
|
|
<div class="ttc" id="example__vm_8c_html_a0cbe68a4a210c8227ceeb03789786b9c"><div class="ttname"><a href="example__vm_8c.html#a0cbe68a4a210c8227ceeb03789786b9c">execute</a></div><div class="ttdeci">static struct evmc_result execute(struct evmc_vm *instance, const struct evmc_host_interface *host, struct evmc_host_context *context, enum evmc_revision rev, const struct evmc_message *msg, const uint8_t *code, size_t code_size)</div><div class="ttdoc">The example implementation of the evmc_vm::execute() method. </div><div class="ttdef"><b>Definition:</b> <a href="example__vm_8c_source.html#l00077">example_vm.c:77</a></div></div>
|
|
<div class="ttc" id="group__helpers_html_gaee14c6797a91ae328e43b4f4916f6004"><div class="ttname"><a href="group__helpers.html#gaee14c6797a91ae328e43b4f4916f6004">evmc_set_option</a></div><div class="ttdeci">static enum evmc_set_option_result evmc_set_option(struct evmc_vm *vm, char const *name, char const *value)</div><div class="ttdoc">Sets the option for the VM, if the feature is supported by the VM. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.html#l00073">helpers.h:73</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_aecdea81d0643b6988e2dc6f57c936ffe"><div class="ttname"><a href="structevmc__host__interface.html#aecdea81d0643b6988e2dc6f57c936ffe">evmc_host_interface::get_tx_context</a></div><div class="ttdeci">evmc_get_tx_context_fn get_tx_context</div><div class="ttdoc">Get transaction context callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00651">evmc.h:651</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_acef96efd7f9847cc089834dff73054bd"><div class="ttname"><a href="namespaceevmc.html#acef96efd7f9847cc089834dff73054bd">evmc::operator!=</a></div><div class="ttdeci">constexpr bool operator!=(const address &a, const address &b) noexcept</div><div class="ttdoc">The "not equal to" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00154">evmc.hpp:154</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1Host_html_a88e3d8fc81ad0462ba15751e331bcdce"><div class="ttname"><a href="classevmc_1_1Host.html#a88e3d8fc81ad0462ba15751e331bcdce">evmc::Host::to_context</a></div><div class="ttdeci">evmc_host_context * to_context() noexcept</div><div class="ttdoc">Converts the Host object to the opaque host context pointer. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00569">evmc.hpp:569</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1result_html_a2a68d0dc6232c3ec44f07ad50bc83b66"><div class="ttname"><a href="classevmc_1_1result.html#a2a68d0dc6232c3ec44f07ad50bc83b66">evmc::result::operator=</a></div><div class="ttdeci">result & operator=(result &&other) noexcept</div><div class="ttdoc">Move assignment operator. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00378">evmc.hpp:378</a></div></div>
|
|
<div class="ttc" id="structevmc__message_html"><div class="ttname"><a href="structevmc__message.html">evmc_message</a></div><div class="ttdoc">The message describing an EVM call, including a zero-depth calls from a transaction origin...</div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00095">evmc.h:95</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html"><div class="ttname"><a href="classevmc_1_1HostContext.html">evmc::HostContext</a></div><div class="ttdoc">Wrapper around EVMC host context / host interface. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00459">evmc.hpp:459</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_afb6bc0d98a19cf760ef9e886366e4108"><div class="ttname"><a href="classevmc_1_1HostContext.html#afb6bc0d98a19cf760ef9e886366e4108">evmc::HostContext::get_storage</a></div><div class="ttdeci">bytes32 get_storage(const address &address, const bytes32 &key) const noexcept final</div><div class="ttdoc">Get storage callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00481">evmc.hpp:481</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a3c2eeff87915c8aa8652c5dc2a17f51a"><div class="ttname"><a href="classevmc_1_1HostContext.html#a3c2eeff87915c8aa8652c5dc2a17f51a">evmc::HostContext::HostContext</a></div><div class="ttdeci">HostContext(const evmc_host_interface &interface, evmc_host_context *ctx) noexcept</div><div class="ttdoc">Constructor from the EVMC Host primitives. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00472">evmc.hpp:472</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_ga28d9f527bda67277bccccc100e32260a"><div class="ttname"><a href="group__EVMC.html#ga28d9f527bda67277bccccc100e32260a">evmc_set_option_result</a></div><div class="ttdeci">evmc_set_option_result</div><div class="ttdoc">Possible outcomes of evmc_set_option. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00674">evmc.h:674</a></div></div>
|
|
<div class="ttc" id="evmc_8hpp_html_ae84e3cac71791be23e06c9a113f373d4"><div class="ttname"><a href="evmc_8hpp.html#ae84e3cac71791be23e06c9a113f373d4">evmc::fnv::prime</a></div><div class="ttdeci">constexpr auto prime</div><div class="ttdoc">The 64-bit FNV prime number. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00133">evmc.hpp:133</a></div></div>
|
|
<div class="ttc" id="structevmc__address_html"><div class="ttname"><a href="structevmc__address.html">evmc_address</a></div><div class="ttdoc">Big-endian 160-bit hash suitable for keeping an Ethereum address. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00068">evmc.h:68</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_aaa3feda20b9b50381a359b2d4f591f0c"><div class="ttname"><a href="structevmc__host__interface.html#aaa3feda20b9b50381a359b2d4f591f0c">evmc_host_interface::emit_log</a></div><div class="ttdeci">evmc_emit_log_fn emit_log</div><div class="ttdoc">Emit log callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00657">evmc.h:657</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostInterface_html"><div class="ttname"><a href="classevmc_1_1HostInterface.html">evmc::HostInterface</a></div><div class="ttdoc">The EVMC Host interface. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00404">evmc.hpp:404</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_acfb80d38a19c3c5a267a68520dae8020"><div class="ttname"><a href="structevmc__host__interface.html#acfb80d38a19c3c5a267a68520dae8020">evmc_host_interface::get_balance</a></div><div class="ttdeci">evmc_get_balance_fn get_balance</div><div class="ttdoc">Get balance callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00633">evmc.h:633</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a0acd6def9c08159acccfba9f9cbf9ca9"><div class="ttname"><a href="structevmc__host__interface.html#a0acd6def9c08159acccfba9f9cbf9ca9">evmc_host_interface::call</a></div><div class="ttdeci">evmc_call_fn call</div><div class="ttdoc">Call callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00648">evmc.h:648</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1bytes32_html_acf31b9ad2a8140d04eddc560fccf005b"><div class="ttname"><a href="structevmc_1_1bytes32.html#acf31b9ad2a8140d04eddc560fccf005b">evmc::bytes32::bytes32</a></div><div class="ttdeci">constexpr bytes32(uint64_t v) noexcept</div><div class="ttdoc">Converting constructor from unsigned integer value. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00073">evmc.hpp:73</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_ac7ce942550fee4d6e801af880484e271"><div class="ttname"><a href="classevmc_1_1HostContext.html#ac7ce942550fee4d6e801af880484e271">evmc::HostContext::get_block_hash</a></div><div class="ttdeci">bytes32 get_block_hash(int64_t number) const noexcept final</div><div class="ttdoc">Get block hash callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00539">evmc.hpp:539</a></div></div>
|
|
<div class="ttc" id="structevmc__address_html_ab43a790ce0efb282b7ed7eafff8ed614"><div class="ttname"><a href="structevmc__address.html#ab43a790ce0efb282b7ed7eafff8ed614">evmc_address::bytes</a></div><div class="ttdeci">uint8_t bytes[20]</div><div class="ttdoc">The 20 bytes of the hash. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00071">evmc.h:71</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html"><div class="ttname"><a href="structevmc__result.html">evmc_result</a></div><div class="ttdoc">The EVM code execution result. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00340">evmc.h:340</a></div></div>
|
|
<div class="ttc" id="evmc_8hpp_html_abd837c95e6df5b1f485f429e3b75050f"><div class="ttname"><a href="evmc_8hpp.html#abd837c95e6df5b1f485f429e3b75050f">evmc::fnv::fnv1a_by64</a></div><div class="ttdeci">constexpr uint64_t fnv1a_by64(uint64_t h, uint64_t x) noexcept</div><div class="ttdoc">The hashing transformation for 64-bit inputs based on the FNV-1a formula. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00137">evmc.hpp:137</a></div></div>
|
|
<div class="ttc" id="structevmc__tx__context_html_a2391863eab970821d67a08341d9d3440"><div class="ttname"><a href="structevmc__tx__context.html#a2391863eab970821d67a08341d9d3440">evmc_tx_context::block_timestamp</a></div><div class="ttdeci">int64_t block_timestamp</div><div class="ttdoc">The block timestamp. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00153">evmc.h:153</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1address_html"><div class="ttname"><a href="structevmc_1_1address.html">evmc::address</a></div><div class="ttdoc">The big-endian 160-bit hash suitable for keeping an Ethereum address. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00021">evmc.hpp:21</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1Host_html"><div class="ttname"><a href="classevmc_1_1Host.html">evmc::Host</a></div><div class="ttdoc">Abstract class to be used by Host implementations. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00560">evmc.hpp:560</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a150580ee3efd12661656c4e3ab350457"><div class="ttname"><a href="classevmc_1_1HostContext.html#a150580ee3efd12661656c4e3ab350457">evmc::HostContext::selfdestruct</a></div><div class="ttdeci">void selfdestruct(const address &addr, const address &beneficiary) noexcept final</div><div class="ttdoc">Selfdestruct callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00516">evmc.hpp:516</a></div></div>
|
|
<div class="ttc" id="helpers_8h_html"><div class="ttname"><a href="helpers_8h.html">helpers.h</a></div><div class="ttdoc">EVMC Helpers. </div></div>
|
|
<div class="ttc" id="namespaceevmc_html"><div class="ttname"><a href="namespaceevmc.html">evmc</a></div><div class="ttdoc">EVMC C++ API - wrappers and bindings for C++. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00016">evmc.hpp:16</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_ac3b71b9670621dd55e8bc047cd289e1a"><div class="ttname"><a href="structevmc__host__interface.html#ac3b71b9670621dd55e8bc047cd289e1a">evmc_host_interface::account_exists</a></div><div class="ttdeci">evmc_account_exists_fn account_exists</div><div class="ttdoc">Check account existence callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00624">evmc.h:624</a></div></div>
|
|
<div class="ttc" id="structevmc__bytes32_html"><div class="ttname"><a href="structevmc__bytes32.html">evmc_bytes32</a></div><div class="ttdoc">The fixed size array of 32 bytes. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00056">evmc.h:56</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1HostContext_html_a06c2f1a5f29be3384b4e48c70198b563"><div class="ttname"><a href="classevmc_1_1HostContext.html#a06c2f1a5f29be3384b4e48c70198b563">evmc::HostContext::get_code_hash</a></div><div class="ttdeci">bytes32 get_code_hash(const address &address) const noexcept final</div><div class="ttdoc">Get code hash callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00503">evmc.hpp:503</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a0a5557fb3dc3c04da6ef466ec3bb4d4c"><div class="ttname"><a href="namespaceevmc.html#a0a5557fb3dc3c04da6ef466ec3bb4d4c">evmc::operator<</a></div><div class="ttdeci">constexpr bool operator<(const address &a, const address &b) noexcept</div><div class="ttdoc">The "less than" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00160">evmc.hpp:160</a></div></div>
|
|
<div class="ttc" id="structevmc__result_html_a61978e85f9d795a7b9695b9cbf1748d6"><div class="ttname"><a href="structevmc__result.html#a61978e85f9d795a7b9695b9cbf1748d6">evmc_result::output_data</a></div><div class="ttdeci">const uint8_t * output_data</div><div class="ttdoc">The reference to output data. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00364">evmc.h:364</a></div></div>
|
|
<div class="ttc" id="structevmc__host__interface_html_a058d2f129c4f4e840258127137801eaf"><div class="ttname"><a href="structevmc__host__interface.html#a058d2f129c4f4e840258127137801eaf">evmc_host_interface::get_code_hash</a></div><div class="ttdeci">evmc_get_code_hash_fn get_code_hash</div><div class="ttdoc">Get code hash callback function. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00639">evmc.h:639</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a9edddb016f6f1803f5f1fddc4fe074cb"><div class="ttname"><a href="namespaceevmc.html#a9edddb016f6f1803f5f1fddc4fe074cb">evmc::load64be</a></div><div class="ttdeci">constexpr uint64_t load64be(const uint8_t *bytes) noexcept</div><div class="ttdoc">Loads 64 bits / 8 bytes of data from the given bytes array in big-endian order. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00117">evmc.hpp:117</a></div></div>
|
|
<div class="ttc" id="structevmc_1_1address_html_a4efaacdd8a0de3a347b845a5b134bd47"><div class="ttname"><a href="structevmc_1_1address.html#a4efaacdd8a0de3a347b845a5b134bd47">evmc::address::address</a></div><div class="ttdeci">constexpr address(evmc_address init={}) noexcept</div><div class="ttdoc">Default and converting constructor. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00026">evmc.hpp:26</a></div></div>
|
|
<div class="ttc" id="namespaceevmc_html_a3f6b3b885e1053cebe81913583212e70"><div class="ttname"><a href="namespaceevmc.html#a3f6b3b885e1053cebe81913583212e70">evmc::operator==</a></div><div class="ttdeci">constexpr bool operator==(const address &a, const address &b) noexcept</div><div class="ttdoc">The "equal to" comparison operator for the evmc::address type. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00145">evmc.hpp:145</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_gae5759b1590071966ccf6a505b52a0ef7"><div class="ttname"><a href="group__EVMC.html#gae5759b1590071966ccf6a505b52a0ef7">evmc_revision</a></div><div class="ttdeci">evmc_revision</div><div class="ttdoc">EVM revision. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00705">evmc.h:705</a></div></div>
|
|
<div class="ttc" id="structevmc__tx__context_html"><div class="ttname"><a href="structevmc__tx__context.html">evmc_tx_context</a></div><div class="ttdoc">The transaction and block data for execution. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00147">evmc.h:147</a></div></div>
|
|
<div class="ttc" id="classevmc_1_1VM_html_a8ee88b1b96be2a2f47c8ecd7893b8511"><div class="ttname"><a href="classevmc_1_1VM.html#a8ee88b1b96be2a2f47c8ecd7893b8511">evmc::VM::has_capability</a></div><div class="ttdeci">bool has_capability(evmc_capabilities capability) const noexcept</div><div class="ttdoc">Checks if the VM has the given capability. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8hpp_source.html#l00639">evmc.hpp:639</a></div></div>
|
|
<div class="ttc" id="group__EVMC_html_ga44f9ecb88cf6422a0072936494fd6ac7"><div class="ttname"><a href="group__EVMC.html#ga44f9ecb88cf6422a0072936494fd6ac7">evmc_capabilities</a></div><div class="ttdeci">evmc_capabilities</div><div class="ttdoc">Possible capabilities of a VM. </div><div class="ttdef"><b>Definition:</b> <a href="evmc_8h_source.html#l00806">evmc.h:806</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_5298d49f5985e350bcac49a99c9a871c.html">evmc</a></li><li class="navelem"><a class="el" href="evmc_8hpp.html">evmc.hpp</a></li>
|
|
<li class="footer">Generated on Tue Jan 7 2020 15:35:10 for EVMC by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|