コード例 #1
0
ファイル: str.c プロジェクト: tokuhirom/kiji
static void Str_lc(MVMThreadContext *tc, MVMCallsite *callsite, MVMRegister *args) {
  MVMArgProcContext arg_ctx; arg_ctx.named_used = NULL;
  MVM_args_proc_init(tc, &arg_ctx, callsite, args);
  MVMObject* self     = MVM_args_get_pos_obj(tc, &arg_ctx, 0, MVM_ARG_REQUIRED).arg.o;
  MVM_args_proc_cleanup(tc, &arg_ctx);

  MVM_gc_root_temp_push(tc, (MVMCollectable **)&self);

  MVMString * self_s = REPR(self)->box_funcs->get_str(tc, STABLE(self), self, OBJECT_BODY(self));

  MVMString * result = MVM_string_lc(tc, (MVMString*)self_s);
  assert(result);

  MVM_args_set_result_str(tc, result, MVM_RETURN_CURRENT_FRAME);

  MVM_gc_root_temp_pop_n(tc, 1);
}
コード例 #2
0
ファイル: ops.c プロジェクト: Arcterus/MoarVM
MVMint64 MVM_string_equal_at_ignore_case(MVMThreadContext *tc, MVMString *a, MVMString *b, MVMint64 offset) {
    return MVM_string_equal_at(tc, MVM_string_lc(tc, a), MVM_string_lc(tc, b), offset);
}