Removed debug messages from hashtable

This commit is contained in:
Claudio Maggioni 2019-12-11 10:52:39 +01:00
parent f1a0bd9614
commit 3539cd9a71

View file

@ -155,8 +155,8 @@ struct position* bishop_positions(const struct chessboard* board,
struct position* queen_positions(const struct chessboard* c, struct position* queen_positions(const struct chessboard* c,
struct piece_position* p) { struct piece_position* p) {
struct position* malusa = bishop_positions(c, p); struct position* canotaggio = bishop_positions(c, p);
return rook_positions(c, p, malusa); return rook_positions(c, p, canotaggio);
} }
struct position* get_positions(const struct chessboard* c, struct position* get_positions(const struct chessboard* c,
@ -262,7 +262,10 @@ struct row_list {
}; };
typedef struct row_list* visit_table; typedef struct row_list* visit_table;
#if DEBUG
unsigned long alloc = 0; unsigned long alloc = 0;
#endif
unsigned long table_total_size(const struct chessboard*); unsigned long table_total_size(const struct chessboard*);
unsigned long table_hash(const struct chessboard*, unsigned, unsigned); unsigned long table_hash(const struct chessboard*, unsigned, unsigned);
@ -273,12 +276,18 @@ inline unsigned long table_total_size(const struct chessboard* c) {
inline unsigned long table_hash(const struct chessboard* c, unsigned col, inline unsigned long table_hash(const struct chessboard* c, unsigned col,
unsigned row) { unsigned row) {
return (value_at(c, col, row) ^ 0xDEADBEEF) % table_total_size(c); return (value_at(c, col, row) ^ (('C'|'a') << 24 | ('r'|'z') << 16 |
('a'|'n') << 8 | ('i'|'g'|'a')))
% table_total_size(c);
} }
visit_table* table_new(const struct chessboard* c) { visit_table* table_new(const struct chessboard* c) {
unsigned long table_size = table_total_size(c); unsigned long table_size = table_total_size(c);
#if DEBUG
alloc += sizeof(struct row_list*) * table_size; alloc += sizeof(struct row_list*) * table_size;
#endif
return calloc(table_size, sizeof(struct row_list*)); return calloc(table_size, sizeof(struct row_list*));
} }
@ -287,7 +296,11 @@ void table_visit(const struct chessboard* c, visit_table* visited,
unsigned long hash = table_hash(c, column, row); unsigned long hash = table_hash(c, column, row);
struct row_list* prev = hash[visited]; struct row_list* prev = hash[visited];
#if DEBUG
alloc += sizeof(struct row_list); alloc += sizeof(struct row_list);
#endif
hash[visited] = malloc(sizeof(struct row_list)); hash[visited] = malloc(sizeof(struct row_list));
assert(hash[visited] != NULL); assert(hash[visited] != NULL);
hash[visited]->row = row; hash[visited]->row = row;
@ -316,8 +329,10 @@ void table_destroy(const struct chessboard* c, visit_table* visited) {
} }
} }
#if DEBUG
printf("alloc = %lu\n", alloc); printf("alloc = %lu\n", alloc);
alloc = 0; alloc = 0;
#endif
free(visited); free(visited);
} }