use gyges::tools::tt::*;
use gyges::moves::movegen::MoveGen;
use std::mem;
use std::ptr;
use std::ptr::addr_of_mut;
use std::cell::RefCell;
thread_local! {
pub static THREAD_LOCAL_MOVEGEN: RefCell<MoveGen> = RefCell::new(MoveGen::default());
}
const TT_ALLOC_SIZE: usize = mem::size_of::<TranspositionTable>();
pub type DummyTranspositionTable = [u8; TT_ALLOC_SIZE];
pub static mut TT_TABLE: DummyTranspositionTable = [0; TT_ALLOC_SIZE];
pub fn tt() -> &'static TranspositionTable {
unsafe { &*(addr_of_mut!(TT_TABLE) as *mut DummyTranspositionTable as *mut TranspositionTable) }
}
pub fn init_tt(size: usize) {
unsafe {
let tt = addr_of_mut!(TT_TABLE) as *mut DummyTranspositionTable as *mut TranspositionTable;
ptr::write(tt, TranspositionTable::new(size));
}
}