[fpc-devel] Who maintains TDictionary? // Re: RFC: Improvements for TDictionary and other hash containers
    Martin Frb 
    lazarus at mfriebe.de
       
    Tue Apr 15 14:16:23 CEST 2025
    
    
  
Quick question
When re-using known hash in rehash
https://gitlab.com/martin_frb/fpc-src/-/commit/9b398efb33897b3b5e98678033ddaafd1bcea883
Rehash is (mostly?) used for resize.
But an inherited class could change the hash algorithm and call it.
So there need to be a way to force new hashes.
1) Split into rehash and resize
Contra: Code duplication
2) New param
    AForceHashCalculation: Boolean = True
Default to current behaviour.
2) Use existing "AForce"
Slight change of existing code calling it with AForce=False, but new 
size, and new hash algorithm.
AForce is currently set to true by
procedure 
TOpenAddressingTombstones<OPEN_ADDRESSING_CONSTRAINTS>.ClearTombstones;
-----------
2nd question
Most subclasses use the same code in  FindBucketIndex(AItems....)
1) Move to TOpenAddressing
Contra: extra code for subclasses not using it
Contra: if new subclasses do not override either FindBucketIndex or 
FindBucketIndexForHash then it creates a circle.
   (Old subclasses must have it already overriden
2) New subclass inbetween TOpenAddressingSingleHash ? Name?
3) Leave as in the commit?
Contra: Duplicate code
    
    
More information about the fpc-devel
mailing list