[fpc-devel] Stringlist customsort
office at focusdata.at
Thu Nov 29 20:32:11 CET 2018
Currently, the implementation of cutomsorted stringlists ist very far
from satisfactory; you have to call the sort routine again whenever a
string is added to the stringlist or an item is changed, because the
stringlist cannot keep itself automatically sorted using a custom
compare function. There is a better implemetation using the
"experimental" define FPC_TESTGENERICS, but this code has not become
"mainstream" FPC for a long time now, and I feel that the use of
generics for the implementation of stringlists will also introduce quite
some unnecessary overhead.
I would like to propose one of two versions of improvement of the
non-FPC_TESTGENERICS TStringlist, that I would also be willing to
program and to submit a patch for it.
Just add a property OnSort of type TListSortCompare and always sort
using the user-provided function if the property is not nil. Automatic
sorting would only occur if sortstyle=sslauto, while the behaviour for
sortstyle=ssluser would remain as before for backward compatibility.
Variation two, more flexible:
Add a property OnSort of type TStringListSortCompare, which would allow
stringlists to be sorted not only by the value of the string, but also
by the value of the fields of the associated object. In that case it
would be necessary to add a new sortstyle sslobject, which would have to
be used when OnSort uses fields from the object for comparing, as in
this case the find method cannot use binary search for locating an item,
just like for unsorted stringlists (and the stringlist wouldn't know
otherwise that it can't use binary search).
More information about the fpc-devel