3#include <emscripten/val.h>
22 if constexpr ( !std::is_void_v<typename std::remove_reference_t<E>::value_type> )
23 return std::move( *e );
37 out.call<
void>(
"set", emscripten::val( emscripten::typed_memory_view( count, data ) ) );
41template <
typename V,
typename S,
size_t Arity = 1>
44 using Elem =
typename V::value_type;
45 static_assert( std::is_trivially_copyable_v<Elem> &&
sizeof( Elem ) == Arity *
sizeof( S ) );
46 return makeTypedArray<S>(
reinterpret_cast<const S*
>( v.data() ), v.size() * Arity );
49template <
typename V,
typename S,
size_t Arity = 1>
52 using Elem =
typename V::value_type;
53 static_assert( std::is_trivially_copyable_v<Elem> &&
sizeof( Elem ) == Arity *
sizeof( S ) );
54 const size_t len = arr[
"length"].as<
size_t>();
56 v.vec_.resize( len / Arity );
59 emscripten::val view = emscripten::val( emscripten::typed_memory_view(
60 len,
reinterpret_cast<S*
>( v.data() ) ) );
61 view.call<
void>(
"set", arr );
Definition MRWasmBindings.h:13
V packedFromTypedArray(emscripten::val arr)
Definition MRWasmBindings.h:50
void throwJsError(const std::string &msg)
emscripten::val packedToTypedArray(const V &v)
Definition MRWasmBindings.h:42
std::function< bool(float)> jsToCppCallback(emscripten::val cb)
emscripten::val makeTypedArray(const S *data, size_t count)
Definition MRWasmBindings.h:32
auto unwrap(E &&e)
Definition MRWasmBindings.h:18
static constexpr const char * value
Definition MRWasmBindings.h:27
static constexpr const char * value
Definition MRWasmBindings.h:28
static constexpr const char * value
Definition MRWasmBindings.h:29
Definition MRWasmBindings.h:26