@@ -296,6 +296,26 @@ typedef jerry_value_t (*jerry_vm_exec_stop_callback_t) (void *user_p);
296
296
- [jerry_set_vm_exec_stop_callback](#jerry_set_vm_exec_stop_callback)
297
297
298
298
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
+
299
319
# General engine functions
300
320
301
321
## jerry_init
@@ -1347,6 +1367,45 @@ jerry_value_is_string (const jerry_value_t value)
1347
1367
- [jerry_release_value](#jerry_release_value)
1348
1368
1349
1369
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
+
1350
1409
## jerry_value_is_undefined
1351
1410
1352
1411
**Summary**
@@ -3129,6 +3188,151 @@ jerry_create_string_sz (const jerry_char_t *str_p,
3129
3188
- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8)
3130
3189
3131
3190
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
+
3132
3336
## jerry_create_undefined
3133
3337
3134
3338
**Summary**
@@ -5123,3 +5327,134 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
5123
5327
**See also**
5124
5328
5125
5329
- [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