static GObjectClass * rbclt_container_get_container_class (VALUE rclass) { GObjectClass *ret = NULL; const RGObjClassInfo *cinfo = CLASS2CINFO (rclass); if (G_TYPE_IS_CLASSED (cinfo->gtype)) { gpointer cptr = g_type_class_ref (cinfo->gtype); if (g_type_interface_peek (cptr, CLUTTER_TYPE_CONTAINER)) ret = cptr; else g_type_class_unref (cptr); } if (ret == NULL) rb_raise (rb_eArgError, "expected class including Clutter::Container"); return ret; }
static VALUE asyncinitable_initialize(int argc, VALUE *argv, VALUE self) { const RGObjClassInfo* info; VALUE io_priority, cancellable, parameters, block; rb_scan_args(argc, argv, "03&", &io_priority, &cancellable, ¶meters, &block); info = CLASS2CINFO(self); if (info->klass != self) rb_raise(rb_eTypeError, "%s: class not registered with GLib", rb_class2name(self)); rbgio_gasyncinitable_new_async(info->gtype, parameters, io_priority, cancellable, block); return self; }
static VALUE rg_m_new(int argc, VALUE *argv, VALUE self) { const RGObjClassInfo* info; VALUE cancellable, parameters; GObject *object; VALUE result; rb_scan_args(argc, argv, "02", &cancellable, ¶meters); info = CLASS2CINFO(self); if (info->klass != self) rb_raise(rb_eTypeError, "%s: class not registered with GLib", rb_class2name(self)); object = rbgio_ginitable_new(info->gtype, parameters, cancellable); result = GOBJ2RVAL(object); g_object_unref(object); return result; }