Code/Wasm/Interpret/ListImporter.cs
namespace WasmBox.Wasm.Interpret {
public sealed class ListImporter : IImporter {
/// <summary>
/// Creates a linking importer.
/// </summary>
public ListImporter() {
ModuleImporters = new();
}
public ListImporter(IImporter moduleImporters) {
ModuleImporters = [moduleImporters];
}
public ListImporter(List<IImporter> moduleImporters) {
ModuleImporters = moduleImporters;
}
public List<IImporter> ModuleImporters { get; set; }
public void RegisterImporter(IImporter importer) {
ModuleImporters.Add(importer);
}
/// <inheritdoc/>
public FunctionDefinition ImportFunction( ImportedFunction description, FunctionType signature ) {
foreach ( var importer in ModuleImporters ) {
var v = importer.ImportFunction( description, signature );
if ( v != null )
return v;
}
return null;
}
/// <inheritdoc/>
public Variable ImportGlobal(ImportedGlobal description) {
foreach ( var importer in ModuleImporters ) {
var v = importer.ImportGlobal( description );
if ( v != null )
return v;
}
return null;
}
/// <inheritdoc/>
public LinearMemory ImportMemory(ImportedMemory description) {
foreach ( var importer in ModuleImporters ) {
var v = importer.ImportMemory( description );
if ( v != null )
return v;
}
return null;
}
/// <inheritdoc/>
public FunctionTable ImportTable(ImportedTable description) {
foreach ( var importer in ModuleImporters ) {
var v = importer.ImportTable( description );
if ( v != null )
return v;
}
return null;
}
}
}