Skip to content

Commit b1b42dd

Browse files
committed
Implement DataView builtin
New API functions: - jerry_create_dataview - jerry_value_is_dataview - jerry_get_dataview_buffer - jerry_get_dataview_byte_offset - jerry_get_dataview_byte_length JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik [email protected]
1 parent 4b9fee1 commit b1b42dd

23 files changed

+1715
-15
lines changed

docs/02.API-REFERENCE.md

Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ Possible compile time enabled feature types:
6363
- JERRY_FEATURE_LINE_INFO - line info available
6464
- JERRY_FEATURE_LOGGING - logging
6565
- JERRY_FEATURE_SYMBOL - symbol support
66+
- JERRY_FEATURE_DATAVIEW - DataView support
6667

6768
## jerry_regexp_flags_t
6869

@@ -1296,6 +1297,56 @@ jerry_value_is_constructor (const jerry_value_t value)
12961297

12971298
- [jerry_release_value](#jerry_release_value)
12981299

1300+
## jerry_value_is_dataview
1301+
1302+
**Summary**
1303+
1304+
Returns whether the given `jerry_value_t` is a DataView object value.
1305+
1306+
**Prototype**
1307+
1308+
```c
1309+
bool
1310+
jerry_value_is_dataview (const jerry_value_t value)
1311+
```
1312+
1313+
- `value` - API value
1314+
- return value
1315+
- true, if the given `jerry_value_t` is a DataView object
1316+
- false, otherwise
1317+
1318+
**Example**
1319+
1320+
[doctest]: # ()
1321+
1322+
```c
1323+
#include "jerryscript.h"
1324+
1325+
int
1326+
main (void)
1327+
{
1328+
jerry_init (JERRY_INIT_EMPTY);
1329+
1330+
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
1331+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
1332+
1333+
if (jerry_value_is_dataview (dataview))
1334+
{
1335+
// usage of dataview
1336+
}
1337+
1338+
jerry_release_value (dataview);
1339+
jerry_release_value (arraybuffer);
1340+
1341+
jerry_cleanup ();
1342+
}
1343+
```
1344+
1345+
**See also**
1346+
1347+
- [jerry_release_value](#jerry_release_value)
1348+
1349+
12991350
## jerry_value_is_error
13001351

13011352
**Summary**
@@ -3246,6 +3297,60 @@ jerry_create_error_sz (jerry_error_t error_type,
32463297
- [jerry_create_error](#jerry_create_error)
32473298

32483299

3300+
## jerry_create_dataview
3301+
3302+
**Summary**
3303+
3304+
Create new JavaScript DataView object.
3305+
3306+
*Note*: This API depends on the ES2015-subset profile.
3307+
3308+
**Prototype**
3309+
3310+
```c
3311+
jerry_value_t
3312+
jerry_create_dataview (const jerry_value_t array_buffer,
3313+
const jerry_length_t byte_offset,
3314+
const jerry_length_t byte_length)
3315+
```
3316+
3317+
- `array_buffer` - arrayBuffer to create DataView from
3318+
- `byte_offset` - offset in bytes, to the first byte in the buffer
3319+
- `byte_length` - number of elements in the byte array
3320+
- return value
3321+
- value of the constructed DataView object - if success
3322+
- created error - otherwise
3323+
3324+
**Example**
3325+
3326+
[doctest]: # ()
3327+
3328+
```c
3329+
#include "jerryscript.h"
3330+
3331+
int
3332+
main (void)
3333+
{
3334+
jerry_init (JERRY_INIT_EMPTY);
3335+
3336+
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
3337+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
3338+
3339+
// usage of dataview
3340+
3341+
jerry_release_value (dataview);
3342+
jerry_release_value (arraybuffer);
3343+
3344+
jerry_cleanup ();
3345+
}
3346+
```
3347+
3348+
**See also**
3349+
3350+
- [jerry_value_is_dataview](#jerry_value_is_dataview)
3351+
- [jerry_release_value](#jerry_release_value)
3352+
3353+
32493354
## jerry_create_external_function
32503355

32513356
**Summary**
@@ -6120,6 +6225,152 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
61206225
- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external)
61216226

61226227

6228+
## jerry_get_dataview_buffer
6229+
6230+
**Summary**
6231+
6232+
Get the ArrayBuffer internal property of the DataView object.
6233+
6234+
**Prototype**
6235+
6236+
```c
6237+
jerry_value_t
6238+
jerry_get_dataview_buffer (const jerry_value_t value);
6239+
```
6240+
6241+
- `value` - DataView object.
6242+
- return value
6243+
- the ArrayBuffer internal property - if success
6244+
- created error - otherwise
6245+
6246+
**Example**
6247+
6248+
[doctest]: # ()
6249+
6250+
```c
6251+
#include "jerryscript.h"
6252+
6253+
int
6254+
main (void)
6255+
{
6256+
jerry_init (JERRY_INIT_EMPTY);
6257+
6258+
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
6259+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
6260+
jerry_value_t internal_buffer = jerry_get_dataview_buffer (dataview);
6261+
6262+
// usage of internal_buffer
6263+
6264+
jerry_release_value (internal_buffer);
6265+
jerry_release_value (dataview);
6266+
jerry_release_value (arraybuffer);
6267+
6268+
jerry_cleanup ();
6269+
}
6270+
```
6271+
6272+
**See also**
6273+
6274+
- [jerry_create_dataview](#jerry_create_dataview)
6275+
6276+
6277+
## jerry_get_dataview_byte_offset
6278+
6279+
**Summary**
6280+
6281+
Get the ByteOffset internal property of the DataView object.
6282+
6283+
**Prototype**
6284+
6285+
```c
6286+
jerry_value_t
6287+
jerry_get_dataview_byte_offset (const jerry_value_t value);
6288+
```
6289+
6290+
- `value` - DataView object.
6291+
- return value
6292+
- the ByteOffset internal property - if success
6293+
- created error - otherwise
6294+
6295+
**Example**
6296+
6297+
[doctest]: # ()
6298+
6299+
```c
6300+
#include "jerryscript.h"
6301+
6302+
int
6303+
main (void)
6304+
{
6305+
jerry_init (JERRY_INIT_EMPTY);
6306+
6307+
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
6308+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
6309+
jerry_value_t byte_offset = jerry_get_dataview_byte_offset (dataview);
6310+
6311+
// usage of byte_offset
6312+
6313+
jerry_release_value (byte_offset);
6314+
jerry_release_value (dataview);
6315+
jerry_release_value (arraybuffer);
6316+
6317+
jerry_cleanup ();
6318+
}
6319+
```
6320+
6321+
**See also**
6322+
6323+
- [jerry_create_dataview](#jerry_create_dataview)
6324+
6325+
## jerry_get_dataview_byte_offset
6326+
6327+
**Summary**
6328+
6329+
Get the ByteLength internal property of the DataView object.
6330+
6331+
**Prototype**
6332+
6333+
```c
6334+
jerry_value_t
6335+
jerry_get_dataview_byte_length (const jerry_value_t value);
6336+
```
6337+
6338+
- `value` - DataView object.
6339+
- return value
6340+
- the ByteLength internal property - if success
6341+
- created error - otherwise
6342+
6343+
**Example**
6344+
6345+
[doctest]: # ()
6346+
6347+
```c
6348+
#include "jerryscript.h"
6349+
6350+
int
6351+
main (void)
6352+
{
6353+
jerry_init (JERRY_INIT_EMPTY);
6354+
6355+
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
6356+
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
6357+
jerry_value_t byte_length = jerry_get_dataview_byte_length (dataview);
6358+
6359+
// usage of byte_length
6360+
6361+
jerry_release_value (byte_length);
6362+
jerry_release_value (dataview);
6363+
jerry_release_value (arraybuffer);
6364+
6365+
jerry_cleanup ();
6366+
}
6367+
```
6368+
6369+
**See also**
6370+
6371+
- [jerry_create_dataview](#jerry_create_dataview)
6372+
6373+
61236374
## jerry_get_typedarray_type
61246375

61256376
**Summary**

0 commit comments

Comments
 (0)