mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-28 08:01:33 +00:00
doc(runtime-c-api) Improve documentation of wasmer_instance_call
.
This commit is contained in:
@ -199,13 +199,55 @@ pub extern "C" fn wasmer_instance_context_get(
|
|||||||
context as *const wasmer_instance_context_t
|
context as *const wasmer_instance_context_t
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Calls an instances exported function by `name` with the provided parameters.
|
/// Calls an exported function of a WebAssembly instance by `name`
|
||||||
/// Results are set using the provided `results` pointer.
|
/// with the provided parameters. The exported function results are
|
||||||
|
/// stored on the provided `results` pointer.
|
||||||
///
|
///
|
||||||
/// Returns `wasmer_result_t::WASMER_OK` upon success.
|
/// This function returns `wasmer_result_t::WASMER_OK` upon success,
|
||||||
|
/// `wasmer_result_t::WASMER_ERROR` otherwise. You can use
|
||||||
|
/// `wasmer_last_error_message()` to get the generated error message.
|
||||||
///
|
///
|
||||||
/// Returns `wasmer_result_t::WASMER_ERROR` upon failure. Use `wasmer_last_error_length`
|
/// Potential errors are the following:
|
||||||
/// and `wasmer_last_error_message` to get an error message.
|
///
|
||||||
|
/// * `instance` is a null pointer,
|
||||||
|
/// * `name` is a null pointer,
|
||||||
|
/// * `params` is a null pointer.
|
||||||
|
///
|
||||||
|
/// Example of calling an exported function that needs two parameters, and returns one value:
|
||||||
|
///
|
||||||
|
/// ```c
|
||||||
|
/// // First argument.
|
||||||
|
/// wasmer_value_t argument_one = {
|
||||||
|
/// .tag = WASM_I32,
|
||||||
|
/// .value.I32 = 3,
|
||||||
|
/// };
|
||||||
|
///
|
||||||
|
/// // Second argument.
|
||||||
|
/// wasmer_value_t argument_two = {
|
||||||
|
/// .tag = WASM_I32,
|
||||||
|
/// .value.I32 = 4,
|
||||||
|
/// };
|
||||||
|
///
|
||||||
|
/// // First result.
|
||||||
|
/// wasmer_value_t result_one;
|
||||||
|
///
|
||||||
|
/// // All arguments and results.
|
||||||
|
/// wasmer_value_t arguments[] = {argument_one, argument_two};
|
||||||
|
/// wasmer_value_t results[] = {result_one};
|
||||||
|
///
|
||||||
|
/// wasmer_result_t call_result = wasmer_instance_call(
|
||||||
|
/// instance, // instance pointer
|
||||||
|
/// "sum", // the exported function name
|
||||||
|
/// arguments, // the arguments
|
||||||
|
/// 2, // the number of arguments
|
||||||
|
/// results, // the results
|
||||||
|
/// 1 // the number of results
|
||||||
|
/// );
|
||||||
|
///
|
||||||
|
/// if (call_result == WASMER_OK) {
|
||||||
|
/// printf("Result is: %d\n", results[0].value.I32);
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasmer_instance_call(
|
pub unsafe extern "C" fn wasmer_instance_call(
|
||||||
@ -220,18 +262,23 @@ pub unsafe extern "C" fn wasmer_instance_call(
|
|||||||
update_last_error(CApiError {
|
update_last_error(CApiError {
|
||||||
msg: "instance ptr is null".to_string(),
|
msg: "instance ptr is null".to_string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
return wasmer_result_t::WASMER_ERROR;
|
return wasmer_result_t::WASMER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if name.is_null() {
|
if name.is_null() {
|
||||||
update_last_error(CApiError {
|
update_last_error(CApiError {
|
||||||
msg: "name ptr is null".to_string(),
|
msg: "name ptr is null".to_string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
return wasmer_result_t::WASMER_ERROR;
|
return wasmer_result_t::WASMER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.is_null() {
|
if params.is_null() {
|
||||||
update_last_error(CApiError {
|
update_last_error(CApiError {
|
||||||
msg: "params ptr is null".to_string(),
|
msg: "params ptr is null".to_string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
return wasmer_result_t::WASMER_ERROR;
|
return wasmer_result_t::WASMER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user