/* Copyright JS Foundation and other contributors, http://js.foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef JERRYX_AUTORELEASE_H #define JERRYX_AUTORELEASE_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include "autorelease.impl.h" /* * Macro for `const jerry_value_t` for which jerry_release_value () is * automatically called when the variable goes out of scope. * * Example usage: * static void foo (bool enable) * { * JERRYX_AR_VALUE_T bar = jerry_create_string (...); * * if (enable) { * JERRYX_AR_VALUE_T baz = jerry_get_global_object (); * * // ... * * // 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. * } */ #define JERRYX_AR_VALUE_T __JERRYX_AR_VALUE_T_IMPL #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* !JERRYX_AUTORELEASE_H */