[fpc-devel] Re: enumerators (was: Free Pascal 2.4.2 released!)
DrDiettrich1 at aol.com
Sat Nov 13 20:56:28 CET 2010
Marco van de Voort schrieb:
> we have placed a new major release of the Free Pascal
> Compiler, version 2.4.2 on our ftp-servers.
> Some highlights are:
> * Support D2006+ FOR..IN, with some FPC specific enhancements. Refer to
> http://wiki.freepascal.org/for-in_loop for more information
A few notes on enumerators:
What restrictions apply to enumerators in general? IMO the loop variable
should be treated as "const", any change to an enumerated structure
(tree...) may result in obscure bugs. Like traversing strings seems not
to allow to change the string, by e.g. replacing '/' by '\'.
In the array enumerator, is it possible to use an pointer into the
array, instead of a copy of the element? This would allow to use arrays
of Class, Record and Object types in the same way (by reference).
The comparison in the UTF-8 string example is very questionable. First
ch(i) is not equivalent to ch, not even closely related, and the claim
of O(N^2) operations deserves an proof - IMO it's simply wrong.
In general, what's the benefit of using enumerators? IMO a for loop
executes faster on (linear) string and array types, where enumerator
calls occur in for-in (see also my note on the UTF-8 string example).
Thus enumerators are useful in detail with non-linear data structures,
like trees, linked lists, datasets(?) or collections.
More information about the fpc-devel