49 lines
2.4 KiB
C++
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));
|
|
}
|