On Fri, Jun 25, 2004 at 09:46:53AM +0200, Leopold Toetsch wrote:
> Nicholas Clark <[EMAIL PROTECTED]> wrote:
> > I've just fallen into this trap, and I doubt I'll be the last one:
> 
> > void Parrot_PMC_set_intval_intkey(Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int 
> > value, Parrot_Int key) {
> >     VTABLE_set_integer_keyed_int(interp, pmc, key, value);
> >}
> 
> > Is there any reason why the vtable is key, value but the extension
> > interface is value, key? This parameter transposition strikes me as
> > asking for trouble.
> 
> It seems order was chosen according to function name (_intval _intkey).
> 
> > I'll patch everything in core to make value last if consensus is that
> > this is the right thing to do.
> 
> Yep. I'd swap function names as well as argument order, so that
> everything matches the vtable prototype.

I'm not sure that swapping all the function names is great. The vtable
currently has entries such as

INTVAL get_integer()
INTVAL get_integer_keyed(PMC* key)
INTVAL get_integer_keyed_int(INTVAL key)
INTVAL get_integer_keyed_str(STRING* key)

void set_integer_native(INTVAL value)
void set_integer_same(PMC* value)
void set_integer_keyed(PMC* key, INTVAL value)
void set_integer_keyed_int(INTVAL key, INTVAL value)
void set_integer_keyed_str(STRING* key, INTVAL value)

                       ^key type
                 ^variant
         ^slot type
     ^action


and the rename change would turn

void Parrot_PMC_set_intval_intkey(Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int 
value, Parrot_Int key)

to

void Parrot_PMC_set_intkey_intval(Parrot_INTERP interp, Parrot_PMC pmc, Parrot_Int 
value, Parrot_Int key)
                           ^slot type
                    ^key type and variant
                ^action

which isn't the same order

This may be because the current order (action, slot type, variant/key type)
followed by value reflects the way my brain orders the importance of things.

Nicholas Clark

Reply via email to