Re: New 'GObject' as base for GtkObject?

Karl Nelson <> writes: 
> I really don't like this example much.  You are enforcing
> entirely in the run time.  I would much perfer...
>  void
>  gtk_radio_set_active (GtkRadioIntf *object, gboolean active)
>  {
>    g_return_if_fail( GTK_IS_RADIO_INTF(object));
>    GTK_GET_RADIO(object)->set_active (object, active);
>  }

Ideally you could call the function like so:
gtk_radio_set_active(GTK_RADIO(object), TRUE);

which means this:

gtk_radio_set_active(GtkRadio* radio, gboolean active)

   radio->set_active(radio, active);

OK, just like Karl's except for the name of the interface.

I don't see why the user cares whether the implementation is in a base
class or in a derived class, so I wouldn't like to see the type called
GtkRadioInterface and I wouldn't like to see the casts be
different. After all both interfaces and objects are opaque types;
it's silly to make the user-visible API depend on how they are

In particular it's weird if I cast to GtkObject to operate on pure
interface base classes and GtkClassIWant to operate on "real" base
classes; people would have to look that up in the docs every time,
there is no reason they should have to care about it.

A design goal should be that user code looks the same whether a given
interface comes with an implementation or not...


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]