lookup<T extends NativeType> method
Looks up a symbol in the DynamicLibrary and returns its address in memory.
Throws an ArgumentError if it fails to lookup the symbol.
While this method checks if the underyling wasm symbol is a actually
a function when you lookup a NativeFunction<T>
, it does not check if
the return type and parameters of T
match the wasm function.
Implementation
Pointer<T> lookup<T extends NativeType>(String name) {
WasmSymbol symbol = symbolByName(boundMemory, name);
if (isNativeFunctionType<T>()) {
if (symbol is FunctionDescription) {
return new Pointer<T>.fromAddress(symbol.tableIndex, boundMemory);
} else {
throw new ArgumentError(
'Tried to look up $name as a function, but it seems it is NOT a function!');
}
} else {
return new Pointer<T>.fromAddress(symbol.address, boundMemory);
}
}