Re: undocumented inconsistency in call signatures (was Re: timeouts)



Chas Owens said:
What is intended:
Glib::Timeout->add(
        500,             #every half second (about)
        \?,           #execute this subrouting
        3000, 4000, 6000 #with these args in @_
);

What happens:
Glib::Timeout->add(
        500,      #every half second (about)
        \?,    #execute this subrouting
        3000,     #with this arg in $_[1]
        4000,     #at priority 4000 (really, really low)
        6000      #ignored
);

actually, that 6000 should not be ignored --- you should get a "usage"
warning, because you are attempting to pass too many parameters.


What the person should currently do:
Glib::Timeout->add(
        500,                 #every half second (about)
        \?,               #execute this subrouting
        [ 3000, 4000, 6000 ] #with these args in @{$_[0]}
);

this is correct.  gtk-perl allowed you to pass as many elements as you liked
through the user_data field.  gtk2-perl explicitly breaks compatibility with
that, and passes only a single scalar element for user data.


the idea behind using one function instead of two in the bindings is that the
_full forms in the C API are usually things that could be avoided if C allowed
default parameters; perl does, so ... well, you know.



-- 
muppet <scott at asofyet dot org>



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