[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