123456789_123456789_123456789_123456789_123456789_

Class: NameError::message

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: error.c,
error.c

Class Method Summary

Instance Method Summary

Class Method Details

._load(str)

[ GitHub ]

  
# File 'error.c', line 2125

static VALUE
name_err_mesg_load(VALUE klass, VALUE str)
{
    return str;
}

Instance Method Details

#==(obj2)

[ GitHub ]

  
# File 'error.c', line 2030

static VALUE
name_err_mesg_equal(VALUE obj1, VALUE obj2)
{
    VALUE *ptr1, *ptr2;
    int i;

    if (obj1 == obj2) return Qtrue;
    if (rb_obj_class(obj2) != rb_cNameErrorMesg)
        return Qfalse;

    TypedData_Get_Struct(obj1, VALUE, &name_err_mesg_data_type, ptr1);
    TypedData_Get_Struct(obj2, VALUE, &name_err_mesg_data_type, ptr2);
    for (i=0; i<NAME_ERR_MESG_COUNT; i++) {
        if (!rb_equal(ptr1[i], ptr2[i]))
            return Qfalse;
    }
    return Qtrue;
}

#_dump(limit)

[ GitHub ]

  
# File 'error.c', line 2118

static VALUE
name_err_mesg_dump(VALUE obj, VALUE limit)
{
    return name_err_mesg_to_str(obj);
}

#initialize_copy(obj2)

[ GitHub ]

  
# File 'error.c', line 2015

static VALUE
name_err_mesg_init_copy(VALUE obj1, VALUE obj2)
{
    VALUE *ptr1, *ptr2;

    if (obj1 == obj2) return obj1;
    rb_obj_init_copy(obj1, obj2);

    TypedData_Get_Struct(obj1, VALUE, &name_err_mesg_data_type, ptr1);
    TypedData_Get_Struct(obj2, VALUE, &name_err_mesg_data_type, ptr2);
    MEMCPY(ptr1, ptr2, VALUE, NAME_ERR_MESG_COUNT);
    return obj1;
}

#to_str

[ GitHub ]

  
# File 'error.c', line 2061

static VALUE
name_err_mesg_to_str(VALUE obj)
{
    VALUE *ptr, mesg;
    TypedData_Get_Struct(obj, VALUE, &name_err_mesg_data_type, ptr);

    mesg = ptr[NAME_ERR_MESG__MESG];
    if (NIL_P(mesg)) return Qnil;
    else {
        struct RString s_str, d_str;
        VALUE c, s, d = 0, args[4];
        int state = 0, singleton = 0;
        rb_encoding *usascii = rb_usascii_encoding();

#define FAKE_CSTR(v, str) rb_setup_fake_str((v), (str), rb_strlen_lit(str), usascii)
        obj = ptr[NAME_ERR_MESG__RECV];
        switch (obj) {
          case Qnil:
            d = FAKE_CSTR(&d_str, "nil");
            break;
          case Qtrue:
            d = FAKE_CSTR(&d_str, "true");
            break;
          case Qfalse:
            d = FAKE_CSTR(&d_str, "false");
            break;
          default:
            d = rb_protect(name_err_mesg_receiver_name, obj, &state);
            if (state || NIL_OR_UNDEF_P(d))
                d = rb_protect(rb_inspect, obj, &state);
            if (state) {
                rb_set_errinfo(Qnil);
            }
            d = rb_check_string_type(d);
            if (NIL_P(d)) {
                d = rb_any_to_s(obj);
            }
            singleton = (RSTRING_LEN(d) > 0 && RSTRING_PTR(d)[0] == '#');
            break;
        }
        if (!singleton) {
            s = FAKE_CSTR(&s_str, ":");
            c = rb_class_name(CLASS_OF(obj));
        }
        else {
            c = s = FAKE_CSTR(&s_str, "");
        }
        args[0] = rb_obj_as_string(ptr[NAME_ERR_MESG__NAME]);
        args[1] = d;
        args[2] = s;
        args[3] = c;
        mesg = rb_str_format(4, args, mesg);
    }
    return mesg;
}