|
Rockbox mail archiveSubject: Re: how is strnatcmp aka "Interpret numbers while sorting" supposed to sort?Re: how is strnatcmp aka "Interpret numbers while sorting" supposed to sort?
From: Bryan VanDyke <bryan.vandyke_at_gmail.com>
Date: Thu, 19 Mar 2009 11:14:52 -0400 Thomas Martitz wrote: > Bryan VanDyke wrote: >> Thomas Martitz wrote: >> >>> Linus Nielsen Feltzing wrote: >>> >>>> Mike Holden wrote: >>>> >>>>> Maybe leading zeros should only be stripped if another digit follows >>>>> them? >>>>> >>>>> I use names like 00RockFaves.m3u, 00ClassicRock.m3u for playlists >>>>> that I >>>>> have created (as opposed to original artist albums), and the leading >>>>> zerozero is deliberately there to sort them at the top. >>>>> >>>> That's an interesting observation. I believe leading zeroes are >>>> treated like whitespace in the current code, but in this case I think >>>> that the final zero should be kept. >>>> >>>> Linus >>>> >>> That's not trivial, and adds complexity. You basically need to look at >>> the current, the next, and one more for this, instead of just the >>> current char. >>> >>> >> >> Actually it not that bad. >> >> Pseudo code: >> >> get current >> get next >> while (current != null && next != null && current == '0' && next is a >> number) >> { >> current = next >> next = get next >> } >> >> >> > Now imagine this for every char in a string, and for every string in a > file list (with some 100 files). It's three-times (or even more) more > complexity than just. > while (is_zero(a)) > a = next; > > We're on embedded, and thus slow systems. Your would surely work well on > a desktop app, but for mp3-players we need fast and small code. The gain > has to justify the code, and I don't think it does it in this example. > What about something like this. Taking in consideration the isspace function/comparison was removed? And isdigit is supposed to give nonzero on nodigit values. /* skip over leading zeros */ while ('0' == ca && nat_isdigit(ca_next) ) { ca = to_int(a[++ai]); ca_next = to_int(a[ai+1]); } Received on 2009-03-19 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |