PkmnLib/src/ScriptResolving/WASM/InterfaceMethods/WASMListRegistry.cpp

49 lines
2.4 KiB
C++

#include "WASMListRegistry.hpp"
#include "WASMHelperFile.hpp"
wasm_func_t* PtrList_GetLength(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<size_t, const ArbUt::List<void*>*>(
resolver, {[](WebAssemblyScriptResolver*, const ArbUt::List<void*>* list) -> size_t { return list->Count(); }});
}
wasm_func_t* PtrList_GetValue(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<void*, const ArbUt::List<void*>*, size_t>(
resolver, {[](WebAssemblyScriptResolver*, const ArbUt::List<void*>* list, size_t index) -> void* {
return list->At(index);
}});
}
wasm_func_t* ByteList_GetLength(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<size_t, const ArbUt::List<u8>*>(
resolver, {[](WebAssemblyScriptResolver*, const ArbUt::List<u8>* list) -> size_t { return list->Count(); }});
}
wasm_func_t* ByteList_GetValue(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<u8, const ArbUt::List<u8>*, size_t>(
resolver,
{[](WebAssemblyScriptResolver*, const ArbUt::List<u8>* list, size_t index) -> u8 { return list->At(index); }});
}
wasm_func_t* OptionalUniquePtrList_GetLength(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<size_t, const ArbUt::OptionalUniquePtrList<void>*>(
resolver, {[](WebAssemblyScriptResolver*, const ArbUt::OptionalUniquePtrList<void>* list) -> size_t {
return list->Count();
}});
}
wasm_func_t* OptionalUniquePtrList_GetValue(WebAssemblyScriptResolver* resolver) {
return WasmHelpers::CreateFunc<void*, const ArbUt::OptionalUniquePtrList<void>*, size_t>(
resolver, {[](WebAssemblyScriptResolver*, const ArbUt::OptionalUniquePtrList<void>* list,
size_t index) -> void* { return list->At(index); }});
}
void WASMListRegistry::Register(ArbUt::Dictionary<std::string, wasm_func_t*>& externs,
WebAssemblyScriptResolver* resolver) {
externs.Insert("pointer_list_get_length", PtrList_GetLength(resolver));
externs.Insert("pointer_list_get_at", PtrList_GetValue(resolver));
externs.Insert("byte_list_get_length", ByteList_GetLength(resolver));
externs.Insert("byte_list_get_at", ByteList_GetValue(resolver));
externs.Insert("optional_unique_ptr_list_get_length", OptionalUniquePtrList_GetLength(resolver));
externs.Insert("optional_unique_ptr_get_at", OptionalUniquePtrList_GetValue(resolver));
}