Etk_Widget *etk_button_new(); Etk_Widget *etk_button_new_with_label(const char *label); Etk_Widget *etk_button_new_from_stock(Etk_Stock_Id stock_id); // Etk_Stock_Id is an enum #### sub new { my $class = shift; my $self = $class->SUPER::new(); if(@_ == 1) { my $thing = shift; $self->{WIDGET} = $thing =~ /\D/ ? Etk::etk_button_new_with_label($thing) : Etk::etk_button_new_from_stock($thing); } else { $self->{WIDGET} = Etk::etk_button_new(); } bless($self, $class); return $self; } #### $tree->Sort( \&sort_func, $asc, $column); # the same routine but without a coderef works differently $tree->Sort(NUMERIC, $asc, $column); # where NUMERIC is a constant, and thus the sorting is done in C to make it faster and avoid the roundtrip to perl.