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<>.

Regards,
Sven

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to