[fpc-devel] Who maintains TDictionary? // Re: RFC: Improvements for TDictionary and other hash containers
Martin Frb
lazarus at mfriebe.de
Tue Apr 15 22:06:06 CEST 2025
On 13/04/2025 21:39, Michael Van Canneyt via fpc-devel wrote:
>
>> If keys could be accessed by index (the internal slot), the
>> TDictionary.IndexOfKey
>> and
>> TDictionary.Keys[idx]
>
> That seems like a more 'conventional' solution to me.
>
> I'll leave it up to you how to enhance TDictionary using either
> solution...
Index may be misleading as it points to buckets, and they aren't
continuous.
FindBucketIndex is already protected. So I can call that from a subclass.
If I can add protected methods
Function GetKeyFromBucket: TKey;
Function GetDataFromBucket: TValue;
Or
Function GetItemFromBucket(idx: sizeint): TItem; // contains hash,key
and value
Function GetItemPtrFromBucket(idx: sizeint): PItem; // no need to copy
the content
The last one could be named GetMutableItemFromBucket.
Of course it has the issue that the slots for hash and key MUST NOT be
written.
So maybe the former 2 methods (getKeyFromBucket and GetValueFromBucket /
maybe GetMutableValueFromBucket).
More information about the fpc-devel
mailing list