File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -272,6 +272,7 @@ jerry_api_value_t jerry_api_create_string_value (jerry_api_string_t *value);
272272jerry_api_size_t jerry_api_string_to_char_buffer (const jerry_api_string_t * , jerry_api_char_t * , jerry_api_size_t );
273273jerry_api_string_t * jerry_api_acquire_string (jerry_api_string_t * );
274274jerry_api_object_t * jerry_api_acquire_object (jerry_api_object_t * );
275+ jerry_api_value_t * jerry_api_acquire_value (jerry_api_value_t * );
275276
276277void jerry_api_release_object (jerry_api_object_t * );
277278void jerry_api_release_string (jerry_api_string_t * );
Original file line number Diff line number Diff line change @@ -634,8 +634,41 @@ jerry_api_release_object (jerry_api_object_t *object_p) /**< pointer acquired th
634634 ecma_deref_object (object_p );
635635} /* jerry_api_release_object */
636636
637+ /**
638+ * Acquire specified Jerry API value.
639+ *
640+ * Note:
641+ * For values of string and object types this acquires the underlying data,
642+ * for all other types it is a no-op.
643+ *
644+ * Warning:
645+ * Acquired pointer should be released with jerry_api_release_value
646+ *
647+ * @return pointer that may be used outside of the engine
648+ */
649+ jerry_api_value_t *
650+ jerry_api_acquire_value (jerry_api_value_t * value_p ) /**< API value */
651+ {
652+ jerry_assert_api_available ();
653+
654+ if (value_p -> type == JERRY_API_DATA_TYPE_STRING )
655+ {
656+ jerry_api_acquire_string (value_p -> u .v_string );
657+ }
658+ else if (value_p -> type == JERRY_API_DATA_TYPE_OBJECT )
659+ {
660+ jerry_api_acquire_object (value_p -> u .v_object );
661+ }
662+
663+ return value_p ;
664+ } /* jerry_api_acquire_value */
665+
637666/**
638667 * Release specified Jerry API value
668+ *
669+ * Note:
670+ * For values of string and object types this releases the underlying data,
671+ * for all other types it is a no-op.
639672 */
640673void
641674jerry_api_release_value (jerry_api_value_t * value_p ) /**< API value */
You can’t perform that action at this time.
0 commit comments