static YogVal end(YogEnv* env, YogVal self, YogVal pkg, YogVal args, YogVal kw, YogVal block) { SAVE_ARGS5(env, self, pkg, args, kw, block); YogVal group = YNIL; YogVal retval = YUNDEF; PUSH_LOCALS2(env, group, retval); YogCArg params[] = { { "|", NULL }, { "group", &group }, { NULL, NULL } }; YogGetArgs_parse_args(env, "end", params, args, kw); CHECK_SELF_MATCH(env, self); if (IS_FIXNUM(group)) { retval = end_num(env, self, VAL2INT(group)); } else if (IS_NIL(group)) { retval = end_num(env, self, 0); } else if (IS_PTR(group) && (BASIC_OBJ_TYPE(group) == TYPE_STRING)) { retval = end_str(env, self, group); } else { raise_invalid_group(env, group); } RETURN(env, retval); }
static YogVal do_match_or_search(YogEnv* env, YogHandle* self, YogHandle* s, YogHandle* pos, YogVal (*f)(YogEnv*, YogHandle*, YogHandle*, int_t)) { YogMisc_check_String(env, s, "s"); YogMisc_check_Fixnum_optional(env, pos, "pos"); return f(env, s, self, pos == NULL ? 0 : VAL2INT(HDL2VAL(pos))); }
static YogVal group(YogEnv* env, YogHandle* self, YogHandle* pkg, YogHandle* group) { CHECK_SELF_MATCH2(env, self); if ((group == NULL) || IS_NIL(HDL2VAL(group))) { return group_num(env, self, 0); } if (IS_FIXNUM(HDL2VAL(group))) { return group_num(env, self, VAL2INT(HDL2VAL(group))); } if (IS_PTR(HDL2VAL(group)) && (BASIC_OBJ_TYPE(HDL2VAL(group)) == TYPE_STRING)) { return group_str(env, self, group); } raise_invalid_group(env, HDL2VAL(group)); return YUNDEF; }
static VALUE ErrorC(VALUE self, VALUE prefix, VALUE num, VALUE text) { MqErrorC(MQCTX, VAL2CST(prefix), VAL2INT(num), VAL2CST(text)); return Qnil; }