@@ -296,6 +296,26 @@ typedef jerry_value_t (*jerry_vm_exec_stop_callback_t) (void *user_p);
296296- [jerry_set_vm_exec_stop_callback](#jerry_set_vm_exec_stop_callback)
297297
298298
299+ ## jerry_typedarray_type_t
300+
301+ Enum which describes the TypedArray types.
302+ Possible values:
303+
304+ - JERRY_TYPEDARRAY_UINT8 - represents the Uint8Array TypedArray
305+ - JERRY_TYPEDARRAY_UINT8CLAMPED - represents the Uint8ClampedArray TypedArray
306+ - JERRY_TYPEDARRAY_INT8 - represents the Int8Array TypedArray
307+ - JERRY_TYPEDARRAY_UINT16 - represents the Uint16Array TypedArray
308+ - JERRY_TYPEDARRAY_INT16 - represents the Int16Array TypedArray
309+ - JERRY_TYPEDARRAY_UINT32 - represents the Uint32Array TypedArray
310+ - JERRY_TYPEDARRAY_INT32 - represents the Int32Array TypedArray
311+ - JERRY_TYPEDARRAY_FLOAT32 - represents the Float32Array TypedArray
312+ - JERRY_TYPEDARRAY_FLOAT64 - represents the Float64Array TypedArray
313+ - JERRY_TYPEDARRAY_INVALID - represents an invalid TypedArray
314+
315+ API functions can return the `JERRY_TYPEDARRAY_INVALID` value if the
316+ TypedArray support is not in the engine.
317+
318+
299319# General engine functions
300320
301321## jerry_init
@@ -1347,6 +1367,45 @@ jerry_value_is_string (const jerry_value_t value)
13471367- [jerry_release_value](#jerry_release_value)
13481368
13491369
1370+ ## jerry_value_is_typedarray
1371+
1372+ **Summary**
1373+
1374+ Checks whether the given `jerry_value_t` is a TypedArray object or not.
1375+
1376+ **Prototype**
1377+
1378+ ```c
1379+ bool
1380+ jerry_value_is_typedarray (const jerry_value_t value)
1381+ ```
1382+
1383+ - `value` - object to check
1384+ - return value
1385+ - true, if the given `jerry_value_t` is a TypedArray object.
1386+ - false, otherwise
1387+
1388+ **Example**
1389+
1390+ ```c
1391+ {
1392+ jerry_value_t value;
1393+ ... // create or acquire value
1394+
1395+ if (jerry_value_is_typedarray (value))
1396+ {
1397+ ...
1398+ }
1399+
1400+ jerry_release_value (value);
1401+ }
1402+ ```
1403+
1404+ **See also**
1405+
1406+ - [jerry_create_typedarray](#jerry_create_typedarray)
1407+
1408+
13501409## jerry_value_is_undefined
13511410
13521411**Summary**
@@ -3129,6 +3188,151 @@ jerry_create_string_sz (const jerry_char_t *str_p,
31293188- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8)
31303189
31313190
3191+ ## jerry_create_typedarray
3192+
3193+ **Summary**
3194+
3195+ Create a jerry_value_t representing an TypedArray object.
3196+
3197+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3198+ and element count can be specified.
3199+
3200+ **Prototype**
3201+
3202+ ```c
3203+ jerry_value_t
3204+ jerry_create_typedarray (jerry_typedarray_type_t type_name, jerry_length_t item_count);
3205+ ```
3206+
3207+ - `type_name` - type of TypedArray to create
3208+ - `item_count` - number of items in the new TypedArray
3209+ - return value - the new TypedArray as a `jerry_value_t`
3210+
3211+ **Example**
3212+
3213+ ```c
3214+ {
3215+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_UINT16, 15);
3216+
3217+ ... // use the TypedArray
3218+
3219+ jerry_release_value (array);
3220+ }
3221+ ```
3222+
3223+ **See also**
3224+
3225+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3226+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3227+ - [jerry_release_value](#jerry_release_value)
3228+
3229+
3230+ ## jerry_create_typedarray_for_arraybuffer
3231+
3232+ **Summary**
3233+
3234+ Create a jerry_value_t representing an TypedArray object using
3235+ an already existing ArrayBuffer object.
3236+
3237+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3238+ and element count can be specified.
3239+
3240+ The developer must ensure that the ArrayBuffer has the correct length for the given
3241+ type of TypedArray otherwise an error is generated.
3242+
3243+ The JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer)` where `%TypedArray%` is
3244+ one of the allowed TypedArray functions.
3245+
3246+ **Prototype**
3247+
3248+ ```c
3249+ jerry_value_t
3250+ jerry_create_typedarray_for_arraybuffer (jerry_typedarray_type_t type_name,
3251+ const jerry_value_t arraybuffer);
3252+ ```
3253+
3254+ - `type_name` - type of TypedArray to create
3255+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3256+ - return value
3257+ - the new TypedArray as a `jerry_value_t`
3258+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3259+
3260+ **Example**
3261+
3262+ ```c
3263+ {
3264+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3265+ jerry_value_t array = jerry_create_typedarray_for_arraybuffer (JERRY_TYPEDARRAY_UINT16, buffer);
3266+ jerry_release_value (buffer);
3267+
3268+ ... // use the TypedArray
3269+
3270+ jerry_release_value (array);
3271+ }
3272+ ```
3273+
3274+ **See also**
3275+
3276+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3277+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3278+ - [jerry_release_value](#jerry_release_value)
3279+
3280+
3281+ ## jerry_create_typedarray_for_arraybuffer_sz
3282+
3283+ **Summary**
3284+
3285+ Create a jerry_value_t representing an TypedArray object using
3286+ an already existing ArrayBuffer object and by specifying the byteOffset, and length properties.
3287+
3288+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3289+ and element count can be specified.
3290+
3291+ The developer must ensure that the ArrayBuffer has the correct length for the given
3292+ type of TypedArray otherwise an error is generated.
3293+
3294+ The JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer, byteOffset, length)` where `%TypedArray%` is
3295+ one of the allowed TypedArray functions.
3296+
3297+ **Prototype**
3298+
3299+ ```c
3300+ jerry_value_t
3301+ jerry_create_typedarray_for_arraybuffer_sz (jerry_typedarray_type_t type_name,
3302+ const jerry_value_t arraybuffer,
3303+ jerry_length_t byte_offset,
3304+ jerry_length_t length);
3305+ ```
3306+
3307+ - `type_name` - type of TypedArray to create
3308+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3309+ - `byte_offset` - start offset to use for the ArrayBuffer
3310+ - `length` - number of elements to used from the ArrayBuffer (this is not the same as the byteLength)
3311+ - return value
3312+ - the new TypedArray as a `jerry_value_t`
3313+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3314+
3315+ **Example**
3316+
3317+ ```c
3318+ {
3319+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3320+ jerry_value_t array = jerry_create_typedarray_for_arraybuffer_sz (JERRY_TYPEDARRAY_UINT16, buffer, 4, 10);
3321+ jerry_release_value (buffer);
3322+
3323+ ... // use the TypedArray
3324+
3325+ jerry_release_value (array);
3326+ }
3327+ ```
3328+
3329+ **See also**
3330+
3331+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3332+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3333+ - [jerry_release_value](#jerry_release_value)
3334+
3335+
31323336## jerry_create_undefined
31333337
31343338**Summary**
@@ -5123,3 +5327,134 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
51235327**See also**
51245328
51255329- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external)
5330+
5331+
5332+ ## jerry_get_typedarray_type
5333+
5334+ **Summary**
5335+
5336+ Get the type of the TypedArray.
5337+
5338+ The returned type is one of the [jerry_typedarray_type_t](#jerry_typedarray_type_t)
5339+ enum value.
5340+
5341+ **Prototype**
5342+
5343+ ```c
5344+ jerry_typedarray_type_t
5345+ jerry_get_typedarray_type (jerry_value_t value);
5346+ ```
5347+
5348+ - `value` - TypedArray object to query for type.
5349+ - return
5350+ - the type of the TypedArray
5351+ - JERRY_TYPEDARRAY_INVALID if the object was not a TypedArray
5352+
5353+ **Example**
5354+
5355+ ```c
5356+ {
5357+ jerry_typedarray_type_t expected_type = JERRY_TYPEDARRAY_UINT32;
5358+ jerry_value_t typedarray = jerry_create_typedarray (expected_klass, 25);
5359+
5360+ jerry_typedarray_type_t type = jerry_get_typedarray_type (typedarray);
5361+
5362+ // 'type' is now JERRY_TYPEDARRAY_UINT32
5363+
5364+ jerry_release_value (typedarray);
5365+ }
5366+ ```
5367+
5368+ **See also**
5369+
5370+ - [jerry_create_typedarray](#jerry_create_typedarray)
5371+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
5372+
5373+
5374+ ## jerry_get_typedarray_length
5375+
5376+ **Summary**
5377+
5378+ Get the element count of the TypedArray as specified during creation.
5379+
5380+ This is not the same as the byteLength property of a TypedArray object.
5381+
5382+ **Prototype**
5383+
5384+ ```
5385+ jerry_length_t
5386+ jerry_get_typedarray_length (jerry_value_t value);
5387+ ```
5388+
5389+ - `value` - TypedArray object to query
5390+ - return
5391+ - length (element count) of the TypedArray object
5392+ - 0 if the object is not a TypedArray
5393+
5394+ **Example**
5395+
5396+ ```c
5397+ {
5398+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT32, 21);
5399+
5400+ jerry_length_t element_count = jerry_get_typedarray_length (array);
5401+
5402+ // element_count is now 21.
5403+
5404+ jerry_release_value (array);
5405+ }
5406+ ```
5407+
5408+ **See also**
5409+
5410+ - [jerry_create_typedarray](#jerry_create_typedarray)
5411+
5412+
5413+ ## jerry_get_typedarray_buffer
5414+
5415+ **Summary**
5416+
5417+ Get the ArrayBuffer object used by a TypedArray object.
5418+ Additionally returns the byteLength and byteOffset properties
5419+ of the TypedArray object.
5420+
5421+ For the returned ArrayBuffer the [jerry_release_value](#jerry_release_value)
5422+ must be called.
5423+
5424+ **Prototype**
5425+
5426+ ```c
5427+ jerry_value_t jerry_get_typedarray_buffer (jerry_value_t value,
5428+ jerry_length_t *byteOffset,
5429+ jerry_length_t *byteLength);
5430+ ```
5431+
5432+ - `value` - TypedArray to get the ArrayBuffer from
5433+ - `byteOffset` - (Optional) returns the start offset of the ArrayBuffer for the TypedArray
5434+ - `byteLength` - (Optional) returns the number of bytes used from the ArrayBuffer for the TypedArray
5435+ - return
5436+ - TypedArray object's underlying ArrayBuffer object
5437+ - TypeError if the `value` is not a TypedArray object
5438+
5439+ **Example**
5440+
5441+ ```c
5442+ {
5443+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT16, 11);
5444+
5445+ jerry_length_t byteLength = 0;
5446+ jerry_length_t byteOffset = 0;
5447+ jerry_value_t buffer = jerry_get_typedarray_buffer (array, &byteOffset, &byteLength);
5448+
5449+ // buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it
5450+ // byteLength is 11 * 2 (2 as the TypedArray stores Int16 that is 2 byte elements)
5451+ // byteOffset is 0
5452+
5453+ jerry_release_value (buffer);
5454+ jerry_release_value (array);
5455+ }
5456+ ```
5457+
5458+ **See also**
5459+
5460+ - [jerry_create_typedarray](#jerry_create_typedarray)
0 commit comments