Project

General

Profile

Feature #755 ยป 0027-genhash.c-Replace-parameter-checking-fc_asserts-with.patch

Marko Lindqvist, 09/09/2024 06:46 PM

View differences:

utility/genhash.c
****************************************************************************/
void genhash_str_free_func(char *vkey)
{
#ifdef FREECIV_DEBUG
fc_assert_ret(vkey != nullptr);
#endif
free(vkey);
}
......
****************************************************************************/
void genhash_destroy(struct genhash *pgenhash)
{
fc_assert_ret(pgenhash != nullptr);
pgenhash->no_shrink = TRUE;
genhash_clear(pgenhash);
free(pgenhash->buckets);
......
{
bool old;
fc_assert_ret_val(pgenhash != nullptr, FALSE);
old = pgenhash->no_shrink;
pgenhash->no_shrink = no_shrink;
......
****************************************************************************/
size_t genhash_size(const struct genhash *pgenhash)
{
fc_assert_ret_val(pgenhash != nullptr, 0);
return pgenhash->num_entries;
}
......
****************************************************************************/
size_t genhash_capacity(const struct genhash *pgenhash)
{
fc_assert_ret_val(pgenhash != nullptr, 0);
return pgenhash->num_buckets;
}
......
const struct genhash_entry *src_iter;
struct genhash_entry **dest_slot, **dest_bucket;
fc_assert_ret_val(pgenhash != nullptr, nullptr);
new_genhash = fc_malloc(sizeof(*new_genhash));
/* Copy fields. */
......
{
struct genhash_entry **bucket, **end;
fc_assert_ret(pgenhash != nullptr);
bucket = pgenhash->buckets;
end = bucket + pgenhash->num_buckets;
for (; bucket < end; bucket++) {
......
struct genhash_entry **slot;
genhash_val_t hash_val;
fc_assert_ret_val(pgenhash != nullptr, FALSE);
hash_val = genhash_val_calc(pgenhash, key);
slot = genhash_slot_lookup(pgenhash, key, hash_val);
if (*slot != nullptr) {
......
struct genhash_entry **slot;
genhash_val_t hash_val;
fc_assert_action(pgenhash != nullptr,
genhash_default_get(old_pkey, old_pdata); return FALSE);
hash_val = genhash_val_calc(pgenhash, key);
slot = genhash_slot_lookup(pgenhash, key, hash_val);
if (*slot != nullptr) {
......
{
struct genhash_entry **slot;
fc_assert_action(pgenhash != nullptr,
genhash_default_get(nullptr, pdata); return FALSE);
slot = genhash_slot_lookup(pgenhash, key, genhash_val_calc(pgenhash, key));
if (*slot != nullptr) {
genhash_slot_get(slot, nullptr, pdata);
......
{
struct genhash_entry **slot;
fc_assert_action(pgenhash != nullptr,
genhash_default_get(deleted_pkey, deleted_pdata);
return FALSE);
slot = genhash_slot_lookup(pgenhash, key, genhash_val_calc(pgenhash, key));
if (*slot != nullptr) {
genhash_slot_get(slot, deleted_pkey, deleted_pdata);
genhash_slot_free(pgenhash, slot);
genhash_maybe_shrink(pgenhash);
fc_assert(0 < pgenhash->num_entries);
pgenhash->num_entries--;
return TRUE;
} else {
utility/genhash.h
bool genhash_str_comp_func(const char *vkey1, const char *vkey2);
/* and malloc'ed strings: */
char *genhash_str_copy_func(const char *vkey);
void genhash_str_free_func(char *vkey);
void genhash_str_free_func(char *vkey)
fc__attribute((nonnull (1)));
/* General functions: */
......
genhash_free_fn_t data_free_func,
size_t nentries)
fc__warn_unused_result;
void genhash_destroy(struct genhash *pgenhash);
void genhash_destroy(struct genhash *pgenhash)
fc__attribute((nonnull (1)));
bool genhash_set_no_shrink(struct genhash *pgenhash, bool no_shrink);
size_t genhash_size(const struct genhash *pgenhash);
size_t genhash_capacity(const struct genhash *pgenhash);
bool genhash_set_no_shrink(struct genhash *pgenhash, bool no_shrink)
fc__attribute((nonnull (1)));
size_t genhash_size(const struct genhash *pgenhash)
fc__attribute((nonnull (1)));
size_t genhash_capacity(const struct genhash *pgenhash)
fc__attribute((nonnull (1)));
struct genhash *genhash_copy(const struct genhash *pgenhash)
fc__warn_unused_result;
void genhash_clear(struct genhash *pgenhash);
fc__attribute((nonnull (1)))
fc__warn_unused_result;
void genhash_clear(struct genhash *pgenhash)
fc__attribute((nonnull (1)));
bool genhash_insert(struct genhash *pgenhash, const void *key,
const void *data);
const void *data)
fc__attribute((nonnull (1)));
bool genhash_replace(struct genhash *pgenhash, const void *key,
const void *data);
bool genhash_replace_full(struct genhash *pgenhash, const void *key,
const void *data, void **old_pkey,
void **old_pdata);
void **old_pdata)
fc__attribute((nonnull (1)));
bool genhash_lookup(const struct genhash *pgenhash, const void *key,
void **pdata);
void **pdata)
fc__attribute((nonnull (1)));
bool genhash_remove(struct genhash *pgenhash, const void *key);
bool genhash_remove_full(struct genhash *pgenhash, const void *key,
void **deleted_pkey, void **deleted_pdata);
void **deleted_pkey, void **deleted_pdata)
fc__attribute((nonnull (1)));
bool genhashes_are_equal(const struct genhash *pgenhash1,
const struct genhash *pgenhash2);
    (1-1/1)