Summary: Generic hash tables
                 Project: Freeciv
            Submitted by: pepeto
            Submitted on: vendredi 29.10.2010 à 21:47
                Category: general
                Priority: 5 - Normal
                  Status: Ready For Test
                 Privacy: Public
             Assigned to: pepeto
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 2.3.0



New module to generate hash tables. It duplicates the current implementation,
with slightly differences.

* The free callbacks are used only on data the user set. It was also calling
them on unset data too int hash_replace() and hash_insert().
* When hash_insert() was failing, the data and keys generated by fc_strdup()
were never freed and lost. Added copy callbacks, notably for string data or
* hash_lookup() was returning the internal key. If the user modify it, then
it will break the whole table, because the hash values may have changed. Now,
the function returns the old keys only after usage.
* hash_lookup_data() was unable to handle the NULL data.
* hash_copy() was not safe if the table was created with free callbacks. The
addition of copy callbacks fixes it.

* Removed the DELETED_BUCKET handling, as it was not working anymore and it's
a poor design. The user shouldn't be able to access deleted data.
* Removed the function hash_equal, because it is very unclear about how it
would compare data, callbacks, etc. And it was not used anywhere.
* Removed the concept of hash_key_by_number() and hash_value_by_number(). If
we use hash tables, it's not to slow down doing square linear researches into
* Updated and clarified interface.
* Updated documentation and comment.


File Attachments:

Date: vendredi 29.10.2010 à 21:47  Name:
0001-Added-generic-hash-table-module-genhash.patch  Size: 40 ko   By: pepeto



Reply to this item at:


  Message posté via/par Gna!

Freeciv-dev mailing list

Reply via email to