Re: Why do constructors return GtkWidget?
- From: Andrew Paprocki <andrew ishiboo com>
- To: Sven Herzberg <herzi gnome-de org>
- Cc: gtk-devel-list <gtk-devel-list gnome org>
- Subject: Re: Why do constructors return GtkWidget?
- Date: Wed, 4 Nov 2009 13:11:29 -0500
2009/11/4 Sven Herzberg <herzi gnome-de org>:
> In my opinion the GTK+ way is really nice (just compare it to GStreamers
> element factory, which behaves essentially the same way, just as
> GnomeCanvas' gnome_canvas_item_new() function). It's really nice to get
> those items returned as the generic type (but Cody told you already).
We've found the generic type return to be harmful because it prevents
writing tools to find simple code bugs. Tools that analyze types can
ensure that GTK_FOO(widget) is a valid cast if the code previously did
GtkFoo *widget = gtk_foo_new();
It is much harder to do this when the constructor returns a GtkWidget.
Similarly, APIs that expect certain classes should take those classes
explicitly instead of GtkWidget (this is less commonly found). E.g.:
void i_only_take_a_gtk_foo(GtkWidget *widget)
] [Thread Prev