1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
pub use constraints::MoveConstraints;
use myopic_core::BitBoard;

use crate::Board;
use crate::imp::cache::rays::RaySet;
use crate::Termination;

mod constraints;
mod control;
mod rays;
mod termination;

// TODO Can we switch to returning references from the cache?
#[derive(Debug, Clone, Default)]
pub struct CalculationCache {
    termination_status: Option<Option<Termination>>,
    passive_control: Option<BitBoard>,
    pinned_set: Option<RaySet>,
    move_constraints: Option<MoveConstraints>,
}

impl Board {
    pub fn clear_cache(&mut self) {
        self.cache.termination_status = None;
        self.cache.passive_control = None;
        self.cache.pinned_set = None;
        self.cache.move_constraints = None;
    }
}