Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: 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: Thomas Martitz <thomas.martitz_at_fhtw-berlin.de>
Date: Thu, 19 Mar 2009 16:04:13 +0100

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.
Received on 2009-03-19


Page was last modified "Jan 10 2012" The Rockbox Crew
aaa