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);
272
272
jerry_api_size_t jerry_api_string_to_char_buffer (const jerry_api_string_t * , jerry_api_char_t * , jerry_api_size_t );
273
273
jerry_api_string_t * jerry_api_acquire_string (jerry_api_string_t * );
274
274
jerry_api_object_t * jerry_api_acquire_object (jerry_api_object_t * );
275
+ jerry_api_value_t * jerry_api_acquire_value (jerry_api_value_t * );
275
276
276
277
void jerry_api_release_object (jerry_api_object_t * );
277
278
void 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
634
634
ecma_deref_object (object_p );
635
635
} /* jerry_api_release_object */
636
636
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
+
637
666
/**
638
667
* 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.
639
672
*/
640
673
void
641
674
jerry_api_release_value (jerry_api_value_t * value_p ) /**< API value */
You can’t perform that action at this time.
0 commit comments