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 2026

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

Instance Method Details

#==(obj2)

[ GitHub ]

  
# File 'error.c', line 1931

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 2019

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 1916

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 1962

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 || d == Qundef || NIL_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;
}