@@ -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**
@@ -3036,6 +3095,151 @@ jerry_create_string_sz (const jerry_char_t *str_p,
3036
3095
- [jerry_create_string_from_utf8](#jerry_create_string_from_utf8)
3037
3096
3038
3097
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
+
3039
3243
## jerry_create_undefined
3040
3244
3041
3245
**Summary**
@@ -5030,3 +5234,134 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
5030
5234
**See also**
5031
5235
5032
5236
- [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