@@ -345,8 +345,8 @@ typedef struct RObject mrbc_value;
345
345
346
346
<b>Examples:</b>
347
347
@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.
350
350
@endcode
351
351
352
352
@@ -355,8 +355,8 @@ typedef struct RObject mrbc_value;
355
355
356
356
<b>Examples:</b>
357
357
@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.
360
360
@endcode
361
361
362
362
@@ -365,8 +365,8 @@ typedef struct RObject mrbc_value;
365
365
366
366
<b>Examples:</b>
367
367
@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".
370
370
@endcode
371
371
372
372
@@ -427,21 +427,18 @@ typedef struct RObject mrbc_value;
427
427
428
428
@def MRBC_KW_DELETE(mrbc_value1,...)
429
429
Delete retrieved keyword arguments.
430
-
431
- @def MRBC_KW_NARGC()
432
- Get the number of arguments without keyword arguments.
433
430
*/
434
431
#define MRBC_KW_ARG (...) \
435
432
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 ) { \
437
434
MRBC_each(__VA_ARGS__)( MRBC_KW_ARG_decl2, __VA_ARGS__ ) \
438
435
}
439
436
#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));
441
438
442
439
#define MRBC_KW_DICT (dict ) \
443
440
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; } \
445
442
else { dict = mrbc_hash_new(vm, 0); }
446
443
447
444
#define MRBC_KW_ISVALID (kw ) (kw.tt != MRBC_TT_EMPTY)
@@ -452,16 +449,13 @@ typedef struct RObject mrbc_value;
452
449
(mrbc_raisef(vm, MRBC_CLASS(ArgumentError), "missing keyword: %s", #kw), 0))&&
453
450
454
451
#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 ])) ? \
456
453
(mrbc_raise(vm, MRBC_CLASS(ArgumentError), "unknown keyword"), 0) : 1)
457
454
458
455
#define MRBC_KW_DELETE (...) \
459
456
MRBC_each(__VA_ARGS__)( MRBC_KW_DELETE_decl, __VA_ARGS__ )
460
457
#define MRBC_KW_DELETE_decl (kw ) mrbc_decref(&kw);
461
458
462
- #define MRBC_KW_NARGC () \
463
- ((v[argc].tt == MRBC_TT_HASH || v[argc].tt == MRBC_TT_EMPTY) ? argc-1 : argc)
464
-
465
459
//@cond
466
460
#define MRBC_each (...) MRBC_each_sel(__VA_ARGS__, \
467
461
MRBC_each30,MRBC_each29,MRBC_each28,MRBC_each27,MRBC_each26, \
0 commit comments