Skip to content

Commit

Permalink
Use 'ecma_value_t' in API too
Browse files Browse the repository at this point in the history
JerryScript-DCO-1.0-Signed-off-by: László Langó [email protected]
  • Loading branch information
LaszloLango committed Jun 13, 2016
1 parent eac736f commit c2104ff
Show file tree
Hide file tree
Showing 6 changed files with 347 additions and 715 deletions.
9 changes: 2 additions & 7 deletions jerry-core/ecma/operations/ecma-function-object.c
Original file line number Diff line number Diff line change
Expand Up @@ -655,16 +655,11 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
&handler_p);
JERRY_ASSERT (is_retrieved);

ecma_collection_header_t *arg_collection_p = ecma_new_values_collection (arguments_list_p,
arguments_list_len,
true);

ret_value = jerry_dispatch_external_function (func_obj_p,
handler_p,
this_arg_value,
arg_collection_p);

ecma_free_values_collection (arg_collection_p, true);
arguments_list_p,
arguments_list_len);
}
else
{
Expand Down
88 changes: 28 additions & 60 deletions jerry-core/jerry-api.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,6 @@ typedef enum
JERRY_COMPLETION_CODE_INVALID_SNAPSHOT_FORMAT = 3, /**< snapshot format is not valid */
} jerry_completion_code_t;

/**
* Jerry API data types
*/
typedef enum
{
JERRY_DATA_TYPE_VOID, /**< no return value */
JERRY_DATA_TYPE_UNDEFINED, /**< undefined */
JERRY_DATA_TYPE_NULL, /**< null */
JERRY_DATA_TYPE_BOOLEAN, /**< bool */
JERRY_DATA_TYPE_FLOAT32, /**< 32-bit float */
JERRY_DATA_TYPE_FLOAT64, /**< 64-bit float */
JERRY_DATA_TYPE_UINT32, /**< number converted to 32-bit unsigned integer */
JERRY_DATA_TYPE_STRING, /**< string */
JERRY_DATA_TYPE_OBJECT /**< object */
} jerry_data_type_t;

/**
* Jerry API Error object types
*/
Expand Down Expand Up @@ -103,32 +87,15 @@ typedef struct ecma_string_t jerry_string_t;
typedef struct ecma_object_t jerry_object_t;

/**
* Description of an extension function's argument
* Description of a JerryScript value
*/
typedef struct jerry_value_t
{
jerry_data_type_t type; /**< argument data type */

union
{
bool v_bool; /**< boolean */

float v_float32; /**< 32-bit float */
double v_float64; /**< 64-bit float */

uint32_t v_uint32; /**< number converted 32-bit unsigned integer */

jerry_string_t *v_string; /**< pointer to a JS string */
jerry_object_t *v_object; /**< pointer to a JS object */

} u;
} jerry_value_t;
typedef uint32_t jerry_value_t;

/**
* Type of an external function handler
*/
typedef bool (*jerry_external_handler_t) (const jerry_object_t *function_obj_p,
const jerry_value_t *this_p,
const jerry_value_t this_p,
jerry_value_t *ret_val_p,
const jerry_value_t args_p[],
const jerry_length_t args_count);
Expand All @@ -142,7 +109,7 @@ typedef void (*jerry_object_free_callback_t) (const uintptr_t native_p);
* Function type applied for each fields in objects
*/
typedef bool (*jerry_object_field_foreach_t) (const jerry_string_t *field_name_p,
const jerry_value_t *field_value_p,
const jerry_value_t field_value_p,
void *user_data_p);

/**
Expand All @@ -153,52 +120,53 @@ jerry_object_t *jerry_get_global (void);
/**
* Checker functions of 'jerry_value_t'
*/
bool jerry_value_is_void (const jerry_value_t *value_p);
bool jerry_value_is_null (const jerry_value_t *value_p);
bool jerry_value_is_undefined (const jerry_value_t *value_p);
bool jerry_value_is_boolean (const jerry_value_t *value_p);
bool jerry_value_is_number (const jerry_value_t *value_p);
bool jerry_value_is_string (const jerry_value_t *value_p);
bool jerry_value_is_object (const jerry_value_t *value_p);
bool jerry_value_is_function (const jerry_value_t *value_p);
bool jerry_value_is_boolean (const jerry_value_t);
bool jerry_value_is_empty (const jerry_value_t);
bool jerry_value_is_error (const jerry_value_t);
bool jerry_value_is_function (const jerry_value_t);
bool jerry_value_is_number (const jerry_value_t);
bool jerry_value_is_null (const jerry_value_t);
bool jerry_value_is_object (const jerry_value_t);
bool jerry_value_is_string (const jerry_value_t);
bool jerry_value_is_undefined (const jerry_value_t);

