8000 follow commit #dfdc6d1 · mrubyc/mrubyc@6629d16 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6629d16

Browse files
follow commit #dfdc6d1
1 parent 277c80a commit 6629d16

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

src/value.h

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,8 @@ typedef struct RObject mrbc_value;
345345
346346
<b>Examples:</b>
347347
@code
348-
int arg1 = MRBC_ARG_I(1); // Get a 1st argument as an integer.
349-
int arg1 = MRBC_ARG_I(1,111); // with default value 111.
348+
int arg1 = MRBC_ARG_I(1); // Get a 1st argument as an integer.
349+
int arg1 = MRBC_ARG_I(1, 111); // with default value 111.
350350
@endcode
351351
352352
@@ -355,8 +355,8 @@ typedef struct RObject mrbc_value;
355355
356356
<b>Examples:</b>
357357
@code
358-
double arg1 = MRBC_ARG_F(1); // Get a 1st argument as an double.
359-
double arg1 = MRBC_ARG_F(1, 2.7); // with default value 2.7.
358+
double arg1 = MRBC_ARG_F(1); // Get a 1st argument as an double.
359+
double arg1 = MRBC_ARG_F(1, 2.7); // with default value 2.7.
360360
@endcode
361361
362362
@@ -365,8 +365,8 @@ typedef struct RObject mrbc_value;
365365
366366
<b>Examples:</b>
367367
@code
368-
const char *arg1 = MRBC_ARG_S(1); // Get a 1st argument as an double.
369-
const char *arg1 = MRBC_ARG_S(1,"DEFAULT"); // with default value "DEFAULT".
368+
const char *arg1 = MRBC_ARG_S(1); // Get a 1st argument as an double.
369+
const char *arg1 = MRBC_ARG_S(1,"DEFAULT"); // with default value "DEFAULT".
370370
@endcode
371371
372372
@@ -427,21 +427,18 @@ typedef struct RObject mrbc_value;
427427
428428
@def MRBC_KW_DELETE(mrbc_value1,...)
429429
Delete retrieved keyword arguments.
430-
431-
@def MRBC_KW_NARGC()
432-
Get the number of arguments without keyword arguments.
433430
*/
434431
#define MRBC_KW_ARG(...) \
435432
MRBC_each(__VA_ARGS__)( MRBC_KW_ARG_decl1, __VA_ARGS__ ) \
436-
if( v[argc].tt == MRBC_TT_HASH ) { \
433+
if( v[argc+1].tt == MRBC_TT_HASH ) { \
437434
MRBC_each(__VA_ARGS__)( MRBC_KW_ARG_decl2, __VA_ARGS__ ) \
438435
}
439436
#define MRBC_KW_ARG_decl1(kw) mrbc_value kw = {.tt = MRBC_TT_EMPTY};
440-
#define MRBC_KW_ARG_decl2(kw) kw = mrbc_hash_remove_by_id(&v[argc], mrbc_str_to_symid(#kw));
437+
#define MRBC_KW_ARG_decl2(kw) kw = mrbc_hash_remove_by_id(&v[argc+1], mrbc_str_to_symid(#kw));
441438

442439
#define MRBC_KW_DICT(dict) \
443440
mrbc_value dict; \
444-
if( v[argc].tt == MRBC_TT_HASH ) { dict = v[argc]; v[argc].tt = MRBC_TT_EMPTY; } \
441+
if( v[argc+1].tt == MRBC_TT_HASH ) { dict = v[argc+1]; v[argc+1].tt = MRBC_TT_EMPTY; } \
445442
else { dict = mrbc_hash_new(vm, 0); }
446443

447444
#define MRBC_KW_ISVALID(kw) (kw.tt != MRBC_TT_EMPTY)
@@ -452,16 +449,13 @@ typedef struct RObject mrbc_value;
452449
(mrbc_raisef(vm, MRBC_CLASS(ArgumentError), "missing keyword: %s", #kw), 0))&&
453450

454451
#define MRBC_KW_END() \
455-
(((v[argc].tt == MRBC_TT_HASH) && mrbc_hash_size(&v[argc])) ? \
452+
(((v[argc+1].tt == MRBC_TT_HASH) && mrbc_hash_size(&v[argc+1])) ? \
456453
(mrbc_raise(vm, MRBC_CLASS(ArgumentError), "unknown keyword"), 0) : 1)
457454

458455
#define MRBC_KW_DELETE(...) \
459456
MRBC_each(__VA_ARGS__)( MRBC_KW_DELETE_decl, __VA_ARGS__ )
460457
#define MRBC_KW_DELETE_decl(kw) mrbc_decref(&kw);
461458

462-
#define MRBC_KW_NARGC() \
463-
((v[argc].tt == MRBC_TT_HASH || v[argc].tt == MRBC_TT_EMPTY) ? argc-1 : argc)
464-
465459
//@cond
466460
#define MRBC_each(...) MRBC_each_sel(__VA_ARGS__, \
467461
MRBC_each30,MRBC_each29,MRBC_each28,MRBC_each27,MRBC_each26, \

src/vm.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,9 @@ static inline mrbc_value * mrbc_get_self( struct VM *vm, mrbc_value *regs )
204204
*/
205205
static inline int mrbc_c_block_given( struct VM *vm, mrbc_value v[], int argc )
206206
{
207-
return v[argc+1].tt == MRBC_TT_PROC;
207+
int ofs = 1 + (v[argc+1].tt == MRBC_TT_HASH);
208+
209+
return v[argc + ofs].tt == MRBC_TT_PROC;
208210
}
209211

210212
#ifdef __cplusplus

0 commit comments

Comments
 (0)
0