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
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to