On Sun, 8 Nov 2015, Sven Barth wrote:
On 08.11.2015 19:38, leledumbo wrote:
FCL-STL from the start has different iterator usage pattern compared to
existing containers (say a TSQLQuery). i.e. the common pattern is:
It := SomeContainer.Iterator;
while not It.EOF do begin
...
It.Next;
end;
instead, it uses:
It := SomeContainer.Iterator;
repeat
...
until not It.Next;
Examining the iterator code, I can see that the latter has at least the
following disadvantage:
One must add additional guard before executing repeat-until to make sure
that the container has at least 1 data. Otherwise, Next in until expression
will trigger EAccessViolation.
I would like to change the pattern to follow existing one. However, FCL-STL
has been available for some time now that changing the pattern will break
existing code. How do you think I should proceed on this one?
I'd say don't change. In my opinion the need to restructure one's code
outweighs that disadvantage. If anything then add a for-in compatible
iterator like was done for TVector<>.
Enumerator, you mean ?
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal