Support passing of string and object arguments to plugins' bound functions.

This commit is contained in:
Ruben Ayrapetyan
2015-03-25 18:32:38 +03:00
parent c8f78c5d28
commit 6b0b669c14
9 changed files with 202 additions and 25 deletions
+66
View File
@@ -15,6 +15,8 @@
#include "deserializer.h"
#include "ecma-extension.h"
#include "ecma-gc.h"
#include "ecma-helpers.h"
#include "ecma-init-finalize.h"
#include "jerry.h"
#include "jrt.h"
@@ -63,6 +65,70 @@ jerry_extend_with (jerry_extension_descriptor_t *desc_p) /**< description of the
return ecma_extension_register (desc_p);
} /* jerry_extend_with */
/**
* Copy string characters to specified buffer, append zero character at end of the buffer.
*
* @return number of bytes, actually copied to the buffer - if string's content was copied successfully;
* otherwise (in case size of buffer is insuficcient) - negative number, which is calculated
* as negation of buffer size, that is required to hold the string's content.
*/
ssize_t
jerry_string_to_char_buffer (const jerry_string_t *string_p, /**< string descriptor */
char *buffer_p, /**< output characters buffer */
ssize_t buffer_size) /**< size of output buffer */
{
return ecma_string_to_zt_string (string_p, (ecma_char_t*) buffer_p, buffer_size);
} /* jerry_string_to_char_buffer */
/**
* Acquire string pointer for usage outside of the engine
*
* Warning:
* acquired pointer should be released with jerry_release_string
*
* @return pointer that may be used outside of the engine
*/
jerry_string_t*
jerry_acquire_string (jerry_string_t *string_p) /**< pointer passed to function */
{
return ecma_copy_or_ref_ecma_string (string_p);
} /* jerry_acquire_string */
/**
* Release string pointer acquired through jerry_acquire_string.
*/
void
jerry_release_string (jerry_string_t *string_p) /**< pointer acquired through jerry_acquire_string */
{
ecma_deref_ecma_string (string_p);
} /* jerry_release_string */
/**
* Acquire object pointer for usage outside of the engine
*
* Warning:
* acquired pointer should be released with jerry_release_object
*
* @return pointer that may be used outside of the engine
*/
jerry_object_t*
jerry_acquire_object (jerry_object_t *object_p) /**< pointer passed to function */
{
ecma_ref_object (object_p);
return object_p;
} /* jerry_acquire_object */
/**
* Release object pointer acquired through jerry_acquire_object.
*/
void
jerry_release_object (jerry_object_t *object_p) /**< pointer acquired through jerry_acquire_object */
{
ecma_deref_object (object_p);
} /* jerry_release_object */
/**
* @}
*/