@@ -95,10 +95,58 @@ napi_value External(napi_env env, napi_callback_info info) {
95
95
return output_array ;
96
96
}
97
97
98
+ napi_value CreateTypedArray (napi_env env , napi_callback_info info ) {
99
+ size_t argc = 2 ;
100
+ napi_value args [2 ];
101
+ NAPI_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
102
+
103
+ NAPI_ASSERT (env , argc == 2 , "Wrong number of arguments" );
104
+
105
+ napi_value input_array = args [0 ];
106
+ napi_valuetype valuetype0 ;
107
+ NAPI_CALL (env , napi_typeof (env , input_array , & valuetype0 ));
108
+
109
+ NAPI_ASSERT (env , valuetype0 == napi_object ,
110
+ "Wrong type of argments. Expects a typed array as first argument." );
111
+
112
+ bool is_typedarray ;
113
+ NAPI_CALL (env , napi_is_typedarray (env , input_array , & is_typedarray ));
114
+
115
+ NAPI_ASSERT (env , is_typedarray ,
116
+ "Wrong type of argments. Expects a typed array as first argument." );
117
+
118
+ napi_valuetype valuetype1 ;
119
+ napi_value input_buffer = args [1 ];
120
+ NAPI_CALL (env , napi_typeof (env , input_buffer , & valuetype1 ));
121
+
122
+ NAPI_ASSERT (env , valuetype1 == napi_object ,
123
+ "Wrong type of argments. Expects an array buffer as second argument." );
124
+
125
+ bool is_arraybuffer ;
126
+ NAPI_CALL (env , napi_is_arraybuffer (env , input_buffer , & is_arraybuffer ));
127
+
128
+ NAPI_ASSERT (env , is_arraybuffer ,
129
+ "Wrong type of argments. Expects an array buffer as second argument." );
130
+
131
+ napi_typedarray_type type ;
132
+ napi_value in_array_buffer ;
133
+ size_t byte_offset ;
134
+ size_t length ;
135
+ NAPI_CALL (env , napi_get_typedarray_info (
136
+ env , input_array , & type , & length , NULL , & in_array_buffer , & byte_offset ));
137
+
138
+ napi_value output_array ;
139
+ NAPI_CALL (env , napi_create_typedarray (
140
+ env , type , length , input_buffer , byte_offset , & output_array ));
141
+
142
+ return output_array ;
143
+ }
144
+
98
145
void Init (napi_env env , napi_value exports , napi_value module , void * priv ) {
99
146
napi_property_descriptor descriptors [] = {
100
147
DECLARE_NAPI_PROPERTY ("Multiply" , Multiply ),
101
148
DECLARE_NAPI_PROPERTY ("External" , External ),
149
+ DECLARE_NAPI_PROPERTY ("CreateTypedArray" , CreateTypedArray ),
102
150
};
103
151
104
152
NAPI_CALL_RETURN_VOID (env , napi_define_properties (
0 commit comments