From 57b4e74356ba84167e626556cd86f53df7db3252 Mon Sep 17 00:00:00 2001 From: Alex Dovzhanyn Date: Thu, 24 Jan 2019 11:03:07 -0500 Subject: [PATCH] adds documentation for create_imports/1 --- lib/execution/host_function.ex | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/execution/host_function.ex b/lib/execution/host_function.ex index 18c6ce2..50637f0 100644 --- a/lib/execution/host_function.ex +++ b/lib/execution/host_function.ex @@ -67,6 +67,32 @@ defmodule WaspVM.HostFunction do end end + @doc """ + Pass in an Elixir module or list of Elixir modules that implement `defhost` + calls to generate imports for WebAssembly to be passed in when loading a + WebAssembly module into the VM + + ## Usage + + When using a single module to define imports: + + WaspVM.HostFunction.create_imports(Module1) + + Functions will be accessible in the WebAssembly module as: + + (import "Module1" "function_name") + + When using multiple modules to define imports: + + WaspVM.HostFunction.create_imports([Module1, Module2, Module3]) + + Functions will be accessible in the WebAssembly module as: + + (import "Module1" "function_name") + (import "Module2" "function_name") + (import "Module3" "function_name") + """ + @spec create_imports(list | atom) :: map def create_imports(modules) when is_list(modules) do Enum.reduce(modules, %{}, fn mod, acc -> "Elixir." <> mod_string = to_string(mod)