コード例 #1
0
ファイル: rbcltcontainer.c プロジェクト: orospakr/rbclutter
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;
}
コード例 #2
0
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, &parameters, &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;
}
コード例 #3
0
ファイル: ginitable.c プロジェクト: msakai/ruby-gnome2
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, &parameters);

        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;
}