diff options
Diffstat (limited to 'jerry-ext/arg')
-rw-r--r-- | jerry-ext/arg/arg-js-iterator-helper.c | 6 | ||||
-rw-r--r-- | jerry-ext/arg/arg-transform-functions.c | 104 | ||||
-rw-r--r-- | jerry-ext/arg/arg.c | 18 |
3 files changed, 52 insertions, 76 deletions
diff --git a/jerry-ext/arg/arg-js-iterator-helper.c b/jerry-ext/arg/arg-js-iterator-helper.c index ad8aa8db..c6ef2a4d 100644 --- a/jerry-ext/arg/arg-js-iterator-helper.c +++ b/jerry-ext/arg/arg-js-iterator-helper.c @@ -13,9 +13,10 @@ * limitations under the License. */ +#include "jerryscript.h" + #include "arg-internal.h" #include "jerryscript-ext/arg.h" -#include "jerryscript.h" /** * Pop the current JS argument from the iterator. @@ -62,8 +63,7 @@ jerryx_arg_js_iterator_restore (jerryx_arg_js_iterator_t *js_arg_iter_p) /**< th jerry_value_t jerryx_arg_js_iterator_peek (jerryx_arg_js_iterator_t *js_arg_iter_p) /**< the JS arg iterator */ { - return (js_arg_iter_p->js_arg_idx < js_arg_iter_p->js_arg_cnt ? *js_arg_iter_p->js_arg_p - : jerry_create_undefined ()); + return (js_arg_iter_p->js_arg_idx < js_arg_iter_p->js_arg_cnt ? *js_arg_iter_p->js_arg_p : jerry_create_undefined ()); } /* jerryx_arg_js_iterator_peek */ /** diff --git a/jerry-ext/arg/arg-transform-functions.c b/jerry-ext/arg/arg-transform-functions.c index b3b76e40..8ca7dd47 100644 --- a/jerry-ext/arg/arg-transform-functions.c +++ b/jerry-ext/arg/arg-transform-functions.c @@ -15,9 +15,10 @@ #include <math.h> -#include "jerryscript-ext/arg.h" #include "jerryscript.h" +#include "jerryscript-ext/arg.h" + /** * The common function to deal with optional arguments. * The core transform function is provided by argument `func`. @@ -55,8 +56,7 @@ jerryx_arg_transform_number_strict_common (jerryx_arg_js_iterator_t *js_arg_iter if (!jerry_value_is_number (js_arg)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It is not a number."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It is not a number."); } *number_p = jerry_get_number_value (js_arg); @@ -83,8 +83,7 @@ jerryx_arg_transform_number_common (jerryx_arg_js_iterator_t *js_arg_iter_p, /** { jerry_release_value (to_number); - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It can not be converted to a number."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It can not be converted to a number."); } *number_p = jerry_get_number_value (to_number); @@ -134,16 +133,14 @@ jerryx_arg_helper_process_double (double *d, /**< [in, out] the number to be pro { if (*d != *d) /* isnan (*d) triggers conversion warning on clang<9 */ { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "The number is NaN."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "The number is NaN."); } if (option.clamp == JERRYX_ARG_NO_CLAMP) { if (*d > max || *d < min) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "The number is out of range."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "The number is out of range."); } } else @@ -171,32 +168,32 @@ jerryx_arg_helper_process_double (double *d, /**< [in, out] the number to be pro /** * Use the macro to define thr transform functions for int type. */ -#define JERRYX_ARG_TRANSFORM_FUNC_FOR_INT_TEMPLATE(type, suffix, min, max) \ - jerry_value_t jerryx_arg_transform_ ## type ## suffix (jerryx_arg_js_iterator_t *js_arg_iter_p, \ - const jerryx_arg_t *c_arg_p) \ - { \ - double tmp = 0.0; \ - jerry_value_t rv = jerryx_arg_transform_number ## suffix ## _common (js_arg_iter_p, &tmp); \ - if (jerry_value_is_error (rv)) \ - { \ - return rv; \ - } \ - jerry_release_value (rv); \ - union \ - { \ - jerryx_arg_int_option_t int_option; \ - uintptr_t extra_info; \ - } u = { .extra_info = c_arg_p->extra_info }; \ - rv = jerryx_arg_helper_process_double (&tmp, min, max, u.int_option); \ - if (jerry_value_is_error (rv)) \ - { \ - return rv; \ - } \ - *(type ## _t *) c_arg_p->dest = (type ## _t) tmp; \ - return rv; \ +#define JERRYX_ARG_TRANSFORM_FUNC_FOR_INT_TEMPLATE(type, suffix, min, max) \ + jerry_value_t jerryx_arg_transform_##type##suffix (jerryx_arg_js_iterator_t *js_arg_iter_p, \ + const jerryx_arg_t *c_arg_p) \ + { \ + double tmp = 0.0; \ + jerry_value_t rv = jerryx_arg_transform_number##suffix##_common (js_arg_iter_p, &tmp); \ + if (jerry_value_is_error (rv)) \ + { \ + return rv; \ + } \ + jerry_release_value (rv); \ + union \ + { \ + jerryx_arg_int_option_t int_option; \ + uintptr_t extra_info; \ + } u = { .extra_info = c_arg_p->extra_info }; \ + rv = jerryx_arg_helper_process_double (&tmp, min, max, u.int_option); \ + if (jerry_value_is_error (rv)) \ + { \ + return rv; \ + } \ + *(type##_t *) c_arg_p->dest = (type##_t) tmp; \ + return rv; \ } -#define JERRYX_ARG_TRANSFORM_FUNC_FOR_INT(type, min, max) \ +#define JERRYX_ARG_TRANSFORM_FUNC_FOR_INT(type, min, max) \ JERRYX_ARG_TRANSFORM_FUNC_FOR_INT_TEMPLATE (type, _strict, min, max) \ JERRYX_ARG_TRANSFORM_FUNC_FOR_INT_TEMPLATE (type, , min, max) @@ -223,8 +220,7 @@ jerryx_arg_transform_boolean_strict (jerryx_arg_js_iterator_t *js_arg_iter_p, /* if (!jerry_value_is_boolean (js_arg)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It is not a boolean."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It is not a boolean."); } bool *dest = c_arg_p->dest; @@ -272,23 +268,18 @@ jerryx_arg_string_to_buffer_common_routine (jerry_value_t js_arg, /**< JS arg */ if (!is_utf8) { - size = jerry_string_to_char_buffer (js_arg, - target_p, - target_buf_size); + size = jerry_string_to_char_buffer (js_arg, target_p, target_buf_size); len = jerry_get_string_length (js_arg); } else { - size = jerry_string_to_utf8_char_buffer (js_arg, - target_p, - target_buf_size); + size = jerry_string_to_utf8_char_buffer (js_arg, target_p, target_buf_size); len = jerry_get_utf8_string_length (js_arg); } if ((size == target_buf_size) || (size == 0 && len != 0)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "Buffer size is not large enough."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "Buffer size is not large enough."); } target_p[size] = '\0'; @@ -311,8 +302,7 @@ jerryx_arg_transform_string_strict_common (jerryx_arg_js_iterator_t *js_arg_iter if (!jerry_value_is_string (js_arg)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It is not a string."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It is not a string."); } return jerryx_arg_string_to_buffer_common_routine (js_arg, c_arg_p, is_utf8); @@ -337,8 +327,7 @@ jerryx_arg_transform_string_common (jerryx_arg_js_iterator_t *js_arg_iter_p, /** { jerry_release_value (to_string); - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It can not be converted to a string."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It can not be converted to a string."); } jerry_value_t ret = jerryx_arg_string_to_buffer_common_routine (to_string, c_arg_p, is_utf8); @@ -425,8 +414,7 @@ jerryx_arg_transform_function (jerryx_arg_js_iterator_t *js_arg_iter_p, /**< ava if (!jerry_value_is_function (js_arg)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It is not a function."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It is not a function."); } jerry_value_t *func_p = c_arg_p->dest; @@ -450,8 +438,7 @@ jerryx_arg_transform_native_pointer (jerryx_arg_js_iterator_t *js_arg_iter_p, /* if (!jerry_value_is_object (js_arg)) { - return jerry_create_error (JERRY_ERROR_TYPE, - (jerry_char_t *) "It is not an object."); + return jerry_create_error (JERRY_ERROR_TYPE, (jerry_char_t *) "It is not an object."); } const jerry_object_native_info_t *expected_info_p; @@ -503,20 +490,17 @@ jerryx_arg_transform_array_items (jerryx_arg_js_iterator_t *js_arg_iter_p, /**< const jerryx_arg_array_items_t *array_items_p = (const jerryx_arg_array_items_t *) c_arg_p->extra_info; - return jerryx_arg_transform_array (js_arg, - array_items_p->c_arg_p, - array_items_p->c_arg_cnt); + return jerryx_arg_transform_array (js_arg, array_items_p->c_arg_p, array_items_p->c_arg_cnt); } /* jerryx_arg_transform_array_items */ /** * Define transformer for optional argument. */ -#define JERRYX_ARG_TRANSFORM_OPTIONAL(type) \ - jerry_value_t \ - jerryx_arg_transform_ ## type ## _optional (jerryx_arg_js_iterator_t *js_arg_iter_p, \ - const jerryx_arg_t *c_arg_p) \ - { \ - return jerryx_arg_transform_optional (js_arg_iter_p, c_arg_p, jerryx_arg_transform_ ## type); \ +#define JERRYX_ARG_TRANSFORM_OPTIONAL(type) \ + jerry_value_t jerryx_arg_transform_##type##_optional (jerryx_arg_js_iterator_t *js_arg_iter_p, \ + const jerryx_arg_t *c_arg_p) \ + { \ + return jerryx_arg_transform_optional (js_arg_iter_p, c_arg_p, jerryx_arg_transform_##type); \ } JERRYX_ARG_TRANSFORM_OPTIONAL (number) diff --git a/jerry-ext/arg/arg.c b/jerry-ext/arg/arg.c index 794970e0..018c335a 100644 --- a/jerry-ext/arg/arg.c +++ b/jerry-ext/arg/arg.c @@ -14,7 +14,9 @@ */ #include "jerryscript-ext/arg.h" + #include "jerryscript.h" + #include "arg-internal.h" #include "jext-common.h" @@ -35,12 +37,7 @@ jerryx_arg_transform_args (const jerry_value_t *js_arg_p, /**< points to the arr { jerry_value_t ret = jerry_create_undefined (); - jerryx_arg_js_iterator_t iterator = - { - .js_arg_p = js_arg_p, - .js_arg_cnt = js_arg_cnt, - .js_arg_idx = 0 - }; + jerryx_arg_js_iterator_t iterator = { .js_arg_p = js_arg_p, .js_arg_cnt = js_arg_cnt, .js_arg_idx = 0 }; for (; c_arg_cnt != 0 && !jerry_value_is_error (ret); c_arg_cnt--, c_arg_p++) { @@ -72,12 +69,7 @@ jerryx_arg_transform_this_and_args (const jerry_value_t this_val, /**< the this_ return jerry_create_undefined (); } - jerryx_arg_js_iterator_t iterator = - { - .js_arg_p = &this_val, - .js_arg_cnt = 1, - .js_arg_idx = 0 - }; + jerryx_arg_js_iterator_t iterator = { .js_arg_p = &this_val, .js_arg_cnt = 1, .js_arg_idx = 0 }; jerry_value_t ret = c_arg_p->func (&iterator, c_arg_p); @@ -99,7 +91,7 @@ jerryx_arg_transform_this_and_args (const jerry_value_t this_val, /**< the this_ * jerry error: a validator failed. */ jerry_value_t -jerryx_arg_transform_object_properties (const jerry_value_t obj_val,/**< the JS object */ +jerryx_arg_transform_object_properties (const jerry_value_t obj_val, /**< the JS object */ const jerry_char_t **name_p, /**< property name list of the JS object */ const jerry_length_t name_cnt, /**< count of the name list */ const jerryx_arg_t *c_arg_p, /**< points to the array of transformation steps */ |