16
16
#include "jerryscript-ext/args.h"
17
17
#include "jerryscript.h"
18
18
19
+ /**
20
+ * Pop the current JS argument from the iterator.
21
+ * It will change the index and js_arg_p value in the iterator.
22
+ *
23
+ * @return the current JS argument.
24
+ */
19
25
jerry_value_t
20
- jerryx_arg_js_iterator_pop (jerryx_arg_js_iterator_t * js_args )
26
+ jerryx_arg_js_iterator_pop (jerryx_arg_js_iterator_t * js_arg_iter_p ) /**< the JS arg iterator */
21
27
{
22
- js_args -> js_arg_idx ++ ;
23
- return js_args -> js_arg_cnt -- > 0 ? * js_args -> js_arg_p ++ : jerry_create_undefined ();
28
+ return ( js_arg_iter_p -> js_arg_idx ++ < js_arg_iter_p -> js_arg_cnt ? * js_arg_iter_p -> js_arg_p ++
29
+ : jerry_create_undefined () );
24
30
} /* jerryx_arg_js_iterator_pop */
25
31
32
+ /**
33
+ * Get the current JS argument from the iterator.
34
+ *
35
+ * Note:
36
+ * Unlike jerryx_arg_iterator_pop, it will not change index and
37
+ * js_arg_p value in the iterator.
38
+ *
39
+ * @return the current JS argument.
40
+ */
26
41
jerry_value_t
27
- jerryx_arg_js_iterator_peek (jerryx_arg_js_iterator_t * js_args )
42
+ jerryx_arg_js_iterator_peek (jerryx_arg_js_iterator_t * js_arg_iter_p ) /**< the JS arg iterator */
28
43
{
29
- return js_args -> js_arg_cnt > 0 ? * js_args -> js_arg_p : jerry_create_undefined ();
44
+ return (js_arg_iter_p -> js_arg_idx < js_arg_iter_p -> js_arg_cnt ? * js_arg_iter_p -> js_arg_p
45
+ : jerry_create_undefined ());
30
46
} /* jerryx_arg_js_iterator_peek */
31
47
32
48
/**
33
49
* The common function to deal with optional arguments.
34
50
*/
35
51
static jerry_value_t
36
- jerryx_arg_transform_optional (jerryx_arg_js_iterator_t * js_args , /**< available JS args */
52
+ jerryx_arg_transform_optional (jerryx_arg_js_iterator_t * js_arg_iter_p , /**< available JS args */
37
53
const jerryx_arg_t * c_arg_p , /**< native arg */
38
54
jerryx_arg_transform_func_t func ) /**< the core transform function */
39
55
{
40
- jerry_value_t js_arg = jerryx_arg_js_iterator_peek (js_args );
56
+ jerry_value_t js_arg = jerryx_arg_js_iterator_peek (js_arg_iter_p );
41
57
42
58
if (jerry_value_is_undefined (js_arg ))
43
59
{
44
60
return js_arg ;
45
61
}
46
62
47
- return func (js_args , c_arg_p );
63
+ return func (js_arg_iter_p , c_arg_p );
48
64
} /* jerryx_arg_transform_optional */
49
65
50
66
/**
51
67
* Tranform a JS argument to a double. Type coercion is not allowed.
52
68
*/
53
69
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_number_strict )
54
70
{
55
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
71
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
56
72
57
73
if (!jerry_value_is_number (js_arg ))
58
74
{
@@ -71,7 +87,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_number_strict)
71
87
*/
72
88
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_number )
73
89
{
74
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
90
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
75
91
76
92
jerry_value_t to_number = jerry_value_to_number (js_arg );
77
93
@@ -95,7 +111,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_number)
95
111
*/
96
112
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_boolean_strict )
97
113
{
98
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
114
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
99
115
100
116
if (!jerry_value_is_boolean (js_arg ))
101
117
{
@@ -114,7 +130,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_boolean_strict)
114
130
*/
115
131
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_boolean )
116
132
{
117
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
133
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
118
134
119
135
bool to_boolean = jerry_value_to_boolean (js_arg );
120
136
@@ -126,6 +142,9 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_boolean)
126
142
127
143
/**
128
144
* The common routine for string tranformor.
145
+ *
146
+ * @return jerry undefined: the validator passes,
147
+ * jerry error: the validator fails.
129
148
*/
130
149
static jerry_value_t
131
150
jerryx_arg_string_common_routine (jerry_value_t js_arg , /**< JS arg */
@@ -149,7 +168,7 @@ jerryx_arg_string_common_routine (jerry_value_t js_arg, /**< JS arg */
149
168
*/
150
169
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_string_strict )
151
170
{
152
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
171
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
153
172
154
173
if (!jerry_value_is_string (js_arg ))
155
174
{
@@ -165,7 +184,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_string_strict)
165
184
*/
166
185
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_string )
167
186
{
168
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
187
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
169
188
170
189
jerry_value_t to_string = jerry_value_to_string (js_arg );
171
190
@@ -188,7 +207,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_string)
188
207
*/
189
208
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_function )
190
209
{
191
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
210
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
192
211
193
212
if (!jerry_value_is_function (js_arg ))
194
213
{
@@ -208,7 +227,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_function)
208
227
*/
209
228
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_native_pointer )
210
229
{
211
- jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_args );
230
+ jerry_value_t js_arg = jerryx_arg_js_iterator_pop (js_arg_iter_p );
212
231
213
232
if (!jerry_value_is_object (js_arg ))
214
233
{
@@ -237,7 +256,7 @@ JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_native_pointer)
237
256
#define JERRYX_ARG_TRANSFORM_OPTIONAL (type ) \
238
257
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_ ## type ## _optional) \
239
258
{ \
240
- return jerryx_arg_transform_optional (js_args , c_arg_p, jerryx_arg_transform_ ## type); \
259
+ return jerryx_arg_transform_optional (js_arg_iter_p , c_arg_p, jerryx_arg_transform_ ## type); \
241
260
}
242
261
243
262
JERRYX_ARG_TRANSFORM_OPTIONAL (number )
@@ -254,7 +273,7 @@ JERRYX_ARG_TRANSFORM_OPTIONAL (native_pointer)
254
273
*/
255
274
JERRYX_ARG_TRANSFORM_FUNC (jerryx_arg_transform_ignore )
256
275
{
257
- (void ) js_args ; /* unused */
276
+ (void ) js_arg_iter_p ; /* unused */
258
277
(void ) c_arg_p ; /* unused */
259
278
260
279
return jerry_create_undefined ();
0 commit comments