Implement DataView builtin (#2804)
New API functions: - jerry_create_dataview - jerry_value_is_dataview - jerry_get_dataview_buffer JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
committed by
László Langó
parent
b3f4aa6816
commit
5c72d995e4
@@ -63,6 +63,7 @@ Possible compile time enabled feature types:
|
||||
- JERRY_FEATURE_LINE_INFO - line info available
|
||||
- JERRY_FEATURE_LOGGING - logging
|
||||
- JERRY_FEATURE_SYMBOL - symbol support
|
||||
- JERRY_FEATURE_DATAVIEW - DataView support
|
||||
|
||||
## jerry_regexp_flags_t
|
||||
|
||||
@@ -1296,6 +1297,56 @@ jerry_value_is_constructor (const jerry_value_t value)
|
||||
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
## jerry_value_is_dataview
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns whether the given `jerry_value_t` is a DataView object value.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
bool
|
||||
jerry_value_is_dataview (const jerry_value_t value)
|
||||
```
|
||||
|
||||
- `value` - API value
|
||||
- return value
|
||||
- true, if the given `jerry_value_t` is a DataView object
|
||||
- false, otherwise
|
||||
|
||||
**Example**
|
||||
|
||||
[doctest]: # ()
|
||||
|
||||
```c
|
||||
#include "jerryscript.h"
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
|
||||
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
|
||||
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
|
||||
|
||||
if (jerry_value_is_dataview (dataview))
|
||||
{
|
||||
// usage of dataview
|
||||
}
|
||||
|
||||
jerry_release_value (dataview);
|
||||
jerry_release_value (arraybuffer);
|
||||
|
||||
jerry_cleanup ();
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
|
||||
## jerry_value_is_error
|
||||
|
||||
**Summary**
|
||||
@@ -3246,6 +3297,62 @@ jerry_create_error_sz (jerry_error_t error_type,
|
||||
- [jerry_create_error](#jerry_create_error)
|
||||
|
||||
|
||||
## jerry_create_dataview
|
||||
|
||||
**Summary**
|
||||
|
||||
Create new JavaScript DataView object.
|
||||
|
||||
*Note*: This API depends on the ES2015-subset profile.
|
||||
*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it
|
||||
is no longer needed.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_value_t
|
||||
jerry_create_dataview (const jerry_value_t array_buffer,
|
||||
const jerry_length_t byte_offset,
|
||||
const jerry_length_t byte_length)
|
||||
```
|
||||
|
||||
- `array_buffer` - arrayBuffer to create DataView from
|
||||
- `byte_offset` - offset in bytes, to the first byte in the buffer
|
||||
- `byte_length` - number of elements in the byte array
|
||||
- return value
|
||||
- value of the constructed DataView object - if success
|
||||
- created error - otherwise
|
||||
|
||||
**Example**
|
||||
|
||||
[doctest]: # ()
|
||||
|
||||
```c
|
||||
#include "jerryscript.h"
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
|
||||
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
|
||||
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
|
||||
|
||||
// usage of dataview
|
||||
|
||||
jerry_release_value (dataview);
|
||||
jerry_release_value (arraybuffer);
|
||||
|
||||
jerry_cleanup ();
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_value_is_dataview](#jerry_value_is_dataview)
|
||||
- [jerry_create_arraybuffer](#jerry_create_arraybuffer)
|
||||
|
||||
|
||||
## jerry_create_external_function
|
||||
|
||||
**Summary**
|
||||
@@ -6254,6 +6361,70 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
|
||||
- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external)
|
||||
|
||||
|
||||
## jerry_get_dataview_buffer
|
||||
|
||||
**Summary**
|
||||
|
||||
Get the ArrayBuffer object used by a DataView object.
|
||||
Additionally returns the byteLength and byteOffset properties
|
||||
of the DataView object.
|
||||
|
||||
For the returned ArrayBuffer the [jerry_release_value](#jerry_release_value)
|
||||
must be called when it is no longer needed.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_value_t
|
||||
jerry_get_dataview_buffer (const jerry_value_t value,
|
||||
jerry_length_t *byteOffset,
|
||||
jerry_length_t *byteLength);
|
||||
```
|
||||
|
||||
- `value` - DataView to get the ArrayBuffer from
|
||||
- `byteOffset` - (Optional) returns the start offset of the ArrayBuffer for the DataView
|
||||
- `byteLength` - (Optional) returns the number of bytes used from the ArrayBuffer for the DataView
|
||||
- return
|
||||
- DataView object's underlying ArrayBuffer object
|
||||
- TypeError if the `value` is not a DataView object
|
||||
|
||||
**Example**
|
||||
|
||||
[doctest]: # ()
|
||||
|
||||
```c
|
||||
#include "jerryscript.h"
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
|
||||
jerry_value_t arraybuffer = jerry_create_arraybuffer (16);
|
||||
jerry_value_t dataview = jerry_create_dataview (arraybuffer, 0, 16);
|
||||
jerry_length_t byteOffset = 0;
|
||||
jerry_length_t byteLength = 0;
|
||||
jerry_value_t buffer = jerry_get_dataview_buffer (dataview, &byteOffset, &byteLength);
|
||||
|
||||
// buffer is an ArrayBuffer object and ArrayBuffer operations can be performed on it
|
||||
// byteOffset is 0
|
||||
// byteLength is 16
|
||||
|
||||
// usage of buffer
|
||||
|
||||
jerry_release_value (buffer);
|
||||
jerry_release_value (dataview);
|
||||
jerry_release_value (arraybuffer);
|
||||
|
||||
jerry_cleanup ();
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_create_dataview](#jerry_create_dataview)
|
||||
|
||||
|
||||
## jerry_get_typedarray_type
|
||||
|
||||
**Summary**
|
||||
|
||||
Reference in New Issue
Block a user