Introduce new API functions to obtain detailed object type information (#4162)
- jerry_object_get_type - jerry_function_get_type - jerry_iterator_get_type - jerry_value_is_async_function JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
@@ -30,6 +30,56 @@ Enum that contains JerryScript API value types:
|
||||
|
||||
*New in version 2.0*.
|
||||
|
||||
## jerry_object_type_t
|
||||
|
||||
Enum that contains JerryScript **object** value types:
|
||||
|
||||
- JERRY_OBJECT_TYPE_NONE - Non-object type
|
||||
- JERRY_OBJECT_TYPE_GENERIC - Generic JavaScript object without any internal property
|
||||
- JERRY_OBJECT_TYPE_ARRAY - Array object
|
||||
- JERRY_OBJECT_TYPE_PROXY - Proxy object
|
||||
- JERRY_OBJECT_TYPE_FUNCTION - Function object (see [jerry_function_get_type](#jerry_function_get_type))
|
||||
- JERRY_OBJECT_TYPE_TYPEDARRAY - %TypedArray% object (see [jerry_get_typedarray_type](#jerry_get_typedarray_type))
|
||||
- JERRY_OBJECT_TYPE_ITERATOR - Iterator object (see [jerry_iterator_get_type](#jerry_get_typedarray_type))
|
||||
- JERRY_OBJECT_TYPE_CONTAINER - Container object (see [jerry_get_container_type](#jerry_get_container_type))
|
||||
|
||||
- JERRY_OBJECT_TYPE_ARGUMENTS - Arguments object
|
||||
- JERRY_OBJECT_TYPE_BOOLEAN - Boolean object
|
||||
- JERRY_OBJECT_TYPE_DATE - Date object
|
||||
- JERRY_OBJECT_TYPE_NUMBER - Number object
|
||||
- JERRY_OBJECT_TYPE_REGEXP - RegExp object
|
||||
- JERRY_OBJECT_TYPE_STRING - String object
|
||||
- JERRY_OBJECT_TYPE_SYMBOL - Symbol object
|
||||
- JERRY_OBJECT_TYPE_GENERATOR - Generator object
|
||||
- JERRY_OBJECT_TYPE_BIGINT - BigInt object
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
## jerry_function_type_t
|
||||
|
||||
Enum that contains JerryScript **function** value types:
|
||||
|
||||
- JERRY_FUNCTION_TYPE_NONE - Non-function type
|
||||
- JERRY_FUNCTION_TYPE_GENERIC - Generic JavaScript function
|
||||
- JERRY_FUNCTION_TYPE_ACCESSOR - Accessor function
|
||||
- JERRY_FUNCTION_TYPE_BOUND - Bound function
|
||||
- JERRY_FUNCTION_TYPE_ARROW - Arrow fuction
|
||||
- JERRY_FUNCTION_TYPE_GENERATOR - Generator function object
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
## jerry_iterator_type_t
|
||||
|
||||
Enum that contains JerryScript **iterator** value types:
|
||||
|
||||
- JERRY_ITERATOR_TYPE_NONE - Non-iterator type
|
||||
- JERRY_ITERATOR_TYPE_ARRAY - Array iterator
|
||||
- JERRY_ITERATOR_TYPE_STRING - String iterator
|
||||
- JERRY_ITERATOR_TYPE_MAP - Map iterator
|
||||
- JERRY_ITERATOR_TYPE_SET - Set iterator
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
## jerry_error_t
|
||||
|
||||
Possible types of an error:
|
||||
@@ -1717,6 +1767,44 @@ jerry_value_is_function (const jerry_value_t value)
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
|
||||
## jerry_value_is_async_function
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns whether the given `jerry_value_t` is an async function.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
bool
|
||||
jerry_value_is_async_function (const jerry_value_t value)
|
||||
```
|
||||
|
||||
- `value` - api value
|
||||
- return value
|
||||
- true, if the given `jerry_value_t` is an async function
|
||||
- false, otherwise
|
||||
|
||||
**Example**
|
||||
|
||||
```c
|
||||
{
|
||||
jerry_value_t value;
|
||||
... // create or acquire value
|
||||
|
||||
if (jerry_value_is_async_function (value))
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
jerry_release_value (value);
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_release_value](#jerry_release_value)
|
||||
|
||||
## jerry_value_is_number
|
||||
|
||||
**Summary**
|
||||
@@ -2293,6 +2381,142 @@ jerry_value_get_type (const jerry_value_t value);
|
||||
|
||||
- [jerry_type_t](#jerry_type_t)
|
||||
|
||||
## jerry_object_get_type
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns the **object** type
|
||||
for a given value as a [jerry_object_type_t](#jerry_object_type_t) enum value.
|
||||
|
||||
Note: For non-object parameters `JERRY_OBJECT_TYPE_NONE` is returned.
|
||||
Note: the returned type can be checked for more detailed type information in the following cases:
|
||||
- `JERRY_OBJECT_TYPE_CONTAINER`, *see also:* [jerry_container_get_type](#jerry_container_get_type)
|
||||
- `JERRY_OBJECT_TYPE_FUNCTION`, *see also:* [jerry_function_get_type](#jerry_function_get_type)
|
||||
- `JERRY_OBJECT_TYPE_ITERATOR`, *see also:* [jerry_iterator_get_type](#jerry_iterator_get_type)
|
||||
- `JERRY_OBJECT_TYPE_TYPEDARRAY`, *see also:* [jerry_get_typedarray_type](#jerry_get_typedarray_type)
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_object_type_t
|
||||
jerry_object_get_type (const jerry_value_t value);
|
||||
```
|
||||
|
||||
- `value` - JavaScript value to check.
|
||||
- return value
|
||||
- One of the [jerry_object_type_t](#jerry_object_type_t) value.
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
**Example**
|
||||
|
||||
```c
|
||||
{
|
||||
jerry_value_t object = jerry_create_object ();
|
||||
|
||||
jerry_object_type_t object_type_info = jerry_object_get_type (object);
|
||||
|
||||
if (type_info == JERRY_OBJECT_TYPE_GENERIC)
|
||||
{
|
||||
/* ... */
|
||||
}
|
||||
|
||||
jerry_release_value (object);
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_object_type_t](#jerry_object_type_t)
|
||||
|
||||
## jerry_function_get_type
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns the **function** type
|
||||
for a given value as a [jerry_function_type_t](#jerry_function_type_t) enum value.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_function_type_t
|
||||
jerry_function_get_type (const jerry_value_t value);
|
||||
```
|
||||
|
||||
- `value` - JavaScript value to check.
|
||||
- return value
|
||||
- One of the [jerry_function_type_t](#jerry_function_type_t) value.
|
||||
|
||||
Note: For non-function parameters `JERRY_FUNCTION_TYPE_NONE` is returned.
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
**Example**
|
||||
|
||||
```c
|
||||
{
|
||||
const jerry_char_t script[] = "function f() {}; f";
|
||||
jerry_value_t function_object = jerry_eval (script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS);
|
||||
|
||||
jerry_function_type_t function_type_info = jerry_function_get_type (function_object);
|
||||
|
||||
if (type_info == JERRY_FUNCTION_TYPE_GENERIC)
|
||||
{
|
||||
/* ... */
|
||||
}
|
||||
|
||||
jerry_release_value (function_object);
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_function_type_t](#jerry_function_type_t)
|
||||
|
||||
## jerry_iterator_get_type
|
||||
|
||||
**Summary**
|
||||
|
||||
Returns the **iterator** type
|
||||
for a given value as a [jerry_iterator_type_t](#jerry_iterator_type_t) enum value.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
jerry_iterator_type_t
|
||||
jerry_iterator_get_type (const jerry_value_t value);
|
||||
```
|
||||
|
||||
- `value` - JavaScript value to check.
|
||||
- return value
|
||||
- One of the [jerry_iterator_type_t](#jerry_iterator_type_t) value.
|
||||
|
||||
Note: For non-iterator parameters `JERRY_ITERATOR_TYPE_NONE` is returned.
|
||||
|
||||
*New in version [[NEXT_RELEASE]]*.
|
||||
|
||||
**Example**
|
||||
|
||||
```c
|
||||
{
|
||||
const jerry_char_t script[] = "[1, 2, 3].values()";
|
||||
jerry_value_t iterator = jerry_eval (script, sizeof (script) - 1, JERRY_PARSE_NO_OPTS);
|
||||
|
||||
jerry_iterator_type_t iterator_type_info = jerry_iterator_get_type (iterator);
|
||||
|
||||
if (type_info == JERRY_ITERATOR_TYPE_ARRAY)
|
||||
{
|
||||
/* ... */
|
||||
}
|
||||
|
||||
jerry_release_value (iterator);
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_iterator_type_t](#jerry_iterator_type_t)
|
||||
|
||||
## jerry_is_feature_enabled
|
||||
|
||||
**Summary**
|
||||
|
||||
Reference in New Issue
Block a user