49c24ca464
* Add new documents about autorelease values and module support JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
61 lines
1.3 KiB
Markdown
61 lines
1.3 KiB
Markdown
---
|
|
layout: page
|
|
title: 'Extension API: Autorelease Values'
|
|
category: documents
|
|
permalink: /ext-reference-autorelease/
|
|
---
|
|
|
|
* toc
|
|
{:toc}
|
|
|
|
# Autorelease values
|
|
|
|
## JERRYX_AR_VALUE_T
|
|
|
|
**Summary**
|
|
|
|
Macro for `const jerry_value_t` for which jerry_release_value() is
|
|
automatically called when the variable goes out of scope.
|
|
|
|
*Note*: The macro depends on compiler support. For GCC and LLVM/clang, the macro is implemented
|
|
using the `__cleanup__` variable attribute. For other compilers, no support has been added yet.
|
|
|
|
**Example**
|
|
|
|
[doctest]: # (test="compile")
|
|
|
|
```c
|
|
#include "jerryscript.h"
|
|
#include "jerryscript-ext/autorelease.h"
|
|
|
|
static void
|
|
foo (bool enable)
|
|
{
|
|
JERRYX_AR_VALUE_T bar = jerry_create_string ((const jerry_char_t *) "...");
|
|
|
|
if (enable)
|
|
{
|
|
JERRYX_AR_VALUE_T baz = jerry_get_global_object ();
|
|
|
|
/* bar and baz can now be used. */
|
|
|
|
/*
|
|
* jerry_release_value (baz) and jerry_release_value (bar) is called automatically before
|
|
* returning, because `baz` and `bar` go out of scope.
|
|
*/
|
|
return;
|
|
}
|
|
|
|
/*
|
|
* jerry_release_value (bar) is called automatically when the function returns,
|
|
* because `bar` goes out of scope.
|
|
*/
|
|
}
|
|
```
|
|
|
|
**See also**
|
|
|
|
- [jerry_value_t](../api-reference#jerry_value_t)
|
|
- [jerry_acquire_value](../api-reference#jerry_acquire_value)
|
|
- [jerry_release_value](../api-reference#jerry_release_value)
|