@@ -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_class_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_UNKNOWN - represents an invalid TypedArray
314+
315+ API functions can return the `JERRY_TYPEDARRAY_UNKNOWN` value if the
316+ TypedArray support is not in the engine.
317+
318+
299319# General engine functions
300320
301321## jerry_init
@@ -1346,6 +1366,45 @@ jerry_value_is_string (const jerry_value_t value)
13461366- [jerry_release_value](#jerry_release_value)
13471367
13481368
1369+ ## jerry_value_is_typedarray
1370+
1371+ **Summary**
1372+
1373+ Checks whether the given `jerry_value_t` is a TypedArray object or not.
1374+
1375+ **Prototype**
1376+
1377+ ```c
1378+ bool
1379+ jerry_value_is_typedbuffer (const jerry_value_t value)
1380+ ```
1381+
1382+ - `value` - object to check
1383+ - return value
1384+ - true, if the given `jerry_value_t` is a TypedArray object.
1385+ - false, otherwise
1386+
1387+ **Example**
1388+
1389+ ```c
1390+ {
1391+ jerry_value_t value;
1392+ ... // create or acquire value
1393+
1394+ if (jerry_value_is_typedarray (value))
1395+ {
1396+ ...
1397+ }
1398+
1399+ jerry_release_value (value);
1400+ }
1401+ ```
1402+
1403+ **See also**
1404+
1405+ - [jerry_create_typedarray](#jerry_create_typedarray)
1406+
1407+
13491408## jerry_value_is_undefined
13501409
13511410**Summary**
@@ -2985,6 +3044,150 @@ jerry_create_string_sz (const jerry_char_t *str_p,
29853044- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8)
29863045
29873046
3047+ ## jerry_create_typedarray
3048+
3049+ **Summary**
3050+
3051+ Create a jerry_value_t representing an TypedArray object.
3052+
3053+ For the new object the type of the TypedArray (see: [jerry_typedarray_class_t](#jerry_typedarray_class_t))
3054+ and element count can be specified.
3055+
3056+ **Prototype**
3057+
3058+ ```c
3059+ jerry_value_t
3060+ jerry_create_typedarray (jerry_typedarray_class_t class_name, jerry_length_t length);
3061+ ```
3062+
3063+ - `class_name` - type of TypedArray to create
3064+ - `length` - length of the new TypedArray
3065+ - return value - the new TypedArray as a `jerry_value_t`
3066+
3067+ **Example**
3068+
3069+ ```c
3070+ {
3071+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_UINT16, 15);
3072+
3073+ ... // use the TypedArray
3074+
3075+ jerry_release_value (array);
3076+ }
3077+ ```
3078+
3079+ **See also**
3080+
3081+ - [jerry_typedarray_class_t](#jerry_typedarray_class_t)
3082+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3083+ - [jerry_release_value](#jerry_release_value)
3084+
3085+
3086+ ## jerry_create_typedarray_with_arraybuffer
3087+
3088+ **Summary**
3089+
3090+ Create a jerry_value_t representing an TypedArray object using
3091+ an already exisint ArrayBuffer object.
3092+
3093+ For the new object the type of the TypedArray (see: [jerry_typedarray_class_t](#jerry_typedarray_class_t))
3094+ and element count can be specified.
3095+
3096+ The developer must ensure that the ArrayBuffer has the correct length for the given
3097+ type of TypedArray otherwise an error is generated.
3098+
3099+ The JavaScript equivalent of this function is: `new %TypedArray%(arrabuffer)` where `%TypedArray%` is
3100+ one of the allowed TypedArray functions.
3101+
3102+ **Prototype**
3103+
3104+ ```c
3105+ jerry_value_t
3106+ jerry_create_typedarray_with_arraybuffer (jerry_typedarray_class_t class_name, const jerry_value_t arraybuffer);
3107+ ```
3108+
3109+ - `class_name` - type of TypedArray to create
3110+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3111+ - return value
3112+ - the new TypedArray as a `jerry_value_t`
3113+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3114+
3115+ **Example**
3116+
3117+ ```c
3118+ {
3119+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3120+ jerry_value_t array = jerry_create_typedarray_with_arraybuffer (JERRY_TYPEDARRAY_UINT16, buffer);
3121+ jerry_release_value (buffer);
3122+
3123+ ... // use the TypedArray
3124+
3125+ jerry_release_value (array);
3126+ }
3127+ ```
3128+
3129+ **See also**
3130+
3131+ - [jerry_typedarray_class_t](#jerry_typedarray_class_t)
3132+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3133+ - [jerry_release_value](#jerry_release_value)
3134+
3135+
3136+ ## jerry_create_typedarray_with_arraybuffer_sz
3137+
3138+ **Summary**
3139+
3140+ Create a jerry_value_t representing an TypedArray object using
3141+ an already exisint ArrayBuffer object and by specifying the byteOffset, and length properties.
3142+
3143+ For the new object the type of the TypedArray (see: [jerry_typedarray_class_t](#jerry_typedarray_class_t))
3144+ and element count can be specified.
3145+
3146+ The developer must ensure that the ArrayBuffer has the correct length for the given
3147+ type of TypedArray otherwise an error is generated.
3148+
3149+ The JavaScript equivalent of this function is: `new %TypedArray%(arrabuffer, byteOffset, length)` where `%TypedArray%` is
3150+ one of the allowed TypedArray functions.
3151+
3152+ **Prototype**
3153+
3154+ ```c
3155+ jerry_value_t
3156+ jerry_create_typedarray_with_arraybuffer_sz (jerry_typedarray_class_t class_name,
3157+ const jerry_value_t arraybuffer,
3158+ jerry_length_t byte_offset,
3159+ jerry_length_t length);
3160+ ```
3161+
3162+ - `class_name` - type of TypedArray to create
3163+ - `arraybuffer` - the ArrayBuffer to use for the new TypedArray
3164+ - `byte_offset` - start offset to use for the ArrayBuffer
3165+ - `length` - number of elements to used from the ArrayBuffer (this is not the same as the byteLength)
3166+ - return value
3167+ - the new TypedArray as a `jerry_value_t`
3168+ - Error if the ArrayBuffer does not have enough space for the given type of TypedArray
3169+
3170+ **Example**
3171+
3172+ ```c
3173+ {
3174+ jerry_value_t buffer = jerry_create_array_buffer (12 * 2);
3175+ jerry_value_t array = jerry_create_typedarray_with_arraybuffer (JERRY_TYPEDARRAY_UINT16, buffer, 4, 10);
3176+ jerry_release_value (buffer);
3177+
3178+ ... // use the TypedArray
3179+
3180+ jerry_release_value (array);
3181+ }
3182+ ```
3183+
3184+ **See also**
3185+
3186+ - [jerry_typedarray_class_t](#jerry_typedarray_class_t)
3187+ - [jerry_value_is_typedarray](#jerry_value_is_typedarray)
3188+ - [jerry_release_value](#jerry_release_value)
3189+
3190+
29883191## jerry_create_undefined
29893192
29903193**Summary**
@@ -4921,3 +5124,133 @@ jerry_arraybuffer_write (const jerry_value_t value,
49215124- [jerry_create_arraybuffer](#jerry_create_arraybuffer)
49225125- [jerry_arraybuffer_write](#jerry_arraybuffer_write)
49235126- [jerry_get_arraybuffer_byte_length](#jerry_get_arraybuffer_byte_length)
5127+
5128+
5129+ ## jerry_get_typedarray_type
5130+
5131+ **Summary**
5132+
5133+ Get the type of the TypedArray.
5134+
5135+ The returned type is one of the [jerry_typedarray_class_t](#jerry_typedarray_class_t)
5136+ enum value.
5137+
5138+ **Prototype**
5139+
5140+ ```c
5141+ jerry_typedarray_class_t
5142+ jerry_get_typedarray_type (jerry_value_t value);
5143+ ```
5144+
5145+ - `value` - TypedArray object to query for type.
5146+ - return
5147+ - the type of the TypedArray
5148+ - JERRY_TYPEDARRAY_UNKNOWN if the object was not a TypedArray
5149+
5150+ **Example**
5151+
5152+ ```c
5153+ {
5154+ jerry_typedarray_class_t expected_klass = JERRY_TYPEDARRAY_UINT32;
5155+ jerry_value_t typedarray = jerry_create_typedarray (expected_klass, 25);
5156+
5157+ jerry_typedarray_class_t klass = jerry_get_typedarray_type (typedarray);
5158+
5159+ // klass is now JERRY_TYPEDARRAY_UINT32
5160+
5161+ jerry_release_value (typedarray);
5162+ }
5163+ ```
5164+
5165+ **See also**
5166+
5167+ - [jerry_create_typedarray](#jerry_create_typedarray)
5168+
5169+
5170+ ## jerry_get_typedarray_length
5171+
5172+ **Summary**
5173+
5174+ Get the element count of the TypedArray as specified during creation.
5175+
5176+ This is not the same as the byteLength property of a TypedArray object.
5177+
5178+ **Prototype**
5179+
5180+ ```c
5181+ jerry_length_t
5182+ jerry_get_typedarray_length (jerry_value_t value);
5183+ ```
5184+
5185+ - `value` - TypedArray object to query
5186+ - return
5187+ - length (element count) of the TypedArray object
5188+ - 0 if the object is not a TypedArray
5189+
5190+ **Example**
5191+
5192+ ```c
5193+ {
5194+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT32, 21);
5195+
5196+ jerry_length_t element_count = jerry_get_typedarray_length (array);
5197+
5198+ // element_count is now 21.
5199+
5200+ jerry_release_value (array);
5201+ }
5202+ ```
5203+
5204+ **See also**
5205+
5206+ - [jerry_create_typedarray](#jerry_create_typedarray)
5207+
5208+
5209+ ## jerry_get_typedarray_buffer
5210+
5211+ **Summary**
5212+
5213+ Get the ArrayBuffer object used by a TypedArray object.
5214+ Additionally returns the byteLength and byteOffset properties
5215+ of the TypedArray object.
5216+
5217+ For the returned ArrayBuffer the [jerry_release_value](#jerry_release_value)
5218+ must be called.
5219+
5220+ **Prototype**
5221+
5222+ ```c
5223+ jerry_value_t jerry_get_typedarray_buffer (jerry_value_t value,
5224+ jerry_length_t *byteOffset,
5225+ jerry_length_t *byteLength);
5226+ ```
5227+
5228+ - `value` - TypedArray to get the ArrayBuffer from
5229+ - `byteOffset` - start offset of the ArrayBuffer for the TypedArray
5230+ - `byteLength` - number of bytes used from the ArrayBuffer for the TypedArray
5231+ - return
5232+ - TypedArray object's underlying ArrayBuffer object
5233+ - TypeError if the `value` is not a TypedArray object
5234+
5235+ **Example**
5236+
5237+ ```c
5238+ {
5239+ jerry_value_t array = jerry_create_typedarray (JERRY_TYPEDARRAY_INT16, 11);
5240+
5241+ jerry_length_t byteLength = 0;
5242+ jerry_length_t byteOffset = 0;
5243+ jerry_value_t buffer = jerry_get_typedarray_buffer (array, &byteOffset, &byteLength);
5244+
5245+ // buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it
5246+ // byteLength is 11 * 2 (2 as the TypedArray stores Int16 that is 2 byte elements)
5247+ // byteOffset is 0
5248+
5249+ jerry_release_value (buffer);
5250+ jerry_release_value (array);
5251+ }
5252+ ```
5253+
5254+ **See also**
5255+
5256+ - [jerry_create_typedarray](#jerry_create_typedarray)
0 commit comments