blob: cdfaa690e073ef766ac0e4da2759fc342280497b [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Wraps several functions from wasmer.hh, so that they take and return all
// structs by pointer, rather than by value. This is necessary because Dart FFI
// doesn't support passing structs by value yet (once it does, we can delete
// this wrapper).
#include "wasmer.hh"
extern "C" {
// Wraps wasmer_export_name.
void wasmer_export_name_ptr(wasmer_export_t* export_,
wasmer_byte_array* out_name) {
*out_name = wasmer_export_name(export_);
}
// Wraps wasmer_export_descriptor_name.
void wasmer_export_descriptor_name_ptr(
wasmer_export_descriptor_t* export_descriptor,
wasmer_byte_array* out_name) {
*out_name = wasmer_export_descriptor_name(export_descriptor);
}
// Wraps wasmer_import_descriptor_module_name.
void wasmer_import_descriptor_module_name_ptr(
wasmer_import_descriptor_t* import_descriptor,
wasmer_byte_array* out_name) {
*out_name = wasmer_import_descriptor_module_name(import_descriptor);
}
// Wraps wasmer_import_descriptor_name.
void wasmer_import_descriptor_name_ptr(
wasmer_import_descriptor_t* import_descriptor,
wasmer_byte_array* out_name) {
*out_name = wasmer_import_descriptor_name(import_descriptor);
}
// Wraps wasmer_memory_new.
wasmer_result_t wasmer_memory_new_ptr(wasmer_memory_t** memory,
wasmer_limits_t* limits) {
return wasmer_memory_new(memory, *limits);
}
}