Merge pull request #138 from ethereum/bool

Use bool type instead of int with 1 and 0
This commit is contained in:
Paweł Bylica 2018-09-06 09:10:42 +02:00 committed by GitHub
commit 83a679c524
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 43 deletions

View File

@ -53,12 +53,12 @@ static inline void go_exported_functions_type_checks()
(void)result; (void)result;
enum evmc_storage_status storage_status; enum evmc_storage_status storage_status;
(void)storage_status; (void)storage_status;
int status; bool bool_flag;
(void)status; (void)bool_flag;
evmc_account_exists_fn account_exists_fn = NULL; evmc_account_exists_fn account_exists_fn = NULL;
status = account_exists_fn(context, address); bool_flag = account_exists_fn(context, address);
status = accountExists(context, address); bool_flag = accountExists(context, address);
evmc_get_storage_fn get_storage_fn = NULL; evmc_get_storage_fn get_storage_fn = NULL;
get_storage_fn(uint256be, context, address, uint256be); get_storage_fn(uint256be, context, address, uint256be);
@ -97,8 +97,8 @@ static inline void go_exported_functions_type_checks()
tx_context = getTxContext(context); tx_context = getTxContext(context);
evmc_get_block_hash_fn get_block_hash_fn = NULL; evmc_get_block_hash_fn get_block_hash_fn = NULL;
status = get_block_hash_fn(uint256be, context, number); bool_flag = get_block_hash_fn(uint256be, context, number);
status = getBlockHash(uint256be, context, number); bool_flag = getBlockHash(uint256be, context, number);
evmc_emit_log_fn emit_log_fn = NULL; evmc_emit_log_fn emit_log_fn = NULL;
emit_log_fn(context, address, data, size, uint256be, size); emit_log_fn(context, address, data, size, uint256be, size);

View File

@ -88,15 +88,10 @@ type HostContext interface {
} }
//export accountExists //export accountExists
func accountExists(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.int { func accountExists(pCtx unsafe.Pointer, pAddr *C.struct_evmc_address) C.bool {
idx := int((*C.struct_extended_context)(pCtx).index) idx := int((*C.struct_extended_context)(pCtx).index)
ctx := getHostContext(idx) ctx := getHostContext(idx)
exists := ctx.AccountExists(goAddress(*pAddr)) return C.bool(ctx.AccountExists(goAddress(*pAddr)))
r := C.int(0)
if exists {
r = 1
}
return r
} }
//export getStorage //export getStorage
@ -183,17 +178,17 @@ func getTxContext(pCtx unsafe.Pointer) C.struct_evmc_tx_context {
} }
//export getBlockHash //export getBlockHash
func getBlockHash(pResult *C.struct_evmc_uint256be, pCtx unsafe.Pointer, number int64) C.int { func getBlockHash(pResult *C.struct_evmc_uint256be, pCtx unsafe.Pointer, number int64) C.bool {
idx := int((*C.struct_extended_context)(pCtx).index) idx := int((*C.struct_extended_context)(pCtx).index)
ctx := getHostContext(idx) ctx := getHostContext(idx)
blockhash, err := ctx.GetBlockHash(number) blockhash, err := ctx.GetBlockHash(number)
if err != nil { if err != nil {
return C.int(0) return false
} }
*pResult = evmcUint256be(blockhash) *pResult = evmcUint256be(blockhash)
return C.int(1) return true
} }
//export emitLog //export emitLog

View File

@ -24,11 +24,11 @@ static evmc_uint256be balance(evmc_context* context, const evmc_address* address
return ret; return ret;
} }
static int account_exists(evmc_context* context, const evmc_address* address) static bool account_exists(evmc_context* context, const evmc_address* address)
{ {
(void)context; (void)context;
(void)address; (void)address;
return 0; return false;
} }
static void get_storage(evmc_uint256be* result, static void get_storage(evmc_uint256be* result,
@ -114,17 +114,17 @@ static evmc_tx_context get_tx_context(evmc_context* context)
return result; return result;
} }
static int get_block_hash(evmc_uint256be* result, evmc_context* context, int64_t number) static bool get_block_hash(evmc_uint256be* result, evmc_context* context, int64_t number)
{ {
example_host_context* host = static_cast<example_host_context*>(context); example_host_context* host = static_cast<example_host_context*>(context);
int64_t current_block_number = host->tx_context.block_number; int64_t current_block_number = host->tx_context.block_number;
if (number >= current_block_number || number < current_block_number - 256) if (number >= current_block_number || number < current_block_number - 256)
return 0; return false;
evmc_uint256be example_block_hash{}; evmc_uint256be example_block_hash{};
*result = example_block_hash; *result = example_block_hash;
return 1; return true;
} }
static void emit_log(evmc_context* context, static void emit_log(evmc_context* context,

View File

@ -11,8 +11,9 @@
#ifndef EVMC_H #ifndef EVMC_H
#define EVMC_H #define EVMC_H
#include <stddef.h> /* Definition of size_t. */ #include <stdbool.h> /* Definition of bool, true and false. */
#include <stdint.h> /* Definition of int64_t, uint64_t. */ #include <stddef.h> /* Definition of size_t. */
#include <stdint.h> /* Definition of int64_t, uint64_t. */
#if __cplusplus #if __cplusplus
extern "C" { extern "C" {
@ -147,19 +148,19 @@ typedef struct evmc_tx_context (*evmc_get_tx_context_fn)(struct evmc_context* co
/** /**
* Get block hash callback function. * Get block hash callback function.
* *
* This callback function is used by an VM to query the block hash of * This callback function is used by an VM to query the block hash of
* a given block. If the requested block is not found, then an appropriate * a given block. If the requested block is not found, then an appropriate
* result code is returned. * result code is returned.
* *
* @param[out] result The returned block hash value. Only written to * @param[out] result The returned block hash value. Only written to
* if the return value is 1 (information is avialable). * if the return value is 1 (information is avialable).
* @param context The pointer to the Host execution context. * @param context The pointer to the Host execution context.
* @param number The block number. * @param number The block number.
* @return 1 if the information is available, 0 otherwise. * @return true if the information is available, false otherwise.
*/ */
typedef int (*evmc_get_block_hash_fn)(struct evmc_uint256be* result, typedef bool (*evmc_get_block_hash_fn)(struct evmc_uint256be* result,
struct evmc_context* context, struct evmc_context* context,
int64_t number); int64_t number);
/** /**
* The execution status code. * The execution status code.
@ -387,17 +388,16 @@ struct evmc_result
/** /**
* Check account existence callback function * Check account existence callback function.
* *
* This callback function is used by the EVM to check if * This callback function is used by the VM to check if
* there exists an account at given address. * there exists an account at given address.
* @param context The pointer to the Host execution context. * @param context The pointer to the Host execution context.
* @see ::evmc_context. * @param address The address of the account the query is about.
* @param address The address of the account the query is about. * @return true if exists, false otherwise.
* @return 1 if exists, 0 otherwise.
*/ */
typedef int (*evmc_account_exists_fn)(struct evmc_context* context, typedef bool (*evmc_account_exists_fn)(struct evmc_context* context,
const struct evmc_address* address); const struct evmc_address* address);
/** /**
* Get storage callback function. * Get storage callback function.