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 );
31EMSCRIPTEN_DECLARE_VAL_TYPE( Float32ArrayVal )
32EMSCRIPTEN_DECLARE_VAL_TYPE( Uint32ArrayVal )
33EMSCRIPTEN_DECLARE_VAL_TYPE( Uint8ArrayVal )
34EMSCRIPTEN_DECLARE_VAL_TYPE( IndicesInputVal )
48 out.call<
void>(
"set", emscripten::val( emscripten::typed_memory_view( count, data ) ) );
52template <
typename V,
typename S,
size_t Arity = 1>
55 using Elem =
typename V::value_type;
56 static_assert( std::is_trivially_copyable_v<Elem> &&
sizeof( Elem ) == Arity *
sizeof( S ) );
60template <
typename V,
typename S,
size_t Arity = 1>
63 using Elem =
typename V::value_type;
64 static_assert( std::is_trivially_copyable_v<Elem> &&
sizeof( Elem ) == Arity *
sizeof( S ) );
65 const size_t len = arr[
"length"].template as<size_t>();
67 v.vec_.resize( len / Arity );
70 emscripten::val view = emscripten::val( emscripten::typed_memory_view(
71 len,
reinterpret_cast<S*
>( v.data() ) ) );
72 view.call<
void>(
"set", arr );
Definition MRWasmBindings.h:13
V packedFromTypedArray(TypedArrayVal< S > arr)
Definition MRWasmBindings.h:61
typename TypedArrayValType< S >::type TypedArrayVal
Definition MRWasmBindings.h:40
void throwJsError(const std::string &msg)
TypedArrayVal< S > packedToTypedArray(const V &v)
Definition MRWasmBindings.h:53
std::function< bool(float)> jsToCppCallback(emscripten::val cb)
emscripten::val makeTypedArray(const S *data, size_t count)
Definition MRWasmBindings.h:43
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
Float32ArrayVal type
Definition MRWasmBindings.h:37
Uint32ArrayVal type
Definition MRWasmBindings.h:38
Uint8ArrayVal type
Definition MRWasmBindings.h:39
Definition MRWasmBindings.h:36