[fpc-devel] New feature announcement: constant parameters for generics

Marco van de Voort fpc at pascalprogramming.org
Mon Apr 27 00:10:44 CEST 2020

Op 2020-04-26 om 11:48 schreef Sven Barth via fpc-devel:
> Jeppe had provided a potential usecase on the core mailing list in 
> October '18. His example is not useable as-is, but to give you an idea:
>  As the compiler can inline all this, the writing of maintainable, 
> hardware agnostic frameworks for embedded controllers becomes easier.

(Actually you'd probably want to use atomic RMW operations, because 
otherwise a write from a thread or interrupt routine could be 
overwritten, even if it was not on bits that clash)

> A further example could be to determine the size of a hash table: 
> Determining that at compile time instead of runtime might allow for 
> better code. At the same time the user of that code would still be 
> able to influence it.

Yup. My Genlight sorted stringlist could also use it for tuning. To 
workaround the classic tstringlist ordered insertion limit, it uses an 
(dyn) array of small arrays to store the strings, which postpones the 
inevitable with about a magnitude 10-20.

The constant would be the size of the deeper array, now a weighted value 

Larger (e.g. 4096) means less memory overhead, faster iteration, but 
with slower (random) insertion performance, which can be perfectly fine 
if your datasource is mostly in order + few mutations.

More information about the fpc-devel mailing list