@@ -993,6 +993,44 @@ jerry_value_is_array (const jerry_value_t value)
993993
994994- [jerry_release_value](#jerry_release_value)
995995
996+ ## jerry_value_is_arraybuffer
997+
998+ **Summary**
999+
1000+ Returns whether the given `jerry_value_t` is an ArrayBuffer object.
1001+
1002+ **Prototype**
1003+
1004+ ```c
1005+ bool
1006+ jerry_value_is_arraybuffer (const jerry_value_t value)
1007+ ```
1008+
1009+ - `value` - api value
1010+ - return value
1011+ - true, if the given `jerry_value_t` is an ArrayBuffer object.
1012+ - false, otherwise
1013+
1014+ **Example**
1015+
1016+ ```c
1017+ {
1018+ jerry_value_t value;
1019+ ... // create or acquire value
1020+
1021+ if (jerry_value_is_arraybuffer (value))
1022+ {
1023+ ...
1024+ }
1025+
1026+ jerry_release_value (value);
1027+ }
1028+ ```
1029+
1030+ **See also**
1031+
1032+ - [jerry_create_arraybuffer](#jerry_create_arraybuffer)
1033+
9961034
9971035## jerry_value_is_boolean
9981036
@@ -2391,6 +2429,42 @@ jerry_create_array (uint32_t size);
23912429- [jerry_get_property_by_index](#jerry_get_property_by_index)
23922430
23932431
2432+ ## jerry_create_arraybuffer
2433+
2434+ **Summary**
2435+
2436+ Create a jerry_value_t representing an ArrayBuffer object.
2437+
2438+ **Prototype**
2439+
2440+ ```c
2441+ jerry_value_t
2442+ jerry_create_arraybuffer (jerry_length_t size);
2443+ ```
2444+
2445+ - `size` - size of the ArrayBuffer to create
2446+ - return value - the new ArrayBuffer as a `jerry_value_t`
2447+
2448+ **Example**
2449+
2450+ ```c
2451+ {
2452+ jerry_value_t buffer_value = jerry_create_arraybuffer (15);
2453+
2454+ ... // use the ArrayBuffer
2455+
2456+ jerry_release_value (buffer_value);
2457+ }
2458+ ```
2459+
2460+ **See also**
2461+
2462+ - [jerry_arraybuffer_read](#jerry_arraybuffer_read)
2463+ - [jerry_arraybuffer_write](#jerry_arraybuffer_write)
2464+ - [jerry_value_is_arraybuffer](#jerry_value_is_arraybuffer)
2465+ - [jerry_release_value](#jerry_release_value)
2466+
2467+
23942468## jerry_create_boolean
23952469
23962470**Summary**
@@ -4679,3 +4753,171 @@ main (void)
46794753- [jerry_parse](#jerry_parse)
46804754- [jerry_run](#jerry_run)
46814755- [jerry_vm_exec_stop_callback_t](#jerry_vm_exec_stop_callback_t)
4756+
4757+
4758+ # ArrayBuffer and TypedArray functions
4759+
4760+ ## jerry_get_arraybuffer_byte_length
4761+
4762+ **Summary**
4763+
4764+ Get the byte length property of the ArrayBuffer. This is the
4765+ same value which was passed to the ArrayBuffer constructor call.
4766+
4767+ **Prototype**
4768+
4769+ ```c
4770+ jerry_length_t
4771+ jerry_get_arraybuffer_byte_length (const jerry_value_t value);
4772+ ```
4773+
4774+ - `value` - ArrayBuffer object
4775+ - return value
4776+ - size of the ArrayBuffer in bytes
4777+ - 0 if the `value` parameter is not an ArrayBuffer
4778+
4779+ **Example**
4780+
4781+ ```c
4782+ {
4783+ jerry_value_t buffer = jerry_create_arraybuffer (15);
4784+ jerry_length_t length = jerry_get_arraybuffer_byte_length (buffer);
4785+ // length should be 15
4786+
4787+ jerry_release_value (buffer);
4788+ }
4789+ ```
4790+
4791+ **See also**
4792+ - [jerry_create_arraybuffer](#jerry_create_arraybuffer)
4793+
4794+
4795+ ## jerry_arraybuffer_read
4796+
4797+ **Summary**
4798+
4799+ Copy the portion of the ArrayBuffer into a user provided buffer.
4800+ The start offset of the read operation can be specified.
4801+
4802+ The number bytes to be read can be specified via the `buf_size`
4803+ parameter. It is not possible to read more than the length of
4804+ the ArrayBuffer.
4805+
4806+ Function returns the number of bytes read from the ArrayBuffer
4807+ (and written to the buffer parameter). This value is
4808+ calculated in the following way: `min(array buffer length - offset, buf_size)`.
4809+
4810+ **Prototype**
4811+
4812+ ```c
4813+ jerry_length_t
4814+ jerry_arraybuffer_read (const jerry_value_t value,
4815+ jerry_length_t offset,
4816+ uint8_t *buf_p,
4817+ jerry_length_t buf_size);
4818+ ```
4819+
4820+ - `value` - ArrayBuffer to read from
4821+ - `offset` - start offset of the read operation
4822+ - `buf_p` - buffer to read the data to
4823+ - `buf_size` - maximum number of bytes to read into the buffer
4824+ - return value
4825+ - number of bytes written into the buffer (read from the ArrayBuffer)
4826+ - 0 if the `value` is not an ArrayBuffer object
4827+ - 0 if the `buf_size` is zero or there is nothing to read
4828+
4829+ **Example**
4830+
4831+ ```c
4832+ {
4833+ uint8_t data[20];
4834+ jerry_value_t buffer;
4835+ // ... create the ArrayBuffer or acuiqre it from somewhere.
4836+
4837+ jerry_value_t bytes_read;
4838+
4839+ // read 10 bytes from the start of the ArrayBuffer.
4840+ bytes_read = jerry_arraybuffer_read (buffer, 0, data, 10);
4841+ // read the next 10 bytes
4842+ bytes_read += jerry_arraybuffer_read (buffer, bytes_read, data + bytes_read, 10);
4843+
4844+ // process the data variable
4845+
4846+ jerry_release_value (buffer);
4847+ }
4848+ ```
4849+
4850+ **See also**
4851+
4852+ - [jerry_create_arraybuffer](#jerry_create_arraybuffer)
4853+ - [jerry_arraybuffer_write](#jerry_arraybuffer_write)
4854+ - [jerry_get_arraybuffer_byte_length](#jerry_get_arraybuffer_byte_length)
4855+
4856+
4857+ ## jerry_arraybuffer_write
4858+
4859+ **Summary**
4860+
4861+ Copy the contents of a buffer into the ArrayBuffer.
4862+ The start offset of the write operation can be specified.
4863+
4864+ The number bytes to be written can be specified via the `buf_size`
4865+ parameter. It is not possible to write more than the length of
4866+ the ArrayBuffer.
4867+
4868+ Function returns the number of bytes written into the ArrayBuffer
4869+ (and read from the buffer parameter). This value is
4870+ calculated in the following way: `min(array buffer length - offset, buf_size)`.
4871+
4872+ **Prototype**
4873+
4874+ ```c
4875+ jerry_length_t
4876+ jerry_arraybuffer_write (const jerry_value_t value,
4877+ jerry_length_t offset,
4878+ const uint8_t *buf_p,
4879+ jerry_length_t buf_size);
4880+ ```
4881+
4882+ - `value` - ArrayBuffer to write to
4883+ - `offset` - start offset of the write operation
4884+ - `buf_p` - buffer to read the data from
4885+ - `buf_size` - maximum number of bytes to write into the ArrayBuffer
4886+ - return value
4887+ - number of bytes written into the ArrayBuffer (read from the buffer parameter)
4888+ - 0 if the `value` is not an ArrayBuffer object
4889+ - 0 if the `buf_size` is zero or there is nothing to write
4890+
4891+ **Example**
4892+
4893+ ```c
4894+ {
4895+ uint8_t data[20];
4896+
4897+ // fill the data with values
4898+ for (int i = 0; i < 20; i++)
4899+ {
4900+ data[i] = (uint8_t) (i * 2);
4901+ }
4902+
4903+ jerry_value_t buffer;
4904+ // ... create the ArrayBuffer or acquire it from somewhere.
4905+
4906+ jerry_value_t bytes_written;
4907+
4908+ // write 10 bytes from to the start of the ArrayBuffer.
4909+ bytes_written = jerry_arraybuffer_write (buffer, 0, data, 10);
4910+ // read the next 10 bytes
4911+ bytes_written += jerry_arraybuffer_write (buffer, bytes_written, data + bytes_written, 10);
4912+
4913+ // use the ArrayBuffer
4914+
4915+ jerry_release_value (buffer);
4916+ }
4917+ ```
4918+
4919+ **See also**
4920+
4921+ - [jerry_create_arraybuffer](#jerry_create_arraybuffer)
4922+ - [jerry_arraybuffer_write](#jerry_arraybuffer_write)
4923+ - [jerry_get_arraybuffer_byte_length](#jerry_get_arraybuffer_byte_length)
0 commit comments