Add ArrayBuffer detach operations (#3208)

JerryScript-DCO-1.0-Signed-off-by: legendecas legendecas@gmail.com
This commit is contained in:
legendecas
2019-10-16 22:41:27 +08:00
committed by Dániel Bátyai
parent 09c5d98e25
commit 2e86bdae6f
11 changed files with 375 additions and 2 deletions
+79
View File
@@ -7397,6 +7397,85 @@ jerry_get_arraybuffer_pointer (const jerry_value_t value);
- [jerry_create_arraybuffer_external](#jerry_create_arraybuffer_external)
## jerry_is_arraybuffer_detachable
**Summary**
Get if the ArrayBuffer is detachable.
**Prototype**
```c
jerry_value_t
jerry_is_arraybuffer_detachable (const jerry_value_t value);
```
- `value` - ArrayBuffer to be detached
- return
- boolean value if success
- Error otherwise
**Example**
```c
{
// create the ArrayBuffer
jerry_value_t buffer = jerry_create_arraybuffer (16);
jerry_value_t res = jerry_is_arraybuffer_detachable (buffer);
bool is_detachable = jerry_get_boolean_value (res);
// release buffer as it is not needed after this point
jerry_release_value (res);
jerry_release_value (buffer);
}
```
**See also**
- [jerry_detach_arraybuffer](#jerry_detach_arraybuffer)
## jerry_detach_arraybuffer
**Summary**
Detach the underlying data block from ArrayBuffer and set its bytelength to 0.
This operation requires the ArrayBuffer to be external that created by
`jerry_create_arraybuffer_external`.
**Prototype**
```c
jerry_value_t
jerry_detach_arraybuffer (const jerry_value_t value);
```
- `value` - ArrayBuffer to be detached
- return
- null value if success
- Error otherwise
**Example**
```c
{
uint8_t buf[1];
jerry_size_t length = 1;
// create the ArrayBuffer
jerry_value_t buffer = jerry_create_arraybuffer (length, buf, NULL);
jerry_value_t res = jerry_detach_arraybuffer (buffer);
// release buffer as it is not needed after this point
jerry_release_value (res);
jerry_release_value (buffer);
}
```
**See also**
- [jerry_is_arraybuffer_detachable](#jerry_is_arraybuffer_detachable)
## jerry_get_dataview_buffer