From 60cfde98af6db99066342e2ae9a2df248520a28a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Thu, 6 Sep 2018 23:30:48 +0200 Subject: [PATCH] Add alias evmc_address for struct evmc_address --- bindings/go/evmc/evmc.go | 10 ++++----- bindings/go/evmc/host.c | 2 +- bindings/go/evmc/host.go | 20 +++++++++--------- examples/example.c | 2 +- include/evmc/evmc.h | 45 ++++++++++++++++++++-------------------- 5 files changed, 39 insertions(+), 40 deletions(-) diff --git a/bindings/go/evmc/evmc.go b/bindings/go/evmc/evmc.go index c771af4..0ba5e7f 100644 --- a/bindings/go/evmc/evmc.go +++ b/bindings/go/evmc/evmc.go @@ -34,7 +34,7 @@ extern const struct evmc_host_interface evmc_go_host; static struct evmc_result execute_wrapper(struct evmc_instance* instance, int64_t context_index, enum evmc_revision rev, enum evmc_call_kind kind, uint32_t flags, int32_t depth, int64_t gas, - const struct evmc_address* destination, const struct evmc_address* sender, + const evmc_address* destination, const evmc_address* sender, const uint8_t* input_data, size_t input_size, const evmc_uint256be* value, const uint8_t* code, size_t code_size, const evmc_bytes32* create2_salt) { @@ -70,8 +70,8 @@ import ( const ( _ = uint(common.HashLength - C.sizeof_evmc_bytes32) // The size of evmc_bytes32 equals the size of Hash. _ = uint(C.sizeof_evmc_bytes32 - common.HashLength) - _ = uint(common.AddressLength - C.sizeof_struct_evmc_address) // The size of evmc_address equals the size of Address. - _ = uint(C.sizeof_struct_evmc_address - common.AddressLength) + _ = uint(common.AddressLength - C.sizeof_evmc_address) // The size of evmc_address equals the size of Address. + _ = uint(C.sizeof_evmc_address - common.AddressLength) ) type Error int32 @@ -269,8 +269,8 @@ func evmcBytes32(in common.Hash) C.evmc_bytes32 { return out } -func evmcAddress(address common.Address) C.struct_evmc_address { - r := C.struct_evmc_address{} +func evmcAddress(address common.Address) C.evmc_address { + r := C.evmc_address{} for i := 0; i < len(address); i++ { r.bytes[i] = C.uint8_t(address[i]) } diff --git a/bindings/go/evmc/host.c b/bindings/go/evmc/host.c index 8d22687..7b7f88b 100644 --- a/bindings/go/evmc/host.c +++ b/bindings/go/evmc/host.c @@ -40,7 +40,7 @@ const struct evmc_host_interface evmc_go_host = { static inline void go_exported_functions_type_checks() { struct evmc_context* context = NULL; - struct evmc_address* address = NULL; + evmc_address* address = NULL; evmc_bytes32* bytes32 = NULL; evmc_uint256be* uint256be = NULL; uint8_t* data = NULL; diff --git a/bindings/go/evmc/host.go b/bindings/go/evmc/host.go index 8c46e8a..0a6357f 100644 --- a/bindings/go/evmc/host.go +++ b/bindings/go/evmc/host.go @@ -46,7 +46,7 @@ const ( StorageDeleted StorageStatus = C.EVMC_STORAGE_DELETED ) -func goAddress(in C.struct_evmc_address) common.Address { +func goAddress(in C.evmc_address) common.Address { out := common.Address{} for i := 0; i < len(out); i++ { out[i] = byte(in.bytes[i]) @@ -88,14 +88,14 @@ type HostContext interface { } //export accountExists -func accountExists(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.bool { +func accountExists(pCtx unsafe.Pointer, pAddr *C.evmc_address) C.bool { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) return C.bool(ctx.AccountExists(goAddress(*pAddr))) } //export getStorage -func getStorage(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pKey *C.struct_evmc_bytes32) C.bool { +func getStorage(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pKey *C.evmc_bytes32) C.bool { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) value, err := ctx.GetStorage(goAddress(*pAddr), goHash(*pKey)) @@ -107,7 +107,7 @@ func getStorage(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.struct_ev } //export setStorage -func setStorage(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pKey *C.evmc_bytes32, pVal *C.evmc_bytes32) C.enum_evmc_storage_status { +func setStorage(pCtx unsafe.Pointer, pAddr *C.evmc_address, pKey *C.evmc_bytes32, pVal *C.evmc_bytes32) C.enum_evmc_storage_status { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) status, err := ctx.SetStorage(goAddress(*pAddr), goHash(*pKey), goHash(*pVal)) @@ -118,7 +118,7 @@ func setStorage(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pKey *C.evmc_ } //export getBalance -func getBalance(pResult *C.evmc_uint256be, pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.bool { +func getBalance(pResult *C.evmc_uint256be, pCtx unsafe.Pointer, pAddr *C.evmc_address) C.bool { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) balance, err := ctx.GetBalance(goAddress(*pAddr)) @@ -130,7 +130,7 @@ func getBalance(pResult *C.evmc_uint256be, pCtx unsafe.Pointer, pAddr *C.struct_ } //export getCodeSize -func getCodeSize(pResult *C.size_t, pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.bool { +func getCodeSize(pResult *C.size_t, pCtx unsafe.Pointer, pAddr *C.evmc_address) C.bool { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) codeSize, err := ctx.GetCodeSize(goAddress(*pAddr)) @@ -142,7 +142,7 @@ func getCodeSize(pResult *C.size_t, pCtx unsafe.Pointer, pAddr *C.struct_evmc_ad } //export getCodeHash -func getCodeHash(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.bool { +func getCodeHash(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.evmc_address) C.bool { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) codeHash, err := ctx.GetCodeHash(goAddress(*pAddr)) @@ -154,7 +154,7 @@ func getCodeHash(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, pAddr *C.struct_e } //export copyCode -func copyCode(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, offset C.size_t, p *C.uint8_t, size C.size_t) C.size_t { +func copyCode(pCtx unsafe.Pointer, pAddr *C.evmc_address, offset C.size_t, p *C.uint8_t, size C.size_t) C.size_t { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) code := ctx.GetCode(goAddress(*pAddr)) @@ -175,7 +175,7 @@ func copyCode(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, offset C.size_t } //export selfdestruct -func selfdestruct(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pBeneficiary *C.struct_evmc_address) { +func selfdestruct(pCtx unsafe.Pointer, pAddr *C.evmc_address, pBeneficiary *C.evmc_address) { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) ctx.Selfdestruct(goAddress(*pAddr), goAddress(*pBeneficiary)) @@ -214,7 +214,7 @@ func getBlockHash(pResult *C.evmc_bytes32, pCtx unsafe.Pointer, number int64) C. } //export emitLog -func emitLog(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address, pData unsafe.Pointer, dataSize C.size_t, pTopics unsafe.Pointer, topicsCount C.size_t) { +func emitLog(pCtx unsafe.Pointer, pAddr *C.evmc_address, pData unsafe.Pointer, dataSize C.size_t, pTopics unsafe.Pointer, topicsCount C.size_t) { idx := int((*C.struct_extended_context)(pCtx).index) ctx := getHostContext(idx) diff --git a/examples/example.c b/examples/example.c index 9cf3860..3f2ae05 100644 --- a/examples/example.c +++ b/examples/example.c @@ -21,7 +21,7 @@ int main() const size_t code_size = sizeof(code); const uint8_t input[] = "Hello World!"; const evmc_uint256be value = {{1, 0}}; - const struct evmc_address addr = {{0, 1, 2}}; + const evmc_address addr = {{0, 1, 2}}; const int64_t gas = 200000; struct evmc_context* ctx = example_host_create_context(); struct evmc_message msg; diff --git a/include/evmc/evmc.h b/include/evmc/evmc.h index c8128e4..cc65659 100644 --- a/include/evmc/evmc.h +++ b/include/evmc/evmc.h @@ -52,11 +52,11 @@ typedef struct evmc_bytes32 typedef struct evmc_bytes32 evmc_uint256be; /** Big-endian 160-bit hash suitable for keeping an Ethereum address. */ -struct evmc_address +typedef struct evmc_address { /** The 20 bytes of the hash. */ uint8_t bytes[20]; -}; +} evmc_address; /** The kind of call-like instruction. */ enum evmc_call_kind @@ -97,10 +97,10 @@ struct evmc_message int64_t gas; /** The destination of the message. */ - struct evmc_address destination; + evmc_address destination; /** The sender of the message. */ - struct evmc_address sender; + evmc_address sender; /** * The message input data. @@ -133,13 +133,13 @@ struct evmc_message /** The transaction and block data for execution. */ struct evmc_tx_context { - evmc_uint256be tx_gas_price; /**< The transaction gas price. */ - struct evmc_address tx_origin; /**< The transaction origin account. */ - struct evmc_address block_coinbase; /**< The miner of the block. */ - int64_t block_number; /**< The block number. */ - int64_t block_timestamp; /**< The block timestamp. */ - int64_t block_gas_limit; /**< The block gas limit. */ - evmc_uint256be block_difficulty; /**< The block difficulty. */ + evmc_uint256be tx_gas_price; /**< The transaction gas price. */ + evmc_address tx_origin; /**< The transaction origin account. */ + evmc_address block_coinbase; /**< The miner of the block. */ + int64_t block_number; /**< The block number. */ + int64_t block_timestamp; /**< The block timestamp. */ + int64_t block_gas_limit; /**< The block gas limit. */ + evmc_uint256be block_difficulty; /**< The block difficulty. */ }; struct evmc_context; @@ -380,7 +380,7 @@ struct evmc_result * This field has valid value only if the result describes successful * CREATE (evmc_result::status_code is ::EVMC_SUCCESS). */ - struct evmc_address create_address; + evmc_address create_address; /** * Reserved data that MAY be used by a evmc_result object creator. @@ -406,8 +406,7 @@ struct evmc_result * @param address The address of the account the query is about. * @return true if exists, false otherwise. */ -typedef bool (*evmc_account_exists_fn)(struct evmc_context* context, - const struct evmc_address* address); +typedef bool (*evmc_account_exists_fn)(struct evmc_context* context, const evmc_address* address); /** * Get storage callback function. @@ -425,7 +424,7 @@ typedef bool (*evmc_account_exists_fn)(struct evmc_context* context, */ typedef bool (*evmc_get_storage_fn)(evmc_bytes32* result, struct evmc_context* context, - const struct evmc_address* address, + const evmc_address* address, const evmc_bytes32* key); @@ -486,7 +485,7 @@ enum evmc_storage_status * @return The effect on the storage item. @see ::evmc_storage_status. */ typedef enum evmc_storage_status (*evmc_set_storage_fn)(struct evmc_context* context, - const struct evmc_address* address, + const evmc_address* address, const evmc_bytes32* key, const evmc_bytes32* value); @@ -507,7 +506,7 @@ typedef enum evmc_storage_status (*evmc_set_storage_fn)(struct evmc_context* con */ typedef bool (*evmc_get_balance_fn)(evmc_uint256be* result, struct evmc_context* context, - const struct evmc_address* address); + const evmc_address* address); /** * Get code size callback function. @@ -527,7 +526,7 @@ typedef bool (*evmc_get_balance_fn)(evmc_uint256be* result, */ typedef bool (*evmc_get_code_size_fn)(size_t* result, struct evmc_context* context, - const struct evmc_address* address); + const evmc_address* address); /** * Get code size callback function. @@ -548,7 +547,7 @@ typedef bool (*evmc_get_code_size_fn)(size_t* result, */ typedef bool (*evmc_get_code_hash_fn)(evmc_bytes32* result, struct evmc_context* context, - const struct evmc_address* address); + const evmc_address* address); /** * Copy code callback function. @@ -569,7 +568,7 @@ typedef bool (*evmc_get_code_hash_fn)(evmc_bytes32* result, * @return The number of bytes copied to the buffer by the Client. */ typedef size_t (*evmc_copy_code_fn)(struct evmc_context* context, - const struct evmc_address* address, + const evmc_address* address, size_t code_offset, uint8_t* buffer_data, size_t buffer_size); @@ -587,8 +586,8 @@ typedef size_t (*evmc_copy_code_fn)(struct evmc_context* context, * transferred. */ typedef void (*evmc_selfdestruct_fn)(struct evmc_context* context, - const struct evmc_address* address, - const struct evmc_address* beneficiary); + const evmc_address* address, + const evmc_address* beneficiary); /** * Log callback function. @@ -605,7 +604,7 @@ typedef void (*evmc_selfdestruct_fn)(struct evmc_context* context, * 0 and 4 inclusively. */ typedef void (*evmc_emit_log_fn)(struct evmc_context* context, - const struct evmc_address* address, + const evmc_address* address, const uint8_t* data, size_t data_size, const evmc_bytes32 topics[],