[fpc-pascal] List of integers? Any class available in RTL or FCL to help?
Graeme Geldenhuys
mailinglists at geldenhuys.co.uk
Sun Dec 4 11:25:40 CET 2016
Hi Florain,
Thanks for the quick response.
On 2016-12-04 10:06, Florian Klämpfl wrote:
> You mean you want allow duplicates?
I want the list to silently ignore duplicates.
eg:
numberList.Duplicates := dupIgnore;
numberList.Sorted := true;
numberList.add(1);
numberList.add(2);
numberList.add(3);
numberList.add(1);
The list will only contain 3 items in the end and the list is always sorted.
> Then you should have a look at TFPGList, even if you do not like
> generics. TFPGList is our approach to extend FPC carefully with generics.
At the moment I'm using FPC 2.6.4 for the work I'm doing. I can't yet
move to FPC 3.0.0.
My worry about Generics is the following statement in the fgl.pp unit:
"
{ be aware, this unit is a prototype and subject to be changed heavily }
"
So that tells me this is not to be used in production software as it is
more like an experiment than anything else.
> As it is written in objfpc
> mode, you are forced not to clutter your code with specializations but you do once a TInt8List =
> specialize TFPGList<Int8> etc. and continue to use TInt8List.
This is good news at least. I also only use objfpc mode in my code. I'm
not totally discarding the use of Generics, I'm just worried about that
prototype statement I mentioned. That made me thing that I might be
better off implementing my own TList<T> because I don't know the future
of the fgl.pp unit. But then if I go to all the trouble of implementing
my own TList<T> then I can just as well use TIntegerList = class(TList)
or something (but I do realise this last point will most likely be more
coding).
ps:
Is it recommended to always define a specialised type? I guess it
makes the code more clear when read by a human. Or is it perfectly
acceptable doing:
var
lst: specialize TFPGList<Int8>;
begin
...
end;
> Further, TFPGList is a
> wrapper/anchestor around TFPSList, so each specialization does not explode into another full TList
> like implementation: a lot of code is shared by all specializations of TFPGList.
I was just looking over the fgl.pp unit and noticed that exact point. So
that is at least another good design.
Regards,
Graeme
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/
My public PGP key: http://tinyurl.com/graeme-pgp
More information about the fpc-pascal
mailing list