@@ -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**
@@ -3036,6 +3095,151 @@ jerry_create_string_sz (const jerry_char_t *str_p,
30363095- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8)
30373096
30383097
3098+ ## jerry_create_typedarray
3099+
3100+ **Summary**
3101+
3102+ Create a jerry_value_t representing an TypedArray object.
3103+
3104+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3105+ and element count can be specified.
3106+
3107+ **Prototype**
3108+
3109+ ```c
3110+ jerry_value_t
3111+ jerry_create_typedarray (jerry_typedarray_type_t type_name, jerry_length_t item_count);
3112+ ```
3113+
3114+ - `type_name` - type of TypedArray to create
3115+ - `item_count` - number of items in the new TypedArray
3116+ - return value - the new TypedArray as a `jerry_value_t`
3117+
3118+ **Example**
3119+
3120+ ```c
3121+ {
3122+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_UINT16, 15);
3123+
3124+ ... // use the TypedArray
3125+
3126+ jerry_release_value (array);
3127+ }
3128+ ```
3129+
3130+ **See also**
3131+
3132+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3133+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3134+ - [jerry_release_value](#jerry_release_value)
3135+
3136+
3137+ ## jerry_create_typedarray_for_arraybuffer
3138+
3139+ **Summary**
3140+
3141+ Create a jerry_value_t representing an TypedArray object using
3142+ an already existing ArrayBuffer object.
3143+
3144+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3145+ and element count can be specified.
3146+
3147+ The developer must ensure that the ArrayBuffer has the correct length for the given
3148+ type of TypedArray otherwise an error is generated.
3149+
3150+ The JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer)` where `%TypedArray%` is
3151+ one of the allowed TypedArray functions.
3152+
3153+ **Prototype**
3154+
3155+ ```c
3156+ jerry_value_t
3157+ jerry_create_typedarray_for_arraybuffer (jerry_typedarray_type_t type_name,
3158+ const jerry_value_t arraybuffer);
3159+ ```
3160+
3161+ - `type_name` - type of TypedArray to create
3162+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3163+ - return value
3164+ - the new TypedArray as a `jerry_value_t`
3165+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3166+
3167+ **Example**
3168+
3169+ ```c
3170+ {
3171+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3172+ jerry_value_t array = jerry_create_typedarray_for_arraybuffer (JERRY_TYPEDARRAY_UINT16, buffer);
3173+ jerry_release_value (buffer);
3174+
3175+ ... // use the TypedArray
3176+
3177+ jerry_release_value (array);
3178+ }
3179+ ```
3180+
3181+ **See also**
3182+
3183+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3184+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3185+ - [jerry_release_value](#jerry_release_value)
3186+
3187+
3188+ ## jerry_create_typedarray_for_arraybuffer_sz
3189+
3190+ **Summary**
3191+
3192+ Create a jerry_value_t representing an TypedArray object using
3193+ an already existing ArrayBuffer object and by specifying the byteOffset, and length properties.
3194+
3195+ For the new object the type of the TypedArray (see: [jerry_typedarray_type_t](#jerry_typedarray_type_t))
3196+ and element count can be specified.
3197+
3198+ The developer must ensure that the ArrayBuffer has the correct length for the given
3199+ type of TypedArray otherwise an error is generated.
3200+
3201+ The JavaScript equivalent of this function is: `new %TypedArray%(arraybuffer, byteOffset, length)` where `%TypedArray%` is
3202+ one of the allowed TypedArray functions.
3203+
3204+ **Prototype**
3205+
3206+ ```c
3207+ jerry_value_t
3208+ jerry_create_typedarray_for_arraybuffer_sz (jerry_typedarray_type_t type_name,
3209+ const jerry_value_t arraybuffer,
3210+ jerry_length_t byte_offset,
3211+ jerry_length_t length);
3212+ ```
3213+
3214+ - `type_name` - type of TypedArray to create
3215+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3216+ - `byte_offset` - start offset to use for the ArrayBuffer
3217+ - `length` - number of elements to used from the ArrayBuffer (this is not the same as the byteLength)
3218+ - return value
3219+ - the new TypedArray as a `jerry_value_t`
3220+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3221+
3222+ **Example**
3223+
3224+ ```c
3225+ {
3226+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3227+ jerry_value_t array = jerry_create_typedarray_for_arraybuffer_sz (JERRY_TYPEDARRAY_UINT16, buffer, 4, 10);
3228+ jerry_release_value (buffer);
3229+
3230+ ... // use the TypedArray
3231+
3232+ jerry_release_value (array);
3233+ }
3234+ ```
3235+
3236+ **See also**
3237+
3238+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
3239+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3240+ - [jerry_release_value](#jerry_release_value)
3241+
3242+
30393243## jerry_create_undefined
30403244
30413245**Summary**
@@ -5030,3 +5234,134 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
50305234**See also**
50315235
50325236- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external)
5237+
5238+
5239+ ## jerry_get_typedarray_type
5240+
5241+ **Summary**
5242+
5243+ Get the type of the TypedArray.
5244+
5245+ The returned type is one of the [jerry_typedarray_type_t](#jerry_typedarray_type_t)
5246+ enum value.
5247+
5248+ **Prototype**
5249+
5250+ ```c
5251+ jerry_typedarray_type_t
5252+ jerry_get_typedarray_type (jerry_value_t value);
5253+ ```
5254+
5255+ - `value` - TypedArray object to query for type.
5256+ - return
5257+ - the type of the TypedArray
5258+ - JERRY_TYPEDARRAY_INVALID if the object was not a TypedArray
5259+
5260+ **Example**
5261+
5262+ ```c
5263+ {
5264+ jerry_typedarray_type_t expected_type = JERRY_TYPEDARRAY_UINT32;
5265+ jerry_value_t typedarray = jerry_create_typedarray (expected_klass, 25);
5266+
5267+ jerry_typedarray_type_t type = jerry_get_typedarray_type (typedarray);
5268+
5269+ // 'type' is now JERRY_TYPEDARRAY_UINT32
5270+
5271+ jerry_release_value (typedarray);
5272+ }
5273+ ```
5274+
5275+ **See also**
5276+
5277+ - [jerry_create_typedarray](#jerry_create_typedarray)
5278+ - [jerry_typedarray_type_t](#jerry_typedarray_type_t)
5279+
5280+
5281+ ## jerry_get_typedarray_length
5282+
5283+ **Summary**
5284+
5285+ Get the element count of the TypedArray as specified during creation.
5286+
5287+ This is not the same as the byteLength property of a TypedArray object.
5288+
5289+ **Prototype**
5290+
5291+ ```
5292+ jerry_length_t
5293+ jerry_get_typedarray_length (jerry_value_t value);
5294+ ```
5295+
5296+ - `value` - TypedArray object to query
5297+ - return
5298+ - length (element count) of the TypedArray object
5299+ - 0 if the object is not a TypedArray
5300+
5301+ **Example**
5302+
5303+ ```c
5304+ {
5305+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT32, 21);
5306+
5307+ jerry_length_t element_count = jerry_get_typedarray_length (array);
5308+
5309+ // element_count is now 21.
5310+
5311+ jerry_release_value (array);
5312+ }
5313+ ```
5314+
5315+ **See also**
5316+
5317+ - [jerry_create_typedarray](#jerry_create_typedarray)
5318+
5319+
5320+ ## jerry_get_typedarray_buffer
5321+
5322+ **Summary**
5323+
5324+ Get the ArrayBuffer object used by a TypedArray object.
5325+ Additionally returns the byteLength and byteOffset properties
5326+ of the TypedArray object.
5327+
5328+ For the returned ArrayBuffer the [jerry_release_value](#jerry_release_value)
5329+ must be called.
5330+
5331+ **Prototype**
5332+
5333+ ```c
5334+ jerry_value_t jerry_get_typedarray_buffer (jerry_value_t value,
5335+ jerry_length_t *byteOffset,
5336+ jerry_length_t *byteLength);
5337+ ```
5338+
5339+ - `value` - TypedArray to get the ArrayBuffer from
5340+ - `byteOffset` - (Optional) returns the start offset of the ArrayBuffer for the TypedArray
5341+ - `byteLength` - (Optional) returns the number of bytes used from the ArrayBuffer for the TypedArray
5342+ - return
5343+ - TypedArray object's underlying ArrayBuffer object
5344+ - TypeError if the `value` is not a TypedArray object
5345+
5346+ **Example**
5347+
5348+ ```c
5349+ {
5350+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT16, 11);
5351+
5352+ jerry_length_t byteLength = 0;
5353+ jerry_length_t byteOffset = 0;
5354+ jerry_value_t buffer = jerry_get_typedarray_buffer (array, &byteOffset, &byteLength);
5355+
5356+ // buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it
5357+ // byteLength is 11 * 2 (2 as the TypedArray stores Int16 that is 2 byte elements)
5358+ // byteOffset is 0
5359+
5360+ jerry_release_value (buffer);
5361+ jerry_release_value (array);
5362+ }
5363+ ```
5364+
5365+ **See also**
5366+
5367+ - [jerry_create_typedarray](#jerry_create_typedarray)
0 commit comments