You could potentially emulate the Perl way using the macros and functions. See the perlapi (perldoc) for: sortsv - to do the sort (doh!) hv_iterkeysv - to grab the keys, and av_push to build the array for sorting. # warning - example stolen from tt2 code AV *result = newAV(); HE *he; hv_iterinit(hash); while ((he = hv_iternext(hash))) { av_push(result, SvREFCNT_inc((SV *) hv_iterkeysv(he))); }
sortsv(AvARRAY(result), av_len(result)+1, Perl_sv_cmp_locale); Or something similar (there are other sorts in pp_sort.c I think). Cheers. On Mon, Mar 07, 2005 at 01:13:24PM -0500, [EMAIL PROTECTED] wrote: > Hi Guys > > I am re-implementing a perl subroutine in C and this perl-subroutine > sorts the key of a hash given to it as input before using it. This hash > usually hold about 3000-4000 keys. So I am wondering what to do here: > > 1) Create another hash in perl-space and sort its keys using the perl > sort() function and then pass that hash as input > 2) Write my own sort function or, even better, use one from a better > source like the Gnu Scientific Library or another third party library. > > So, what I am basically asking is if it is worth replaceing perl's sort > function with another one in inlined space or not ? > > Thanks ! > Nitin -- http://www.piersharding.com http://search.cpan.org/~piers/