/**
* Getter functions of 'jerry_value_t'
*/
bool jerry_get_boolean_value (const jerry_value_t *value_p);
double jerry_get_number_value (const jerry_value_t *value_p);
jerry_string_t *jerry_get_string_value (const jerry_value_t *value_p);
jerry_object_t *jerry_get_object_value (const jerry_value_t *value_p);
bool jerry_get_boolean_value (const jerry_value_t);
double jerry_get_number_value (const jerry_value_t);
jerry_string_t *jerry_get_string_value (const jerry_value_t);
jerry_object_t *jerry_get_object_value (const jerry_value_t);

/**
* Converters of 'jerry_value_t'
*/
jerry_string_t *jerry_value_to_string (const jerry_value_t *);
jerry_value_t jerry_value_to_string (const jerry_value_t value);

/**
* Create functions of 'jerry_value_t'
*/
jerry_value_t jerry_create_void_value (void);
jerry_value_t jerry_create_null_value (void);
jerry_value_t jerry_create_undefined_value (void);
jerry_value_t jerry_create_boolean_value (bool value);
jerry_value_t jerry_create_number_value (double value);
jerry_value_t jerry_create_object_value (jerry_object_t *value);
jerry_value_t jerry_create_string_value (jerry_string_t *value);
jerry_value_t jerry_create_boolean_value (bool);
jerry_value_t jerry_create_number_value (double);
jerry_value_t jerry_create_object_value (jerry_object_t *);
jerry_value_t jerry_create_string_value (jerry_string_t *);

/**
* Acquire types with reference counter (increase the references)
*/
jerry_string_t *jerry_acquire_string (jerry_string_t *);
jerry_object_t *jerry_acquire_object (jerry_object_t *);
jerry_value_t *jerry_acquire_value (jerry_value_t *);
void jerry_acquire_value (jerry_value_t);

/**
* Relase the referenced values
*/
void jerry_release_object (jerry_object_t *);
void jerry_release_string (jerry_string_t *);
void jerry_release_value (jerry_value_t *);
void jerry_release_value (jerry_value_t);

/**
* Create functions of API objects
Expand All @@ -214,7 +182,7 @@ jerry_string_t *jerry_create_string_sz (const jerry_char_t *, jerry_size_t);
/**
* Functions of array objects
*/
bool jerry_set_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t *);
bool jerry_set_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t);
bool jerry_get_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t *);

/**
Expand All @@ -229,12 +197,12 @@ jerry_size_t jerry_string_to_char_buffer (const jerry_string_t *, jerry_char_t *
*/
bool jerry_is_constructor (const jerry_object_t *);
bool jerry_is_function (const jerry_object_t *);
bool jerry_add_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t *, bool);
bool jerry_add_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t, bool);
bool jerry_delete_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t);
bool jerry_get_object_field_value (jerry_object_t *, const jerry_char_t *, jerry_value_t *);
bool jerry_get_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, jerry_value_t *);
bool jerry_set_object_field_value (jerry_object_t *, const jerry_char_t *, const jerry_value_t *);
bool jerry_set_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t *);
bool jerry_set_object_field_value (jerry_object_t *, const jerry_char_t *, const jerry_value_t);
bool jerry_set_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t);
bool jerry_foreach_object_field (jerry_object_t *, jerry_object_field_foreach_t, void *);
bool jerry_get_object_native_handle (jerry_object_t *, uintptr_t *);
void jerry_set_object_native_handle (jerry_object_t *, uintptr_t, jerry_object_free_callback_t);
Expand Down
6 changes: 5 additions & 1 deletion jerry-core/jerry-internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@
#include "jerry-api.h"

extern ecma_value_t
jerry_dispatch_external_function (ecma_object_t *, ecma_external_pointer_t, ecma_value_t, ecma_collection_header_t *);
jerry_dispatch_external_function (ecma_object_t *,
ecma_external_pointer_t,
ecma_value_t,
const ecma_value_t *,
ecma_length_t);

extern void
jerry_dispatch_object_free_callback (ecma_external_pointer_t, ecma_external_pointer_t);
Expand Down
Loading

0 comments on commit c2104ff

Please sign in to comment.