Sha256: d6c89282b893c38eedf5ec85909be6e9deb9c09cf0829f58b5133ecdb30fa1c9
Contents?: true
Size: 1.16 KB
Versions: 3
Compression:
Stored size: 1.16 KB
Contents
#include "st_name.h" static VALUE extract_st_name(VALUE object) { return rb_funcall(object, rb_intern("st_name"), 0); } VALUE get_cname(VALUE constant) { if(rb_obj_is_kind_of(constant, rb_cClass)) { return rb_class_name(constant); } else if(rb_obj_is_kind_of(constant, rb_cModule)) { return rb_mod_name(constant); } else { return Qundef; // This is still possible! } } static VALUE object_name_for_cBasicObject(VALUE object, VALUE klass) { VALUE cname = get_cname(klass); if(cname == Qundef) return Qundef; return rb_sprintf("#<%"PRIsVALUE":%p>", cname, (void*)object); } static VALUE object_name_for_cObject(VALUE object, VALUE klass) { int status; VALUE st_name = rb_protect(extract_st_name, object, &status); if(status != 0) { rb_set_errinfo(Qnil); return object_name_for_cBasicObject(object, klass); } else { return st_name; } } VALUE st_name(VALUE object, VALUE klass) { if(rb_obj_is_kind_of(object, rb_cObject)) { return object_name_for_cObject(object, klass); } else if(rb_obj_is_kind_of(object, rb_cBasicObject)) { return object_name_for_cBasicObject(object, klass); } else { return Qundef; } }
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
stack_trace-0.8.0 | ext/stack_trace/st_name.c |
stack_trace-0.7.0 | ext/stack_trace/st_name.c |
stack_trace-0.6.0 | ext/stack_trace/st_name.c |