home /
fornax /
fornax-v4-0 /
src /
tt /
transpositions.hpp
transpositions.hpp
//
// transpositions.hpp
// fornax3
//
// Created by Anders on 19/06/2019.
//
#ifndef transpositions_h
#define transpositions_h
#include "zobrist.hpp"
#include "../board.h"
#include "../move.h"
#include "../eval_defs.h"
#define TRANSPOSITIONS_SIZE_MB_DEFAULT 128
#define TRANSPOSITIONS_SIZE_PER_MB (64 * 1024)
#define TRANSPOSITIONS_SIZE_MB_MAX (INT32_MAX / (TRANSPOSITIONS_SIZE_PER_MB) - 1)
#define TRANSPOSITIONS_SIZE_MB_MIN 1
typedef uint8_t tttype;
#define TT_TYPE_EXACT 0
#define TT_TYPE_LOWER_BOUND 1
#define TT_TYPE_UPPER_BOUND 2
typedef struct bucket {
ttkey hash;
move ttmove;
eval tteval;
tttype type;
uint8_t depth;
uint8_t age;
} Bucket;
void transpositions_init(void);
void transpositions_clear(void);
void transpositions_destroy(void);
void transpositions_maintenance(void);
void transpositions_status(void);
void transpositions_print(long printLength);
void transpositions_print_bucket(ttkey hash, long offset);
void transpositions_set_hash_size(long MB);
void transpositions_put(ttkey hash, uint8_t depth, eval score, move m, tttype type);
Bucket* transpositions_get(ttkey hash);
#endif /* transpositions_h */