On Thu, Apr 24, 2008 at 12:50:09AM +0100, Rudolf Lippan wrote:
> 
> 
> On Wed, 23 Apr 2008 09:34:13 +0100, Tim Bunce <[EMAIL PROTECTED]> wrote:
> 
> > Here's a more refined and detailed outline. It's evolved from one I
>  
> aka more involved ;)

Naturally ;)

> > sub _concat_hash_sorted {
> >     my ( $hash_ref, $kv_separator, $pair_separator, $value_format, 
> > $sort_type ) = @_;


> Looks fine. I did draft of the above (without the neatsvpv for right now as
> I need to dig into that some more), and I have couple of questions:
> 
> 1. You no longer want _concat_hash_keys() ?

The name has changed, the details haven't much. The idea is the same.
It was a poor name as it needs to concat both keys and values.

> 2. How closely are you expecting the C API to match the perl api?  It looks
> like the C stuff would have to do less work if it were to pass some of the
> string lengths around.

I had originally thought I'd want a C API for _get_sorted_hash_keys()
for the ShowErrorStatement code to use. Now, with the revised
description, that's not needed. The new _concat_hash_sorted()
functionality means it can be used directly by the ShowErrorStatement
code as well as prepare_cached and connect_cached.

So I'd be happy to see an API like this:

SV *_concat_hash_sorted( HV *hv, char *kv_sep, char *pair_sep, SV 
*value_format, SV *sort_type)

The kv_sep & pair_sep params could be SV*'s if that's easier to implement.

> 3. Do we worry about Magic here?

Not beyond the basic best practice of using this at appropriate places:

        if (SvGMAGICAL(sv))
            mg_get(sv);

> > p.s. Some tests with reasonable coverage would be the icing on the cake!
> 
> Of course!

Wonderful. Thanks!

Tim.

Reply via email to