On 12/19/06, Jon Garvin <jgarvin.lists / gmail.com> wrote:
> Vincent Fourmond wrote:
> >   No: is_a? also returns true when the @my_obj is an instance of a
> > subclass of Klass.
> >
> >
> I realize that, but that's beyond the scope of the issue I'm having.
> That's why my original post explicitly said to ignore the superclass and
> module stuff it does (twice).
> >   If you do
> >
> > ri is_a?
> >
> >   on command-line, you'll get immediate answer.
> >
> >
> Nope, all I get is the exact same API stuff I've already looked at
> before asking, and quoted in my original post.
>
> To clarify, I'm interested in *how*, not *if*,  is_a? determines whether
> @my_obj.is_a?(Klass) with no concern for superclasses or modules.  I'm
> fairly confident it's going to take somebody familiar with Ruby's source
> code, not just the API, to answer this one.
>

Have you downloaded the ruby source code and poked around a little
bit?  It's always very educational -- Matz writes very readable C
code.

I would recommend grabbing the source code, open up "object.c" and do
a search for "rb_obj_is_kind_of".  Answer should be right there.  It's
not quite as simple as just comparing object IDs, but it is something
close to that.

Blessings,
TwP

PS  I don't know exactly how much you want to know about the internals
of the ruby C code. A single ruby-talk posting would hardly do it
justice. Once resource to get you started, though, is the English
translation of the Ruby Hacking Guide:

http://rhg.rubyforge.org/