Dear all, I'm trying to expose the "collision" signal of a ClutterBox2DChild. I've wrapped the class as per the documentation (included below) which uses the _WRAP_SIGNAL() macro. The generated code (immediately below) gets the parent class of the current object's class and then looks for the "collision" signal handler in the base class. However, in general g_signal_new is used to create a new signal which is normally stored in static gint my_type_signals[LAST_SIGNAL]; rather than being stored in some structure in the base class. My question is, why then does the generated code from _WRAP_SIGNAL try and access base->the_signal_name? void Clutter::Box2D::Box2DChild::on_collision(Glib::RefPtr<Clutter::Box2D::Box2DCollision> & c) { BaseClassType *const base = static_cast<BaseClassType*>( g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class). ); if(base && base->collision) (*base->collision)(gobj(),_CONVERT(Glib::RefPtr<Clutter::Box2D::Box2DCollision>&,ClutterBox2DCollision*,c,57)); } snipped box2d-child.hg: class Box2DChild : public Clutter::ChildMeta { _CLASS_GOBJECT(Box2DChild, ClutterBox2DChild, CLUTTER_BOX2D_CHILD, Clutter::ChildMeta, ClutterChildMeta) protected: _CTOR_DEFAULT public: _WRAP_CREATE() _WRAP_SIGNAL(void collision(Glib::RefPtr<Clutter::Box2D::Box2DCollision> & c), "collision") }; snipped convert_clutter_box2d.m4: _CONVERSION(`const Glib::RefPtr<Box2DCollision>&',`ClutterBox2DCollision*',__CONVERT_REFPTR_TO_P) _CONVERSION(`ClutterBox2DCollision*',`Glib::RefPtr<Box2DCollision>',`Glib::wrap($3)') _CONVERSION(`ClutterBox2DCollision*',`Glib::RefPtr<const Box2DCollision>',`Glib::wrap($3)') _CONVERSION(`const Glib::RefPtr<Clutter::Box2D::Box2DCollision>&',`ClutterBox2DCollision*',__CONVERT_REFPTR_TO_P) -- Aidan Delaney
Attachment:
signature.asc
Description: This is a digitally signed message part