René Scharfe <l....@web.de> writes:
>> You can hack around it by passing a wrapper callback that flips the
>> arguments. Since we have a "void *" data pointer, that would point to a
>> struct holding the "real" callback and chaining to the original data
>> It does incur the cost of an extra level of indirection for each
>> comparison, though (not just for each qsort call).
> Indeed. We'd need a perf test to measure that overhead before we
> could determine if that's a problem, though.
I agree. Hopefully it won't be too much cost.
>> You could do it as zero-cost if you were willing to turn the comparison
>> function definition into a macro.
> Ugh. That either requires changing the signature of qsort_s() based
> on the underlying native function as well, or using a void pointer to
> pass the comparison function, no? Let's not do that, at least not
> without a good reason.
Let's not go there. It may be zero runtime cost, but the cognitive
cost for people who need to code the comparison callback using the
macro is high.