[Kde-bindings] Constructor error with QtRuby redux

Caleb Tennis caleb at gentoo.org
Tue Dec 6 13:43:06 UTC 2005


Here's the issue.  In Ruby 1.8.4, there's a new "rb_obj_respond_to", with
this syntax:

rb_obj_respond_to(VALUE obj, ID id, int priv);

Where 'priv' represents whether to search private methods or not.

rb_respond_to now looks like this:

int
rb_respond_to(VALUE obj, ID id)
{
    return rb_obj_respond_to(obj, id, Qfalse);
}


Thus, objects don't directly "respond" to "initialize" anymore, since it's
a private method.  So, we need to use rb_obj_respond_to in place, and use
a Qtrue to tell it to search private methods.

Problem is, this is only valid > 1.8.3, as far as I can see.  So we'll
need some trickery to make sure it compiles properly.


> Okay, I just ran some debugging with Ruby 1.8.3 and Ruby 1.8.4_pre1 and
> the difference is this:
>
> in Qt.cpp new_qt:
>
>    if (rb_respond_to(result, rb_intern("initialize")) != 0) {
>         rb_obj_call_init(result, argc, argv);
>     }
>
> This never gets called in Ruby 1.8.4_pre1&2.  The "result" object looks
> identical between Ruby versions, though.  Thus, it seems as though the
> catch and throw is happening properly, but the object doesn't know it
> responds to initialize.
>
>
>
> _______________________________________________
> Kde-bindings mailing list
> Kde-bindings at kde.org
> https://mail.kde.org/mailman/listinfo/kde-bindings
>





More information about the Kde-bindings mailing list