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.