mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add evmc.
This commit is contained in:
+20
-12
@@ -44,10 +44,10 @@ enum evmc_loader_error_code
|
||||
};
|
||||
|
||||
/**
|
||||
* Dynamically loads the shared object (DLL) with an EVM implementation.
|
||||
* Dynamically loads the EVMC module with a VM implementation.
|
||||
*
|
||||
* This function tries to open a DLL at the given `filename`. On UNIX-like systems dlopen() function
|
||||
* is used. On Windows LoadLibrary() function is used.
|
||||
* This function tries to open a dynamically loaded library (DLL) at the given `filename`.
|
||||
* On UNIX-like systems dlopen() function is used. On Windows LoadLibrary() function is used.
|
||||
*
|
||||
* If the file does not exist or is not a valid shared library the ::EVMC_LOADER_CANNOT_OPEN error
|
||||
* code is signaled and NULL is returned.
|
||||
@@ -77,28 +77,36 @@ enum evmc_loader_error_code
|
||||
* It is safe to call this function with the same filename argument multiple times
|
||||
* (the DLL is not going to be loaded multiple times).
|
||||
*
|
||||
* @param filename The null terminated path (absolute or relative) to the shared library
|
||||
* containing the EVM implementation. If the value is NULL, an empty C-string
|
||||
* or longer than the path maximum length the ::EVMC_LOADER_INVALID_ARGUMENT is
|
||||
* signaled.
|
||||
* @param filename The null terminated path (absolute or relative) to an EVMC module
|
||||
* (dynamically loaded library) containing the VM implementation.
|
||||
* If the value is NULL, an empty C-string or longer than the path maximum length
|
||||
* the ::EVMC_LOADER_INVALID_ARGUMENT is signaled.
|
||||
* @param error_code The pointer to the error code. If not NULL the value is set to
|
||||
* ::EVMC_LOADER_SUCCESS on success or any other error code as described above.
|
||||
* @return The pointer to the EVM create function or NULL.
|
||||
* @return The pointer to the EVM create function or NULL in case of error.
|
||||
*/
|
||||
evmc_create_fn evmc_load(const char* filename, enum evmc_loader_error_code* error_code);
|
||||
|
||||
/**
|
||||
* Dynamically loads the VM DLL and creates the VM instance.
|
||||
* Dynamically loads the EVMC module and creates the VM instance.
|
||||
*
|
||||
* This is a macro for creating the VM instance with the function returned from evmc_load().
|
||||
* The function signals the same errors as evmc_load() and additionally:
|
||||
* - ::EVMC_LOADER_INSTANCE_CREATION_FAILURE when the create function returns NULL,
|
||||
* - ::EVMC_LOADER_ABI_VERSION_MISMATCH when the created VM instance has ABI version different
|
||||
* from the ABI version of this library (::EVMC_ABI_VERSION).
|
||||
* - ::EVMC_LOADER_INSTANCE_CREATION_FAILURE when the create function returns NULL,
|
||||
* - ::EVMC_LOADER_ABI_VERSION_MISMATCH when the created VM instance has ABI version different
|
||||
* from the ABI version of this library (::EVMC_ABI_VERSION).
|
||||
*
|
||||
* It is safe to call this function with the same filename argument multiple times:
|
||||
* the DLL is not going to be loaded multiple times, but the function will return new VM instance
|
||||
* each time.
|
||||
*
|
||||
* @param filename The null terminated path (absolute or relative) to an EVMC module
|
||||
* (dynamically loaded library) containing the VM implementation.
|
||||
* If the value is NULL, an empty C-string or longer than the path maximum length
|
||||
* the ::EVMC_LOADER_INVALID_ARGUMENT is signaled.
|
||||
* @param error_code The pointer to the error code. If not NULL the value is set to
|
||||
* ::EVMC_LOADER_SUCCESS on success or any other error code as described above.
|
||||
* @return The pointer to the created VM or NULL in case of error.
|
||||
*/
|
||||
struct evmc_instance* evmc_load_and_create(const char* filename,
|
||||
enum evmc_loader_error_code* error_code);
|
||||
|
||||
Reference in New Issue
Block a user