Files
jerryscript/11.EXT-REFERENCE-AUTORELEASE.md
T
Zsolt Borbély 9192b862c9 Update the webpage (#5127)
The GitHub ribbon is also revived.

Related issue: #5125

JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
2024-02-07 06:07:21 +01:00

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_value_free() 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", name="11.EXT-REFERENCE-AUTORELEASE.c")
```c
#include "jerryscript.h"
#include "jerryscript-ext/autorelease.h"
static void
foo (bool enable)
{
JERRYX_AR_VALUE_T bar = jerry_string_sz ("...");
if (enable)
{
JERRYX_AR_VALUE_T baz = jerry_current_realm ();
/* bar and baz can now be used. */
/*
* jerry_value_free (baz) and jerry_value_free (bar) is called automatically before
* returning, because `baz` and `bar` go out of scope.
*/
return;
}
/*
* jerry_value_free (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_value_copy](../api-reference#jerry_value_copy)
- [jerry_value_free](../api-reference#jerry_value_free)